diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..cfcda84 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.cpp linguist-detectable=false + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ffc6cd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,149 @@ +*.xcuserstate +*.DS_Store +*.xcbkptlist +01《招聘一个靠谱的iOS》面试题参考答案/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate +01《招聘一个靠谱的iOS》面试题参考答案/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate + +!**/*.xcscheme +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +**/.xcode.env.local +/poackages/react-native/sdks/downloads/ + +# Gradle +/build/ +/packages/react-native-gradle-plugin/build/ +/packages/rn-tester/build +/packages/rn-tester/android/app/.cxx/ +/packages/rn-tester/android/app/build/ +/packages/rn-tester/android/app/gradle/ +/packages/rn-tester/android/app/gradlew +/packages/rn-tester/android/app/gradlew.bat +/packages/react-native/ReactAndroid/build/ +/packages/react-native/ReactAndroid/.cxx/ +/packages/react-native/ReactAndroid/gradle/ +/packages/react-native/ReactAndroid/gradlew +/packages/react-native/ReactAndroid/gradlew.bat +/packages/react-native/ReactAndroid/external-artifacts/build/ +/packages/react-native/ReactAndroid/external-artifacts/artifacts/ +/packages/react-native/ReactAndroid/flipper-integration/build/ +/packages/react-native/ReactAndroid/hermes-engine/build/ +/packages/react-native/ReactAndroid/hermes-engine/.cxx/ +/packages/react-native/template/android/app/build/ +/packages/react-native/template/android/build/ + +# Buck +.buckd +buck-out +/.lsp.buckd +/.lsp-buck-out +/packages/react-native/ReactAndroid/src/main/jni/prebuilt/lib/ +/packages/react-native/ReactAndroid/src/main/gen + +# Android Studio +.project +.settings +.classpath + +# Watchman +.watchmanconfig + +# Android +.idea +.gradle +local.properties +*.iml +/packages/react-native/android/* +!/packages/react-native/android/README.md + +# Node +node_modules +*.log +.nvm +package-lock.json + +# OS X +.DS_Store + +# Test generated files +/packages/react-native/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js +*.js.meta + +/coverage +/third-party + +# Test Reports +/reports + +# Stack Dumps generated when programs crash (Ex. bash.exe.stackdump on Win) +*.stackdump + +# Root dir shouldn't have Xcode project +/*.xcodeproj + +# ReactCommon subdir shouldn't have Xcode project +/packages/react-native/ReactCommon/**/*.xcodeproj + +# Libs that shouldn't have Xcode project +/packages/react-native/Libraries/FBLazyVector/**/*.xcodeproj +/packages/react-native/Libraries/RCTRequired/**/*.xcodeproj +/packages/react-native/React/CoreModules/**/*.xcodeproj +/packages/react-native/React/FBReactNativeSpec/**/*.xcodeproj +/packages/react-native-codegen/**/*.xcodeproj + +# Ruby Gems (Bundler) +/packages/react-native/vendor +/packages/react-native/template/vendor +.ruby-version +/**/.ruby-version + +# iOS / CocoaPods +/packages/react-native/template/ios/build/ +/packages/react-native/template/ios/Pods/ +/packages/react-native/template/ios/Podfile.lock +/packages/rn-tester/Gemfile.lock + +# Ignore RNTester specific Pods, but keep the __offline_mirrors__ here. +/packages/rn-tester/Pods/* +!/packages/rn-tester/Pods/__offline_mirrors_hermes__ +!/packages/rn-tester/Pods/__offline_mirrors_jsc__ + +# @react-native/codegen +/packages/react-native/React/FBReactNativeSpec/FBReactNativeSpec +/packages/react-native-codegen/lib +/packages/react-native-codegen/tmp/ +/packages/react-native/ReactCommon/react/renderer/components/rncore/ +/packages/rn-tester/NativeModuleExample/ScreenshotManagerSpec* +/**/RCTThirdPartyFabricComponentsProvider.* + +# @react-native/codegen-typescript-test +/packages/react-native-codegen-typescript-test/lib + +# Additional SDKs +/packages/react-native/sdks/download +/packages/react-native/sdks/hermes +/packages/react-native/sdks/hermesc + +# Visual studio +.vscode +.vs + +# Android memory profiler files +*.hprof + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* \ No newline at end of file diff --git a/.swift-version b/.swift-version new file mode 100644 index 0000000..444815f --- /dev/null +++ b/.swift-version @@ -0,0 +1,40 @@ +# file options + +--exclude Tests/XCTestManifests.swift,Tests/BadConfig,Snapshots,Build + +# format options + +allman false +--binarygrouping 4,8 +--commas always +--comments indent +--decimalgrouping 3,6 +--elseposition same-line +--empty void +--exponentcase lowercase +--exponentgrouping disabled +--fractiongrouping disabled +--header ignore +--hexgrouping 4,8 +--hexliteralcase uppercase +--ifdef indent +--indent 4 +--indentcase false +--importgrouping testable-bottom +--linebreaks lf +--maxwidth none +--octalgrouping 4,8 +--operatorfunc spaced +--patternlet hoist +--ranges spaced +self remove +--semicolons inline +--stripunusedargs always +swiftversion 4.2 +--trimwhitespace always +--wraparguments preserve +--wrapcollections preserve + +# rules + +--enable isEmpty diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..e500cf1 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.pbxproj" @@ -0,0 +1,638 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9A3CA841248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3CA840248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.m */; }; + 9AD5C4742485167900704476 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4732485167900704476 /* AppDelegate.m */; }; + 9AD5C4772485167900704476 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4762485167900704476 /* SceneDelegate.m */; }; + 9AD5C47A2485167900704476 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4792485167900704476 /* ViewController.m */; }; + 9AD5C47D2485167900704476 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AD5C47B2485167900704476 /* Main.storyboard */; }; + 9AD5C47F2485167D00704476 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AD5C47E2485167D00704476 /* Assets.xcassets */; }; + 9AD5C4822485167D00704476 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AD5C4802485167D00704476 /* LaunchScreen.storyboard */; }; + 9AD5C4852485167D00704476 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4842485167D00704476 /* main.m */; }; + 9AD5C48F2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C48E2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.m */; }; + 9AD5C49A2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4992485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.m */; }; + 9AD5C4A924851B4100704476 /* UIViewAnimationsBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4A824851B4100704476 /* UIViewAnimationsBlock.m */; }; + 9AD5C4AC24851B5000704476 /* NSNotificationCenterBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4AB24851B5000704476 /* NSNotificationCenterBlock.m */; }; + 9AD5C4AF24851B5D00704476 /* NSNotificationCenterIVARBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4AE24851B5D00704476 /* NSNotificationCenterIVARBlock.m */; }; + 9AD5C4B224851B6900704476 /* GCDBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4B124851B6900704476 /* GCDBlock.m */; }; + 9AD5C4B524851B7600704476 /* NSOperationQueueBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4B424851B7600704476 /* NSOperationQueueBlock.m */; }; + 9AD5C4B824851B8200704476 /* NSOperationQueueIVARBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4B724851B8200704476 /* NSOperationQueueIVARBlock.m */; }; + 9AD5C4BB2485273C00704476 /* CYLBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD5C4BA2485273C00704476 /* CYLBaseViewController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9AD5C48B2485167D00704476 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AD5C4672485167900704476 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AD5C46E2485167900704476; + remoteInfo = Deme_39_CYLSystemAPIMemoryLeak; + }; + 9AD5C4962485167D00704476 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AD5C4672485167900704476 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AD5C46E2485167900704476; + remoteInfo = Deme_39_CYLSystemAPIMemoryLeak; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A3CA83F248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CYLBaseViewController+CYLBaseViewControllerExtension.h"; sourceTree = ""; }; + 9A3CA840248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CYLBaseViewController+CYLBaseViewControllerExtension.m"; sourceTree = ""; }; + 9AD5C46F2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Deme_39_CYLSystemAPIMemoryLeak.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD5C4722485167900704476 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9AD5C4732485167900704476 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9AD5C4752485167900704476 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; }; + 9AD5C4762485167900704476 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; }; + 9AD5C4782485167900704476 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9AD5C4792485167900704476 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9AD5C47C2485167900704476 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9AD5C47E2485167D00704476 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9AD5C4812485167D00704476 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9AD5C4832485167D00704476 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AD5C4842485167D00704476 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9AD5C48A2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Deme_39_CYLSystemAPIMemoryLeakTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD5C48E2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Deme_39_CYLSystemAPIMemoryLeakTests.m; sourceTree = ""; }; + 9AD5C4902485167D00704476 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AD5C4952485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Deme_39_CYLSystemAPIMemoryLeakUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD5C4992485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Deme_39_CYLSystemAPIMemoryLeakUITests.m; sourceTree = ""; }; + 9AD5C49B2485167D00704476 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AD5C4A724851B4100704476 /* UIViewAnimationsBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIViewAnimationsBlock.h; sourceTree = ""; }; + 9AD5C4A824851B4100704476 /* UIViewAnimationsBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIViewAnimationsBlock.m; sourceTree = ""; }; + 9AD5C4AA24851B5000704476 /* NSNotificationCenterBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSNotificationCenterBlock.h; sourceTree = ""; }; + 9AD5C4AB24851B5000704476 /* NSNotificationCenterBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSNotificationCenterBlock.m; sourceTree = ""; }; + 9AD5C4AD24851B5D00704476 /* NSNotificationCenterIVARBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSNotificationCenterIVARBlock.h; sourceTree = ""; }; + 9AD5C4AE24851B5D00704476 /* NSNotificationCenterIVARBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSNotificationCenterIVARBlock.m; sourceTree = ""; }; + 9AD5C4B024851B6900704476 /* GCDBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GCDBlock.h; sourceTree = ""; }; + 9AD5C4B124851B6900704476 /* GCDBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GCDBlock.m; sourceTree = ""; }; + 9AD5C4B324851B7600704476 /* NSOperationQueueBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSOperationQueueBlock.h; sourceTree = ""; }; + 9AD5C4B424851B7600704476 /* NSOperationQueueBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSOperationQueueBlock.m; sourceTree = ""; }; + 9AD5C4B624851B8200704476 /* NSOperationQueueIVARBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSOperationQueueIVARBlock.h; sourceTree = ""; }; + 9AD5C4B724851B8200704476 /* NSOperationQueueIVARBlock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NSOperationQueueIVARBlock.m; sourceTree = ""; }; + 9AD5C4B92485273B00704476 /* CYLBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CYLBaseViewController.h; sourceTree = ""; }; + 9AD5C4BA2485273C00704476 /* CYLBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CYLBaseViewController.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9AD5C46C2485167900704476 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4872485167D00704476 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4922485167D00704476 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9AD5C4662485167900704476 = { + isa = PBXGroup; + children = ( + 9AD5C4712485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */, + 9AD5C48D2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests */, + 9AD5C4982485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests */, + 9AD5C4702485167900704476 /* Products */, + ); + sourceTree = ""; + }; + 9AD5C4702485167900704476 /* Products */ = { + isa = PBXGroup; + children = ( + 9AD5C46F2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak.app */, + 9AD5C48A2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.xctest */, + 9AD5C4952485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9AD5C4712485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */ = { + isa = PBXGroup; + children = ( + 9AD5C4722485167900704476 /* AppDelegate.h */, + 9AD5C4732485167900704476 /* AppDelegate.m */, + 9AD5C4752485167900704476 /* SceneDelegate.h */, + 9AD5C4762485167900704476 /* SceneDelegate.m */, + 9AD5C4782485167900704476 /* ViewController.h */, + 9AD5C4792485167900704476 /* ViewController.m */, + 9AD5C4A724851B4100704476 /* UIViewAnimationsBlock.h */, + 9AD5C4A824851B4100704476 /* UIViewAnimationsBlock.m */, + 9AD5C4AA24851B5000704476 /* NSNotificationCenterBlock.h */, + 9AD5C4AB24851B5000704476 /* NSNotificationCenterBlock.m */, + 9AD5C4AD24851B5D00704476 /* NSNotificationCenterIVARBlock.h */, + 9AD5C4AE24851B5D00704476 /* NSNotificationCenterIVARBlock.m */, + 9AD5C4B024851B6900704476 /* GCDBlock.h */, + 9AD5C4B124851B6900704476 /* GCDBlock.m */, + 9AD5C4B324851B7600704476 /* NSOperationQueueBlock.h */, + 9AD5C4B424851B7600704476 /* NSOperationQueueBlock.m */, + 9AD5C4B624851B8200704476 /* NSOperationQueueIVARBlock.h */, + 9AD5C4B724851B8200704476 /* NSOperationQueueIVARBlock.m */, + 9AD5C4B92485273B00704476 /* CYLBaseViewController.h */, + 9AD5C4BA2485273C00704476 /* CYLBaseViewController.m */, + 9A3CA83F248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.h */, + 9A3CA840248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.m */, + 9AD5C47B2485167900704476 /* Main.storyboard */, + 9AD5C47E2485167D00704476 /* Assets.xcassets */, + 9AD5C4802485167D00704476 /* LaunchScreen.storyboard */, + 9AD5C4832485167D00704476 /* Info.plist */, + 9AD5C4842485167D00704476 /* main.m */, + ); + path = Deme_39_CYLSystemAPIMemoryLeak; + sourceTree = ""; + }; + 9AD5C48D2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests */ = { + isa = PBXGroup; + children = ( + 9AD5C48E2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.m */, + 9AD5C4902485167D00704476 /* Info.plist */, + ); + path = Deme_39_CYLSystemAPIMemoryLeakTests; + sourceTree = ""; + }; + 9AD5C4982485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests */ = { + isa = PBXGroup; + children = ( + 9AD5C4992485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.m */, + 9AD5C49B2485167D00704476 /* Info.plist */, + ); + path = Deme_39_CYLSystemAPIMemoryLeakUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9AD5C46E2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD5C49E2485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeak" */; + buildPhases = ( + 9AD5C46B2485167900704476 /* Sources */, + 9AD5C46C2485167900704476 /* Frameworks */, + 9AD5C46D2485167900704476 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Deme_39_CYLSystemAPIMemoryLeak; + productName = Deme_39_CYLSystemAPIMemoryLeak; + productReference = 9AD5C46F2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak.app */; + productType = "com.apple.product-type.application"; + }; + 9AD5C4892485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD5C4A12485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeakTests" */; + buildPhases = ( + 9AD5C4862485167D00704476 /* Sources */, + 9AD5C4872485167D00704476 /* Frameworks */, + 9AD5C4882485167D00704476 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AD5C48C2485167D00704476 /* PBXTargetDependency */, + ); + name = Deme_39_CYLSystemAPIMemoryLeakTests; + productName = Deme_39_CYLSystemAPIMemoryLeakTests; + productReference = 9AD5C48A2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9AD5C4942485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD5C4A42485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeakUITests" */; + buildPhases = ( + 9AD5C4912485167D00704476 /* Sources */, + 9AD5C4922485167D00704476 /* Frameworks */, + 9AD5C4932485167D00704476 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AD5C4972485167D00704476 /* PBXTargetDependency */, + ); + name = Deme_39_CYLSystemAPIMemoryLeakUITests; + productName = Deme_39_CYLSystemAPIMemoryLeakUITests; + productReference = 9AD5C4952485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9AD5C4672485167900704476 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = ChenYilong; + TargetAttributes = { + 9AD5C46E2485167900704476 = { + CreatedOnToolsVersion = 11.4.1; + }; + 9AD5C4892485167D00704476 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9AD5C46E2485167900704476; + }; + 9AD5C4942485167D00704476 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9AD5C46E2485167900704476; + }; + }; + }; + buildConfigurationList = 9AD5C46A2485167900704476 /* Build configuration list for PBXProject "Deme_39_CYLSystemAPIMemoryLeak" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9AD5C4662485167900704476; + productRefGroup = 9AD5C4702485167900704476 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9AD5C46E2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */, + 9AD5C4892485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests */, + 9AD5C4942485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9AD5C46D2485167900704476 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD5C4822485167D00704476 /* LaunchScreen.storyboard in Resources */, + 9AD5C47F2485167D00704476 /* Assets.xcassets in Resources */, + 9AD5C47D2485167900704476 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4882485167D00704476 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4932485167D00704476 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9AD5C46B2485167900704476 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD5C4BB2485273C00704476 /* CYLBaseViewController.m in Sources */, + 9AD5C4AC24851B5000704476 /* NSNotificationCenterBlock.m in Sources */, + 9AD5C47A2485167900704476 /* ViewController.m in Sources */, + 9AD5C4742485167900704476 /* AppDelegate.m in Sources */, + 9AD5C4A924851B4100704476 /* UIViewAnimationsBlock.m in Sources */, + 9AD5C4852485167D00704476 /* main.m in Sources */, + 9AD5C4B524851B7600704476 /* NSOperationQueueBlock.m in Sources */, + 9AD5C4AF24851B5D00704476 /* NSNotificationCenterIVARBlock.m in Sources */, + 9AD5C4B224851B6900704476 /* GCDBlock.m in Sources */, + 9A3CA841248CE5960022276A /* CYLBaseViewController+CYLBaseViewControllerExtension.m in Sources */, + 9AD5C4B824851B8200704476 /* NSOperationQueueIVARBlock.m in Sources */, + 9AD5C4772485167900704476 /* SceneDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4862485167D00704476 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD5C48F2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD5C4912485167D00704476 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD5C49A2485167D00704476 /* Deme_39_CYLSystemAPIMemoryLeakUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9AD5C48C2485167D00704476 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AD5C46E2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */; + targetProxy = 9AD5C48B2485167D00704476 /* PBXContainerItemProxy */; + }; + 9AD5C4972485167D00704476 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AD5C46E2485167900704476 /* Deme_39_CYLSystemAPIMemoryLeak */; + targetProxy = 9AD5C4962485167D00704476 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9AD5C47B2485167900704476 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AD5C47C2485167900704476 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9AD5C4802485167D00704476 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AD5C4812485167D00704476 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9AD5C49C2485167D00704476 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 9AD5C49D2485167D00704476 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9AD5C49F2485167D00704476 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeak/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeak"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9AD5C4A02485167D00704476 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeak/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeak"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9AD5C4A22485167D00704476 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeakTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeakTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Deme_39_CYLSystemAPIMemoryLeak.app/Deme_39_CYLSystemAPIMemoryLeak"; + }; + name = Debug; + }; + 9AD5C4A32485167D00704476 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeakTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeakTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Deme_39_CYLSystemAPIMemoryLeak.app/Deme_39_CYLSystemAPIMemoryLeak"; + }; + name = Release; + }; + 9AD5C4A52485167D00704476 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeakUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeakUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Deme_39_CYLSystemAPIMemoryLeak; + }; + name = Debug; + }; + 9AD5C4A62485167D00704476 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Deme_39_CYLSystemAPIMemoryLeakUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Deme-39-CYLSystemAPIMemoryLeakUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Deme_39_CYLSystemAPIMemoryLeak; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9AD5C46A2485167900704476 /* Build configuration list for PBXProject "Deme_39_CYLSystemAPIMemoryLeak" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD5C49C2485167D00704476 /* Debug */, + 9AD5C49D2485167D00704476 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD5C49E2485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeak" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD5C49F2485167D00704476 /* Debug */, + 9AD5C4A02485167D00704476 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD5C4A12485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeakTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD5C4A22485167D00704476 /* Debug */, + 9AD5C4A32485167D00704476 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD5C4A42485167D00704476 /* Build configuration list for PBXNativeTarget "Deme_39_CYLSystemAPIMemoryLeakUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD5C4A52485167D00704476 /* Debug */, + 9AD5C4A62485167D00704476 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9AD5C4672485167900704476 /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..bec9dbe --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" new file mode 100644 index 0000000..18d9810 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..54a45ee Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" new file mode 100644 index 0000000..adcaca9 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..a1be97e --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Deme_39_CYLSystemAPIMemoryLeak.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.h" new file mode 100644 index 0000000..0a7ab45 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.h" @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.m" new file mode 100644 index 0000000..c21d9f5 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/AppDelegate.m" @@ -0,0 +1,41 @@ +// +// AppDelegate.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + + +#pragma mark - UISceneSession lifecycle + + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; +} + + +- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..9221b9b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Assets.xcassets/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/LaunchScreen.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..865e932 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..784f36a --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Base.lproj/Main.storyboard" @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + + + + + dispatch_group_async(self.operationGroup, self.serialQueue, ^{ + [self doSomething]; + }); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification * notification) { + self.someProperty = xyz; }]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" + object:nil + queue:nil + usingBlock:^(NSNotification *note) { + [self dismissModalViewControllerAnimated:YES]; + }]; + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.h" new file mode 100644 index 0000000..bf2aec6 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.h" @@ -0,0 +1,20 @@ +// +// CYLBaseViewController+CYLBaseViewControllerExtension.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/7. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CYLBaseViewController (CYLBaseViewControllerExtension) + +- (void)cyl_test; ++ (void)cyl_testClass; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.m" new file mode 100644 index 0000000..bc5e9c2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController+CYLBaseViewControllerExtension.m" @@ -0,0 +1,21 @@ +// +// CYLBaseViewController+CYLBaseViewControllerExtension.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/7. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "CYLBaseViewController+CYLBaseViewControllerExtension.h" + +@implementation CYLBaseViewController (CYLBaseViewControllerExtension) + +- (void)cyl_test { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + ++ (void)cyl_testClass { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.h" new file mode 100644 index 0000000..d2dd1d3 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.h" @@ -0,0 +1,18 @@ +// +// CYLBaseViewController.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface CYLBaseViewController : UIViewController +@property (nonatomic, copy) NSString *text; +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.m" new file mode 100644 index 0000000..1b59691 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/CYLBaseViewController.m" @@ -0,0 +1,35 @@ +// +// CYLBaseViewController.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "CYLBaseViewController.h" +#import "CYLBaseViewController+CYLBaseViewControllerExtension.h" + +@interface CYLBaseViewController () + +@end + +@implementation CYLBaseViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + self.title = self.text; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.h" new file mode 100644 index 0000000..36cf5ff --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.h" @@ -0,0 +1,19 @@ +// +// GCDBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface GCDBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.m" new file mode 100644 index 0000000..d00a10b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/GCDBlock.m" @@ -0,0 +1,41 @@ +// +// GCDBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "GCDBlock.h" + +@interface GCDBlock () + +@end + +@implementation GCDBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + //情况❹ GCDBlock GCDBlock +// dispatch_group_async(self.operationGroup, self.serialQueue, ^{ +// [self doSomething]; +// }); + +} + +- (void)doSomething { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Info.plist" new file mode 100644 index 0000000..7b6037c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/Info.plist" @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + SceneDelegate + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.h" new file mode 100644 index 0000000..2dcf1c1 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.h" @@ -0,0 +1,19 @@ +// +// NSNotificationCenterBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NSNotificationCenterBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.m" new file mode 100644 index 0000000..b8b617c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterBlock.m" @@ -0,0 +1,44 @@ +// +// NSNotificationCenterBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "NSNotificationCenterBlock.h" + +@interface NSNotificationCenterBlock () + +@end + +@implementation NSNotificationCenterBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + [[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification * notification) { + NSLog(@"%@", self); + }]; +} + + +- (void)remove { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; +// [self remove]; +} + +- (void)dealloc { + [self remove]; + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.h" new file mode 100644 index 0000000..cb1b2a5 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.h" @@ -0,0 +1,19 @@ +// +// NSNotificationCenterIVARBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NSNotificationCenterIVARBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.m" new file mode 100644 index 0000000..92e5921 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSNotificationCenterIVARBlock.m" @@ -0,0 +1,62 @@ +// +// NSNotificationCenterIVARBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "NSNotificationCenterIVARBlock.h" + +@interface NSNotificationCenterIVARBlock () +@property (nonatomic, strong) id observer; +@end + +@implementation NSNotificationCenterIVARBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + /* + class T { + var a: Any? + func add() { + a = NotificationCenter.default.addObserver(forName: + UIApplication.backgroundRefreshStatusDidChangeNotification, object: + nil, queue: nil) { (ntf) in + print(#function, self) + } + } + func remove() { + NotificationCenter.default.removeObserver(a!) + } + deinit { + print(#function, self) + } + static var k = "" + } + let t = T() + t.add() + t.remove() + */ + self.observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" + object:nil + queue:nil + usingBlock:^(NSNotification *note) { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), self); + }]; +} + +- (void)remove { + [[NSNotificationCenter defaultCenter] removeObserver:self.observer]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [self remove]; +} + +- (void)dealloc { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.h" new file mode 100644 index 0000000..dc08597 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.h" @@ -0,0 +1,19 @@ +// +// NSOperationQueueBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NSOperationQueueBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.m" new file mode 100644 index 0000000..ddfa8b0 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueBlock.m" @@ -0,0 +1,33 @@ +// +// NSOperationQueueBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "NSOperationQueueBlock.h" + +@interface NSOperationQueueBlock () + +@end + +@implementation NSOperationQueueBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +// [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.h" new file mode 100644 index 0000000..d289be2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.h" @@ -0,0 +1,19 @@ +// +// NSOperationQueueIVARBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NSOperationQueueIVARBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.m" new file mode 100644 index 0000000..b651dda --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/NSOperationQueueIVARBlock.m" @@ -0,0 +1,39 @@ +// +// NSOperationQueueIVARBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "NSOperationQueueIVARBlock.h" +#import "CYLBaseViewController+CYLBaseViewControllerExtension.h" + +@interface NSOperationQueueIVARBlock () + +@end + +@implementation NSOperationQueueIVARBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + [self cyl_test]; //分类实例方法:必须在子类中手动 import 父类的分类, 否则抛 编译错误❌ + [self performSelector:@selector(cyl_test)]; //分类实例方法:必须在子类中手动 import 父类的分类, 否则抛 warning⚠️ + [[self class] cyl_testClass]; //分类类方法: 必须在子类中手动 import 父类的分类, 否则编译错误 ❌ + [[self class]performSelector:@selector(cyl_testClass)];//分类类方法: 必须在子类中手动 import 父类的分类, 否则抛 warning⚠️ + + // Do any additional setup after loading the view. +// _mainQueue = [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.h" new file mode 100644 index 0000000..a0ecff9 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.h" @@ -0,0 +1,16 @@ +// +// SceneDelegate.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface SceneDelegate : UIResponder + +@property (strong, nonatomic) UIWindow * window; + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.m" new file mode 100644 index 0000000..d076564 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/SceneDelegate.m" @@ -0,0 +1,58 @@ +// +// SceneDelegate.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "SceneDelegate.h" + +@interface SceneDelegate () + +@end + +@implementation SceneDelegate + + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). +} + + +- (void)sceneDidDisconnect:(UIScene *)scene { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). +} + + +- (void)sceneDidBecomeActive:(UIScene *)scene { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. +} + + +- (void)sceneWillResignActive:(UIScene *)scene { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). +} + + +- (void)sceneWillEnterForeground:(UIScene *)scene { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. +} + + +- (void)sceneDidEnterBackground:(UIScene *)scene { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.h" new file mode 100644 index 0000000..f63956f --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.h" @@ -0,0 +1,19 @@ +// +// UIViewAnimationsBlock.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "CYLBaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewAnimationsBlock : CYLBaseViewController +@property (weak, nonatomic) IBOutlet UITextView *textView; + +@end + +NS_ASSUME_NONNULL_END diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.m" new file mode 100644 index 0000000..4675db8 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/UIViewAnimationsBlock.m" @@ -0,0 +1,40 @@ +// +// UIViewAnimationsBlock.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "UIViewAnimationsBlock.h" + +@interface UIViewAnimationsBlock () + +@end + +@implementation UIViewAnimationsBlock + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + NSTimeInterval duration = 1000; + [UIView animateWithDuration:duration animations:^{ + [self.view.superview layoutIfNeeded]; + }]; +} + +- (void)dealloc { + NSLog(@"🔴类名与方法名:%@(在第%@行), 描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @""); +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.h" new file mode 100644 index 0000000..c0c8736 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.h" @@ -0,0 +1,14 @@ +// +// ViewController.h +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface ViewController : UITableViewController + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.m" new file mode 100644 index 0000000..d315c38 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/ViewController.m" @@ -0,0 +1,127 @@ +// +// ViewController.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "ViewController.h" +#import "UIViewAnimationsBlock.h" +#import "NSNotificationCenterBlock.h" +#import "NSNotificationCenterIVARBlock.h" +#import "GCDBlock.h" +#import "NSOperationQueueBlock.h" +#import "NSOperationQueueIVARBlock.h" + +@interface ViewController () +@property (nonatomic, strong) NSArray *dataSource; +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = @"iTeaTime(技术清谈)"; + self.tableView.delegate = self; + self.tableView.dataSource = self; + NSDictionary *infoUIViewAnimationsBlock = @{ + @"title" : @"情况❶ UIViewAnimationsBlock", + @"ViewController" : @"UIViewAnimationsBlock", + @"color" : [UIColor greenColor], + @"description": @"[UIView animateWithDuration:duration animations:^{ [self.superview layoutIfNeeded]; }];" + }; + + NSDictionary *infoNSNotificationCenterBlock = @{ + @"title" : @"情况❷ NSNotificationCenterBlock", + @"ViewController" : @"NSNotificationCenterBlock", + @"color" : [UIColor blueColor], + @"description": @"" + }; + + NSDictionary *infoNSNotificationCenterIVARBlock = @{ + @"title" : @"情况❸ NSNotificationCenterIVARBlock", + @"ViewController" : @"NSNotificationCenterIVARBlock", + @"color" : [UIColor orangeColor], + + @"description": @"" + }; + /* + _observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" + object:nil + queue:nil + usingBlock:^(NSNotification *note) { + [self dismissModalViewControllerAnimated:YES]; + }]; + */ + + NSDictionary *infoGCDBlock = @{ + @"title" : @"情况❹ GCDBlock", + @"ViewController" : @"GCDBlock", + @"color" : [UIColor systemPinkColor], + @"description": @"" + }; + /* + //情况❹ GCDBlock GCDBlock + dispatch_group_async(self.operationGroup, self.serialQueue, ^{ + [self doSomething]; + }); + */ + + NSDictionary *infoNSOperationQueueBlock = @{ + @"title" : @"情况❺ NSOperationQueueBlock", + @"ViewController" : @"NSOperationQueueBlock", + @"color" : [UIColor purpleColor], + @"description": @"" + }; + /* + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; + */ + + NSDictionary *infoNSOperationQueueIVARBlock = @{ + @"title" : @"情况❻ NSOperationQueueIVARBlock", + @"ViewController" : @"NSOperationQueueIVARBlock", + @"color" : [UIColor blueColor], + @"description": @"" + }; + /* + _mainQueue = [[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; + */ + + NSArray *array = @[ + infoUIViewAnimationsBlock, + infoNSNotificationCenterBlock, + infoNSNotificationCenterIVARBlock, + infoGCDBlock, + infoNSOperationQueueBlock, + infoNSOperationQueueIVARBlock + ]; + self.dataSource = array; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + NSString *text = self.dataSource[indexPath.row][@"ViewController"]; + CYLBaseViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:text]; + vc.text = text; + [self.navigationController pushViewController:vc animated:YES]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *CellIdentifier = @"Cell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; + } + cell.textLabel.text = self.dataSource[indexPath.row][@"title"]; + cell.textLabel.font = [UIFont systemFontOfSize:22]; + cell.backgroundColor = self.dataSource[indexPath.row][@"color"]; + + return cell; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataSource.count; +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/main.m" new file mode 100644 index 0000000..4b3a08c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeak/main.m" @@ -0,0 +1,19 @@ +// +// main.m +// Deme_39_CYLSystemAPIMemoryLeak +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + // Setup code that might create autoreleased objects goes here. + appDelegateClassName = NSStringFromClass([AppDelegate class]); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Deme_39_CYLSystemAPIMemoryLeakTests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Deme_39_CYLSystemAPIMemoryLeakTests.m" new file mode 100644 index 0000000..78bd880 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Deme_39_CYLSystemAPIMemoryLeakTests.m" @@ -0,0 +1,37 @@ +// +// Deme_39_CYLSystemAPIMemoryLeakTests.m +// Deme_39_CYLSystemAPIMemoryLeakTests +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Deme_39_CYLSystemAPIMemoryLeakTests : XCTestCase + +@end + +@implementation Deme_39_CYLSystemAPIMemoryLeakTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakTests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Deme_39_CYLSystemAPIMemoryLeakUITests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Deme_39_CYLSystemAPIMemoryLeakUITests.m" new file mode 100644 index 0000000..a763fa2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Deme_39_CYLSystemAPIMemoryLeakUITests.m" @@ -0,0 +1,48 @@ +// +// Deme_39_CYLSystemAPIMemoryLeakUITests.m +// Deme_39_CYLSystemAPIMemoryLeakUITests +// +// Created by chenyilong on 2020/6/1. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Deme_39_CYLSystemAPIMemoryLeakUITests : XCTestCase + +@end + +@implementation Deme_39_CYLSystemAPIMemoryLeakUITests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + self.continueAfterFailure = NO; + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // UI tests must launch the application that they test. + XCUIApplication *app = [[XCUIApplication alloc] init]; + [app launch]; + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testLaunchPerformance { + if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) { + // This measures how long it takes to launch your application. + [self measureWithMetrics:@[XCTOSSignpostMetric.applicationLaunchMetric] block:^{ + [[[XCUIApplication alloc] init] launch]; + }]; + } +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Deme_39_CYLSystemAPIMemoryLeak/Deme_39_CYLSystemAPIMemoryLeakUITests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..6e63a7a --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.pbxproj" @@ -0,0 +1,592 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9ADD7AA82487732800E35A61 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7AA72487732800E35A61 /* AppDelegate.m */; }; + 9ADD7AAB2487732800E35A61 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7AAA2487732800E35A61 /* SceneDelegate.m */; }; + 9ADD7AAE2487732800E35A61 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7AAD2487732800E35A61 /* ViewController.m */; }; + 9ADD7AB12487732800E35A61 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9ADD7AAF2487732800E35A61 /* Main.storyboard */; }; + 9ADD7AB32487732B00E35A61 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9ADD7AB22487732B00E35A61 /* Assets.xcassets */; }; + 9ADD7AB62487732B00E35A61 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9ADD7AB42487732B00E35A61 /* LaunchScreen.storyboard */; }; + 9ADD7AB92487732B00E35A61 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7AB82487732B00E35A61 /* main.m */; }; + 9ADD7AC32487732B00E35A61 /* Demo_01_CodeStyleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7AC22487732B00E35A61 /* Demo_01_CodeStyleTests.m */; }; + 9ADD7ACE2487732C00E35A61 /* Demo_01_CodeStyleUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ADD7ACD2487732C00E35A61 /* Demo_01_CodeStyleUITests.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9ADD7ABF2487732B00E35A61 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9ADD7A9B2487732800E35A61 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9ADD7AA22487732800E35A61; + remoteInfo = Demo_01_CodeStyle; + }; + 9ADD7ACA2487732C00E35A61 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9ADD7A9B2487732800E35A61 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9ADD7AA22487732800E35A61; + remoteInfo = Demo_01_CodeStyle; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9ADD7AA32487732800E35A61 /* Demo_01_CodeStyle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo_01_CodeStyle.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9ADD7AA62487732800E35A61 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9ADD7AA72487732800E35A61 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9ADD7AA92487732800E35A61 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; }; + 9ADD7AAA2487732800E35A61 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; }; + 9ADD7AAC2487732800E35A61 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9ADD7AAD2487732800E35A61 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9ADD7AB02487732800E35A61 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9ADD7AB22487732B00E35A61 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9ADD7AB52487732B00E35A61 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9ADD7AB72487732B00E35A61 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9ADD7AB82487732B00E35A61 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9ADD7ABE2487732B00E35A61 /* Demo_01_CodeStyleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Demo_01_CodeStyleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9ADD7AC22487732B00E35A61 /* Demo_01_CodeStyleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Demo_01_CodeStyleTests.m; sourceTree = ""; }; + 9ADD7AC42487732B00E35A61 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9ADD7AC92487732C00E35A61 /* Demo_01_CodeStyleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Demo_01_CodeStyleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9ADD7ACD2487732C00E35A61 /* Demo_01_CodeStyleUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Demo_01_CodeStyleUITests.m; sourceTree = ""; }; + 9ADD7ACF2487732C00E35A61 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9ADD7ADB248774CE00E35A61 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9ADD7AA02487732800E35A61 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7ABB2487732B00E35A61 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7AC62487732C00E35A61 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9ADD7A9A2487732800E35A61 = { + isa = PBXGroup; + children = ( + 9ADD7AA52487732800E35A61 /* Demo_01_CodeStyle */, + 9ADD7AC12487732B00E35A61 /* Demo_01_CodeStyleTests */, + 9ADD7ACC2487732C00E35A61 /* Demo_01_CodeStyleUITests */, + 9ADD7AA42487732800E35A61 /* Products */, + ); + sourceTree = ""; + }; + 9ADD7AA42487732800E35A61 /* Products */ = { + isa = PBXGroup; + children = ( + 9ADD7AA32487732800E35A61 /* Demo_01_CodeStyle.app */, + 9ADD7ABE2487732B00E35A61 /* Demo_01_CodeStyleTests.xctest */, + 9ADD7AC92487732C00E35A61 /* Demo_01_CodeStyleUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9ADD7AA52487732800E35A61 /* Demo_01_CodeStyle */ = { + isa = PBXGroup; + children = ( + 9ADD7AA62487732800E35A61 /* AppDelegate.h */, + 9ADD7AA72487732800E35A61 /* AppDelegate.m */, + 9ADD7AA92487732800E35A61 /* SceneDelegate.h */, + 9ADD7AAA2487732800E35A61 /* SceneDelegate.m */, + 9ADD7AAC2487732800E35A61 /* ViewController.h */, + 9ADD7AAD2487732800E35A61 /* ViewController.m */, + 9ADD7AAF2487732800E35A61 /* Main.storyboard */, + 9ADD7AB22487732B00E35A61 /* Assets.xcassets */, + 9ADD7AB42487732B00E35A61 /* LaunchScreen.storyboard */, + 9ADD7AB72487732B00E35A61 /* Info.plist */, + 9ADD7AB82487732B00E35A61 /* main.m */, + 9ADD7ADB248774CE00E35A61 /* main.cpp */, + ); + path = Demo_01_CodeStyle; + sourceTree = ""; + }; + 9ADD7AC12487732B00E35A61 /* Demo_01_CodeStyleTests */ = { + isa = PBXGroup; + children = ( + 9ADD7AC22487732B00E35A61 /* Demo_01_CodeStyleTests.m */, + 9ADD7AC42487732B00E35A61 /* Info.plist */, + ); + path = Demo_01_CodeStyleTests; + sourceTree = ""; + }; + 9ADD7ACC2487732C00E35A61 /* Demo_01_CodeStyleUITests */ = { + isa = PBXGroup; + children = ( + 9ADD7ACD2487732C00E35A61 /* Demo_01_CodeStyleUITests.m */, + 9ADD7ACF2487732C00E35A61 /* Info.plist */, + ); + path = Demo_01_CodeStyleUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9ADD7AA22487732800E35A61 /* Demo_01_CodeStyle */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9ADD7AD22487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyle" */; + buildPhases = ( + 9ADD7A9F2487732800E35A61 /* Sources */, + 9ADD7AA02487732800E35A61 /* Frameworks */, + 9ADD7AA12487732800E35A61 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Demo_01_CodeStyle; + productName = Demo_01_CodeStyle; + productReference = 9ADD7AA32487732800E35A61 /* Demo_01_CodeStyle.app */; + productType = "com.apple.product-type.application"; + }; + 9ADD7ABD2487732B00E35A61 /* Demo_01_CodeStyleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9ADD7AD52487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyleTests" */; + buildPhases = ( + 9ADD7ABA2487732B00E35A61 /* Sources */, + 9ADD7ABB2487732B00E35A61 /* Frameworks */, + 9ADD7ABC2487732B00E35A61 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9ADD7AC02487732B00E35A61 /* PBXTargetDependency */, + ); + name = Demo_01_CodeStyleTests; + productName = Demo_01_CodeStyleTests; + productReference = 9ADD7ABE2487732B00E35A61 /* Demo_01_CodeStyleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9ADD7AC82487732C00E35A61 /* Demo_01_CodeStyleUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9ADD7AD82487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyleUITests" */; + buildPhases = ( + 9ADD7AC52487732C00E35A61 /* Sources */, + 9ADD7AC62487732C00E35A61 /* Frameworks */, + 9ADD7AC72487732C00E35A61 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9ADD7ACB2487732C00E35A61 /* PBXTargetDependency */, + ); + name = Demo_01_CodeStyleUITests; + productName = Demo_01_CodeStyleUITests; + productReference = 9ADD7AC92487732C00E35A61 /* Demo_01_CodeStyleUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9ADD7A9B2487732800E35A61 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = ChenYilong; + TargetAttributes = { + 9ADD7AA22487732800E35A61 = { + CreatedOnToolsVersion = 11.4.1; + }; + 9ADD7ABD2487732B00E35A61 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9ADD7AA22487732800E35A61; + }; + 9ADD7AC82487732C00E35A61 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9ADD7AA22487732800E35A61; + }; + }; + }; + buildConfigurationList = 9ADD7A9E2487732800E35A61 /* Build configuration list for PBXProject "Demo_01_CodeStyle" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9ADD7A9A2487732800E35A61; + productRefGroup = 9ADD7AA42487732800E35A61 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9ADD7AA22487732800E35A61 /* Demo_01_CodeStyle */, + 9ADD7ABD2487732B00E35A61 /* Demo_01_CodeStyleTests */, + 9ADD7AC82487732C00E35A61 /* Demo_01_CodeStyleUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9ADD7AA12487732800E35A61 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9ADD7AB62487732B00E35A61 /* LaunchScreen.storyboard in Resources */, + 9ADD7AB32487732B00E35A61 /* Assets.xcassets in Resources */, + 9ADD7AB12487732800E35A61 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7ABC2487732B00E35A61 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7AC72487732C00E35A61 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9ADD7A9F2487732800E35A61 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9ADD7AAE2487732800E35A61 /* ViewController.m in Sources */, + 9ADD7AA82487732800E35A61 /* AppDelegate.m in Sources */, + 9ADD7AB92487732B00E35A61 /* main.m in Sources */, + 9ADD7AAB2487732800E35A61 /* SceneDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7ABA2487732B00E35A61 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9ADD7AC32487732B00E35A61 /* Demo_01_CodeStyleTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9ADD7AC52487732C00E35A61 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9ADD7ACE2487732C00E35A61 /* Demo_01_CodeStyleUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9ADD7AC02487732B00E35A61 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9ADD7AA22487732800E35A61 /* Demo_01_CodeStyle */; + targetProxy = 9ADD7ABF2487732B00E35A61 /* PBXContainerItemProxy */; + }; + 9ADD7ACB2487732C00E35A61 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9ADD7AA22487732800E35A61 /* Demo_01_CodeStyle */; + targetProxy = 9ADD7ACA2487732C00E35A61 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9ADD7AAF2487732800E35A61 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9ADD7AB02487732800E35A61 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9ADD7AB42487732B00E35A61 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9ADD7AB52487732B00E35A61 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9ADD7AD02487732C00E35A61 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 9ADD7AD12487732C00E35A61 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9ADD7AD32487732C00E35A61 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyle/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyle"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9ADD7AD42487732C00E35A61 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyle/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyle"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9ADD7AD62487732C00E35A61 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyleTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo_01_CodeStyle.app/Demo_01_CodeStyle"; + }; + name = Debug; + }; + 9ADD7AD72487732C00E35A61 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyleTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo_01_CodeStyle.app/Demo_01_CodeStyle"; + }; + name = Release; + }; + 9ADD7AD92487732C00E35A61 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyleUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyleUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Demo_01_CodeStyle; + }; + name = Debug; + }; + 9ADD7ADA2487732C00E35A61 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_01_CodeStyleUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-01-CodeStyleUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Demo_01_CodeStyle; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9ADD7A9E2487732800E35A61 /* Build configuration list for PBXProject "Demo_01_CodeStyle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9ADD7AD02487732C00E35A61 /* Debug */, + 9ADD7AD12487732C00E35A61 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9ADD7AD22487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyle" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9ADD7AD32487732C00E35A61 /* Debug */, + 9ADD7AD42487732C00E35A61 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9ADD7AD52487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9ADD7AD62487732C00E35A61 /* Debug */, + 9ADD7AD72487732C00E35A61 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9ADD7AD82487732C00E35A61 /* Build configuration list for PBXNativeTarget "Demo_01_CodeStyleUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9ADD7AD92487732C00E35A61 /* Debug */, + 9ADD7ADA2487732C00E35A61 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9ADD7A9B2487732800E35A61 /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..8be070b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" new file mode 100644 index 0000000..18d9810 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..0f44a88 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..8ea9eed --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Demo_01_CodeStyle.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.h" new file mode 100644 index 0000000..8bd79af --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.h" @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.m" new file mode 100644 index 0000000..e70fbcc --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/AppDelegate.m" @@ -0,0 +1,41 @@ +// +// AppDelegate.m +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + + +#pragma mark - UISceneSession lifecycle + + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; +} + + +- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..9221b9b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Assets.xcassets/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/LaunchScreen.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..865e932 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..808a21c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Base.lproj/Main.storyboard" @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Info.plist" new file mode 100644 index 0000000..7b6037c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/Info.plist" @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + SceneDelegate + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.h" new file mode 100644 index 0000000..82be73e --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.h" @@ -0,0 +1,16 @@ +// +// SceneDelegate.h +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface SceneDelegate : UIResponder + +@property (strong, nonatomic) UIWindow * window; + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.m" new file mode 100644 index 0000000..c74c9ee --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/SceneDelegate.m" @@ -0,0 +1,58 @@ +// +// SceneDelegate.m +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "SceneDelegate.h" + +@interface SceneDelegate () + +@end + +@implementation SceneDelegate + + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). +} + + +- (void)sceneDidDisconnect:(UIScene *)scene { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). +} + + +- (void)sceneDidBecomeActive:(UIScene *)scene { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. +} + + +- (void)sceneWillResignActive:(UIScene *)scene { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). +} + + +- (void)sceneWillEnterForeground:(UIScene *)scene { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. +} + + +- (void)sceneDidEnterBackground:(UIScene *)scene { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.h" new file mode 100644 index 0000000..9a2592f --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.m" new file mode 100644 index 0000000..0413dd9 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/ViewController.m" @@ -0,0 +1,23 @@ +// +// ViewController.m +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.cpp" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.cpp" new file mode 100644 index 0000000..3424c7a --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.cpp" @@ -0,0 +1,72613 @@ +#ifndef __OBJC2__ +#define __OBJC2__ +#endif +struct objc_selector; struct objc_class; +struct __rw_objc_super { + struct objc_object *object; + struct objc_object *superClass; + __rw_objc_super(struct objc_object *o, struct objc_object *s) : object(o), superClass(s) {} +}; +#ifndef _REWRITER_typedef_Protocol +typedef struct objc_object Protocol; +#define _REWRITER_typedef_Protocol +#endif +#define __OBJC_RW_DLLIMPORT extern +__OBJC_RW_DLLIMPORT void objc_msgSend(void); +__OBJC_RW_DLLIMPORT void objc_msgSendSuper(void); +__OBJC_RW_DLLIMPORT void objc_msgSend_stret(void); +__OBJC_RW_DLLIMPORT void objc_msgSendSuper_stret(void); +__OBJC_RW_DLLIMPORT void objc_msgSend_fpret(void); +__OBJC_RW_DLLIMPORT struct objc_class *objc_getClass(const char *); +__OBJC_RW_DLLIMPORT struct objc_class *class_getSuperclass(struct objc_class *); +__OBJC_RW_DLLIMPORT struct objc_class *objc_getMetaClass(const char *); +__OBJC_RW_DLLIMPORT void objc_exception_throw( struct objc_object *); +__OBJC_RW_DLLIMPORT int objc_sync_enter( struct objc_object *); +__OBJC_RW_DLLIMPORT int objc_sync_exit( struct objc_object *); +__OBJC_RW_DLLIMPORT Protocol *objc_getProtocol(const char *); +#ifdef _WIN64 +typedef unsigned long long _WIN_NSUInteger; +#else +typedef unsigned int _WIN_NSUInteger; +#endif +#ifndef __FASTENUMERATIONSTATE +struct __objcFastEnumerationState { + unsigned long state; + void **itemsPtr; + unsigned long *mutationsPtr; + unsigned long extra[5]; +}; +__OBJC_RW_DLLIMPORT void objc_enumerationMutation(struct objc_object *); +#define __FASTENUMERATIONSTATE +#endif +#ifndef __NSCONSTANTSTRINGIMPL +struct __NSConstantStringImpl { + int *isa; + int flags; + char *str; +#if _WIN64 + long long length; +#else + long length; +#endif +}; +#ifdef CF_EXPORT_CONSTANT_STRING +extern "C" __declspec(dllexport) int __CFConstantStringClassReference[]; +#else +__OBJC_RW_DLLIMPORT int __CFConstantStringClassReference[]; +#endif +#define __NSCONSTANTSTRINGIMPL +#endif +#ifndef BLOCK_IMPL +#define BLOCK_IMPL +struct __block_impl { + void *isa; + int Flags; + int Reserved; + void *FuncPtr; +}; +// Runtime copy/destroy helper functions (from Block_private.h) +#ifdef __OBJC_EXPORT_BLOCKS +extern "C" __declspec(dllexport) void _Block_object_assign(void *, const void *, const int); +extern "C" __declspec(dllexport) void _Block_object_dispose(const void *, const int); +extern "C" __declspec(dllexport) void *_NSConcreteGlobalBlock[32]; +extern "C" __declspec(dllexport) void *_NSConcreteStackBlock[32]; +#else +__OBJC_RW_DLLIMPORT void _Block_object_assign(void *, const void *, const int); +__OBJC_RW_DLLIMPORT void _Block_object_dispose(const void *, const int); +__OBJC_RW_DLLIMPORT void *_NSConcreteGlobalBlock[32]; +__OBJC_RW_DLLIMPORT void *_NSConcreteStackBlock[32]; +#endif +#endif +#define __block +#define __weak + +#include +struct __NSContainer_literal { + void * *arr; + __NSContainer_literal (unsigned int count, ...) { + va_list marker; + va_start(marker, count); + arr = new void *[count]; + for (unsigned i = 0; i < count; i++) + arr[i] = va_arg(marker, void *); + va_end( marker ); + }; + ~__NSContainer_literal() { + delete[] arr; + } +}; +extern "C" __declspec(dllimport) void * objc_autoreleasePoolPush(void); +extern "C" __declspec(dllimport) void objc_autoreleasePoolPop(void *); + +struct __AtAutoreleasePool { + __AtAutoreleasePool() {atautoreleasepoolobj = objc_autoreleasePoolPush();} + ~__AtAutoreleasePool() {objc_autoreleasePoolPop(atautoreleasepoolobj);} + void * atautoreleasepoolobj; +}; + +#define __OFFSETOFIVAR__(TYPE, MEMBER) ((long long) &((TYPE *)0)->MEMBER) +static __NSConstantStringImpl __NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_0 __attribute__ ((section ("__DATA, __cfstring"))) = {__CFConstantStringClassReference,0x000007c8,"%s %@",5}; +static __NSConstantStringImpl __NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_1 __attribute__ ((section ("__DATA, __cfstring"))) = {__CFConstantStringClassReference,0x000007c8,"%s %@",5}; +static __NSConstantStringImpl __NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_2 __attribute__ ((section ("__DATA, __cfstring"))) = {__CFConstantStringClassReference,0x000007c8,"%s %@",5}; + + + + + + + + + + + + + + + + + + + + + + + + +typedef signed char __int8_t; + + + +typedef unsigned char __uint8_t; +typedef short __int16_t; +typedef unsigned short __uint16_t; +typedef int __int32_t; +typedef unsigned int __uint32_t; +typedef long long __int64_t; +typedef unsigned long long __uint64_t; + +typedef long __darwin_intptr_t; +typedef unsigned int __darwin_natural_t; +typedef int __darwin_ct_rune_t; + + + + + +typedef union { + char __mbstate8[128]; + long long _mbstateL; +} __mbstate_t; + +typedef __mbstate_t __darwin_mbstate_t; + + +typedef long int __darwin_ptrdiff_t; + + + + + + + +typedef long unsigned int __darwin_size_t; + + + + + +typedef __builtin_va_list __darwin_va_list; + + + + + +typedef int __darwin_wchar_t; + + + + +typedef __darwin_wchar_t __darwin_rune_t; + + +typedef int __darwin_wint_t; + + + + +typedef unsigned long __darwin_clock_t; +typedef __uint32_t __darwin_socklen_t; +typedef long __darwin_ssize_t; +typedef long __darwin_time_t; + + + + + +typedef signed char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef long long int64_t; + +typedef unsigned char u_int8_t; +typedef unsigned short u_int16_t; +typedef unsigned int u_int32_t; +typedef unsigned long long u_int64_t; + + +typedef int64_t register_t; + + + + + + +typedef __darwin_intptr_t intptr_t; +typedef unsigned long uintptr_t; + + + + +typedef u_int64_t user_addr_t; +typedef u_int64_t user_size_t; +typedef int64_t user_ssize_t; +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; +typedef u_int64_t syscall_arg_t; +typedef __int64_t __darwin_blkcnt_t; +typedef __int32_t __darwin_blksize_t; +typedef __int32_t __darwin_dev_t; +typedef unsigned int __darwin_fsblkcnt_t; +typedef unsigned int __darwin_fsfilcnt_t; +typedef __uint32_t __darwin_gid_t; +typedef __uint32_t __darwin_id_t; +typedef __uint64_t __darwin_ino64_t; + +typedef __darwin_ino64_t __darwin_ino_t; + + + +typedef __darwin_natural_t __darwin_mach_port_name_t; +typedef __darwin_mach_port_name_t __darwin_mach_port_t; +typedef __uint16_t __darwin_mode_t; +typedef __int64_t __darwin_off_t; +typedef __int32_t __darwin_pid_t; +typedef __uint32_t __darwin_sigset_t; +typedef __int32_t __darwin_suseconds_t; +typedef __uint32_t __darwin_uid_t; +typedef __uint32_t __darwin_useconds_t; +typedef unsigned char __darwin_uuid_t[16]; +typedef char __darwin_uuid_string_t[37]; + + +struct __darwin_pthread_handler_rec { + void (*__routine)(void *); + void *__arg; + struct __darwin_pthread_handler_rec *__next; +}; + +struct _opaque_pthread_attr_t { + long __sig; + char __opaque[56]; +}; + +struct _opaque_pthread_cond_t { + long __sig; + char __opaque[40]; +}; + +struct _opaque_pthread_condattr_t { + long __sig; + char __opaque[8]; +}; + +struct _opaque_pthread_mutex_t { + long __sig; + char __opaque[56]; +}; + +struct _opaque_pthread_mutexattr_t { + long __sig; + char __opaque[8]; +}; + +struct _opaque_pthread_once_t { + long __sig; + char __opaque[8]; +}; + +struct _opaque_pthread_rwlock_t { + long __sig; + char __opaque[192]; +}; + +struct _opaque_pthread_rwlockattr_t { + long __sig; + char __opaque[16]; +}; + +struct _opaque_pthread_t { + long __sig; + struct __darwin_pthread_handler_rec *__cleanup_stack; + char __opaque[8176]; +}; + +typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t; +typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t; +typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t; +typedef unsigned long __darwin_pthread_key_t; +typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t; +typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t; +typedef struct _opaque_pthread_once_t __darwin_pthread_once_t; +typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t; +typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t; +typedef struct _opaque_pthread_t *__darwin_pthread_t; + + + + + + + + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +typedef unsigned long long uint64_t; + + +typedef int8_t int_least8_t; +typedef int16_t int_least16_t; +typedef int32_t int_least32_t; +typedef int64_t int_least64_t; +typedef uint8_t uint_least8_t; +typedef uint16_t uint_least16_t; +typedef uint32_t uint_least32_t; +typedef uint64_t uint_least64_t; + + + +typedef int8_t int_fast8_t; +typedef int16_t int_fast16_t; +typedef int32_t int_fast32_t; +typedef int64_t int_fast64_t; +typedef uint8_t uint_fast8_t; +typedef uint16_t uint_fast16_t; +typedef uint32_t uint_fast32_t; +typedef uint64_t uint_fast64_t; +typedef long int intmax_t; +typedef long unsigned int uintmax_t; + + + +static __inline__ +uint16_t +_OSSwapInt16( + uint16_t data + ) +{ + + return (uint16_t)(data << 8 | data >> 8); +} + +static __inline__ +uint32_t +_OSSwapInt32( + uint32_t data + ) +{ + + data = __builtin_bswap32(data); + + + + + + return data; +} + +static __inline__ +uint64_t +_OSSwapInt64( + uint64_t data + ) +{ + + return __builtin_bswap64(data); +} + + + +static __inline__ +uint16_t +OSReadSwapInt16( + const volatile void * base, + uintptr_t offset + ) +{ + uint16_t result; + + result = *(volatile uint16_t *)((volatile uintptr_t)base + offset); + return _OSSwapInt16(result); +} + +static __inline__ +uint32_t +OSReadSwapInt32( + const volatile void * base, + uintptr_t offset + ) +{ + uint32_t result; + + result = *(volatile uint32_t *)((volatile uintptr_t)base + offset); + return _OSSwapInt32(result); +} + +static __inline__ +uint64_t +OSReadSwapInt64( + const volatile void * base, + uintptr_t offset + ) +{ + volatile uint32_t * inp; + union ullc { + uint64_t ull; + uint32_t ul[2]; + } outv; + + inp = (volatile uint32_t *)((volatile uintptr_t)base + offset); + outv.ul[0] = inp[1]; + outv.ul[1] = inp[0]; + outv.ul[0] = _OSSwapInt32(outv.ul[0]); + outv.ul[1] = _OSSwapInt32(outv.ul[1]); + return outv.ull; +} + + + +static __inline__ +void +OSWriteSwapInt16( + volatile void * base, + uintptr_t offset, + uint16_t data + ) +{ + *(volatile uint16_t *)((volatile uintptr_t)base + offset) = _OSSwapInt16(data); +} + +static __inline__ +void +OSWriteSwapInt32( + volatile void * base, + uintptr_t offset, + uint32_t data + ) +{ + *(volatile uint32_t *)((volatile uintptr_t)base + offset) = _OSSwapInt32(data); +} + +static __inline__ +void +OSWriteSwapInt64( + volatile void * base, + uintptr_t offset, + uint64_t data + ) +{ + *(volatile uint64_t *)((volatile uintptr_t)base + offset) = _OSSwapInt64(data); +} + + +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; + +typedef unsigned long u_long; + + +typedef unsigned short ushort; +typedef unsigned int uint; + + +typedef u_int64_t u_quad_t; +typedef int64_t quad_t; +typedef quad_t * qaddr_t; + + +typedef char * caddr_t; + +typedef int32_t daddr_t; + + +typedef __darwin_dev_t dev_t; + +typedef u_int32_t fixpt_t; + + +typedef __darwin_blkcnt_t blkcnt_t; +typedef __darwin_blksize_t blksize_t; +typedef __darwin_gid_t gid_t; +typedef __uint32_t in_addr_t; +typedef __uint16_t in_port_t; +typedef __darwin_ino_t ino_t; + + +typedef __darwin_ino64_t ino64_t; + + +typedef __int32_t key_t; +typedef __darwin_mode_t mode_t; +typedef __uint16_t nlink_t; +typedef __darwin_id_t id_t; +typedef __darwin_pid_t pid_t; +typedef __darwin_off_t off_t; + +typedef int32_t segsz_t; +typedef int32_t swblk_t; + + +typedef __darwin_uid_t uid_t; +static inline __int32_t +major(__uint32_t _x) +{ + return (__int32_t)(((__uint32_t)_x >> 24) & 0xff); +} + +static inline __int32_t +minor(__uint32_t _x) +{ + return (__int32_t)((_x) & 0xffffff); +} + +static inline dev_t +makedev(__uint32_t _major, __uint32_t _minor) +{ + return (dev_t)(((_major) << 24) | (_minor)); +} +typedef __darwin_clock_t clock_t; +typedef __darwin_size_t size_t; +typedef __darwin_ssize_t ssize_t; +typedef __darwin_time_t time_t; + +typedef __darwin_useconds_t useconds_t; +typedef __darwin_suseconds_t suseconds_t; + + +typedef __darwin_size_t rsize_t; +typedef int errno_t; + + + + + + + + +extern "C" { +typedef struct fd_set { + __int32_t fds_bits[((((1024) % ((sizeof(__int32_t) * 8))) == 0) ? ((1024) / ((sizeof(__int32_t) * 8))) : (((1024) / ((sizeof(__int32_t) * 8))) + 1))]; +} fd_set; + +int __darwin_check_fd_set_overflow(int, const void *, int) __attribute__((__weak_import__)); +} + +inline __attribute__ ((__always_inline__)) int +__darwin_check_fd_set(int _a, const void *_b) +{ + if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) { + + + + return __darwin_check_fd_set_overflow(_a, _b, 0); + + } else { + return 1; + } +} + + +inline __attribute__ ((__always_inline__)) int +__darwin_fd_isset(int _fd, const struct fd_set *_p) +{ + if (__darwin_check_fd_set(_fd, (const void *) _p)) { + return _p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] & ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8)))); + } + + return 0; +} + +inline __attribute__ ((__always_inline__)) void +__darwin_fd_set(int _fd, struct fd_set *const _p) +{ + if (__darwin_check_fd_set(_fd, (const void *) _p)) { + (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] |= ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8))))); + } +} + +inline __attribute__ ((__always_inline__)) void +__darwin_fd_clr(int _fd, struct fd_set *const _p) +{ + if (__darwin_check_fd_set(_fd, (const void *) _p)) { + (_p->fds_bits[(unsigned long)_fd / (sizeof(__int32_t) * 8)] &= ~((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % (sizeof(__int32_t) * 8))))); + } +} + + + + +typedef __int32_t fd_mask; + + + + + + + + + + +typedef __darwin_pthread_attr_t pthread_attr_t; +typedef __darwin_pthread_cond_t pthread_cond_t; +typedef __darwin_pthread_condattr_t pthread_condattr_t; +typedef __darwin_pthread_mutex_t pthread_mutex_t; +typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t; +typedef __darwin_pthread_once_t pthread_once_t; +typedef __darwin_pthread_rwlock_t pthread_rwlock_t; +typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t; +typedef __darwin_pthread_t pthread_t; + + + +typedef __darwin_pthread_key_t pthread_key_t; + + + + +typedef __darwin_fsblkcnt_t fsblkcnt_t; +typedef __darwin_fsfilcnt_t fsfilcnt_t; +typedef __builtin_va_list va_list; +typedef __builtin_va_list __gnuc_va_list; +typedef int __darwin_nl_item; +typedef int __darwin_wctrans_t; + +typedef __uint32_t __darwin_wctype_t; + +typedef enum { + P_ALL, + P_PID, + P_PGID +} idtype_t; +typedef int sig_atomic_t; +struct __darwin_arm_exception_state +{ + __uint32_t __exception; + __uint32_t __fsr; + __uint32_t __far; +}; +struct __darwin_arm_exception_state64 +{ + __uint64_t __far; + __uint32_t __esr; + __uint32_t __exception; +}; +struct __darwin_arm_thread_state +{ + __uint32_t __r[13]; + __uint32_t __sp; + __uint32_t __lr; + __uint32_t __pc; + __uint32_t __cpsr; +}; +struct __darwin_arm_thread_state64 +{ + __uint64_t __x[29]; + __uint64_t __fp; + __uint64_t __lr; + __uint64_t __sp; + __uint64_t __pc; + __uint32_t __cpsr; + __uint32_t __pad; +}; +struct __darwin_arm_vfp_state +{ + __uint32_t __r[64]; + __uint32_t __fpscr; +}; +struct __darwin_arm_neon_state64 +{ + __uint128_t __v[32]; + __uint32_t __fpsr; + __uint32_t __fpcr; +}; + +struct __darwin_arm_neon_state +{ + __uint128_t __v[16]; + __uint32_t __fpsr; + __uint32_t __fpcr; +}; +struct __darwin_arm_amx_state_v1 +{ + __uint8_t __x[8][64]; + __uint8_t __y[8][64]; + __uint8_t __z[64][64]; + __uint64_t __amx_state_t_el1; +} __attribute__((aligned(64))); +struct __arm_pagein_state +{ + int __pagein_error; +}; +struct arm_legacy_debug_state +{ + __uint32_t __bvr[16]; + __uint32_t __bcr[16]; + __uint32_t __wvr[16]; + __uint32_t __wcr[16]; +}; +struct __darwin_arm_debug_state32 +{ + __uint32_t __bvr[16]; + __uint32_t __bcr[16]; + __uint32_t __wvr[16]; + __uint32_t __wcr[16]; + __uint64_t __mdscr_el1; +}; + + +struct __darwin_arm_debug_state64 +{ + __uint64_t __bvr[16]; + __uint64_t __bcr[16]; + __uint64_t __wvr[16]; + __uint64_t __wcr[16]; + __uint64_t __mdscr_el1; +}; +struct __darwin_arm_cpmu_state64 +{ + __uint64_t __ctrs[16]; +}; + + + + +struct __darwin_mcontext32 +{ + struct __darwin_arm_exception_state __es; + struct __darwin_arm_thread_state __ss; + struct __darwin_arm_vfp_state __fs; +}; +struct __darwin_mcontext64 +{ + struct __darwin_arm_exception_state64 __es; + struct __darwin_arm_thread_state64 __ss; + struct __darwin_arm_neon_state64 __ns; +}; +typedef struct __darwin_mcontext64 *mcontext_t; + + + +struct __darwin_sigaltstack +{ + void *ss_sp; + __darwin_size_t ss_size; + int ss_flags; +}; +typedef struct __darwin_sigaltstack stack_t; + + +struct __darwin_ucontext +{ + int uc_onstack; + __darwin_sigset_t uc_sigmask; + struct __darwin_sigaltstack uc_stack; + struct __darwin_ucontext *uc_link; + __darwin_size_t uc_mcsize; + struct __darwin_mcontext64 *uc_mcontext; + + + +}; + + +typedef struct __darwin_ucontext ucontext_t; + + +typedef __darwin_sigset_t sigset_t; + + + +union sigval { + + int sival_int; + void *sival_ptr; +}; + + + + + +struct sigevent { + int sigev_notify; + int sigev_signo; + union sigval sigev_value; + void (*sigev_notify_function)(union sigval); + pthread_attr_t *sigev_notify_attributes; +}; + + +typedef struct __siginfo { + int si_signo; + int si_errno; + int si_code; + pid_t si_pid; + uid_t si_uid; + int si_status; + void *si_addr; + union sigval si_value; + long si_band; + unsigned long __pad[7]; +} siginfo_t; +union __sigaction_u { + void (*__sa_handler)(int); + void (*__sa_sigaction)(int, struct __siginfo *, + void *); +}; + + +struct __sigaction { + union __sigaction_u __sigaction_u; + void (*sa_tramp)(void *, int, int, siginfo_t *, void *); + sigset_t sa_mask; + int sa_flags; +}; + + + + +struct sigaction { + union __sigaction_u __sigaction_u; + sigset_t sa_mask; + int sa_flags; +}; +typedef void (*sig_t)(int); +struct sigvec { + void (*sv_handler)(int); + int sv_mask; + int sv_flags; +}; +struct sigstack { + char *ss_sp; + int ss_onstack; +}; +extern "C" { + void(*signal(int, void (*)(int)))(int); +} +struct timeval +{ + __darwin_time_t tv_sec; + __darwin_suseconds_t tv_usec; +}; + + + + + + + + +typedef __uint64_t rlim_t; +struct rusage { + struct timeval ru_utime; + struct timeval ru_stime; + long ru_maxrss; + + long ru_ixrss; + long ru_idrss; + long ru_isrss; + long ru_minflt; + long ru_majflt; + long ru_nswap; + long ru_inblock; + long ru_oublock; + long ru_msgsnd; + long ru_msgrcv; + long ru_nsignals; + long ru_nvcsw; + long ru_nivcsw; + + +}; +typedef void *rusage_info_t; + +struct rusage_info_v0 { + uint8_t ri_uuid[16]; + uint64_t ri_user_time; + uint64_t ri_system_time; + uint64_t ri_pkg_idle_wkups; + uint64_t ri_interrupt_wkups; + uint64_t ri_pageins; + uint64_t ri_wired_size; + uint64_t ri_resident_size; + uint64_t ri_phys_footprint; + uint64_t ri_proc_start_abstime; + uint64_t ri_proc_exit_abstime; +}; + +struct rusage_info_v1 { + uint8_t ri_uuid[16]; + uint64_t ri_user_time; + uint64_t ri_system_time; + uint64_t ri_pkg_idle_wkups; + uint64_t ri_interrupt_wkups; + uint64_t ri_pageins; + uint64_t ri_wired_size; + uint64_t ri_resident_size; + uint64_t ri_phys_footprint; + uint64_t ri_proc_start_abstime; + uint64_t ri_proc_exit_abstime; + uint64_t ri_child_user_time; + uint64_t ri_child_system_time; + uint64_t ri_child_pkg_idle_wkups; + uint64_t ri_child_interrupt_wkups; + uint64_t ri_child_pageins; + uint64_t ri_child_elapsed_abstime; +}; + +struct rusage_info_v2 { + uint8_t ri_uuid[16]; + uint64_t ri_user_time; + uint64_t ri_system_time; + uint64_t ri_pkg_idle_wkups; + uint64_t ri_interrupt_wkups; + uint64_t ri_pageins; + uint64_t ri_wired_size; + uint64_t ri_resident_size; + uint64_t ri_phys_footprint; + uint64_t ri_proc_start_abstime; + uint64_t ri_proc_exit_abstime; + uint64_t ri_child_user_time; + uint64_t ri_child_system_time; + uint64_t ri_child_pkg_idle_wkups; + uint64_t ri_child_interrupt_wkups; + uint64_t ri_child_pageins; + uint64_t ri_child_elapsed_abstime; + uint64_t ri_diskio_bytesread; + uint64_t ri_diskio_byteswritten; +}; + +struct rusage_info_v3 { + uint8_t ri_uuid[16]; + uint64_t ri_user_time; + uint64_t ri_system_time; + uint64_t ri_pkg_idle_wkups; + uint64_t ri_interrupt_wkups; + uint64_t ri_pageins; + uint64_t ri_wired_size; + uint64_t ri_resident_size; + uint64_t ri_phys_footprint; + uint64_t ri_proc_start_abstime; + uint64_t ri_proc_exit_abstime; + uint64_t ri_child_user_time; + uint64_t ri_child_system_time; + uint64_t ri_child_pkg_idle_wkups; + uint64_t ri_child_interrupt_wkups; + uint64_t ri_child_pageins; + uint64_t ri_child_elapsed_abstime; + uint64_t ri_diskio_bytesread; + uint64_t ri_diskio_byteswritten; + uint64_t ri_cpu_time_qos_default; + uint64_t ri_cpu_time_qos_maintenance; + uint64_t ri_cpu_time_qos_background; + uint64_t ri_cpu_time_qos_utility; + uint64_t ri_cpu_time_qos_legacy; + uint64_t ri_cpu_time_qos_user_initiated; + uint64_t ri_cpu_time_qos_user_interactive; + uint64_t ri_billed_system_time; + uint64_t ri_serviced_system_time; +}; + +struct rusage_info_v4 { + uint8_t ri_uuid[16]; + uint64_t ri_user_time; + uint64_t ri_system_time; + uint64_t ri_pkg_idle_wkups; + uint64_t ri_interrupt_wkups; + uint64_t ri_pageins; + uint64_t ri_wired_size; + uint64_t ri_resident_size; + uint64_t ri_phys_footprint; + uint64_t ri_proc_start_abstime; + uint64_t ri_proc_exit_abstime; + uint64_t ri_child_user_time; + uint64_t ri_child_system_time; + uint64_t ri_child_pkg_idle_wkups; + uint64_t ri_child_interrupt_wkups; + uint64_t ri_child_pageins; + uint64_t ri_child_elapsed_abstime; + uint64_t ri_diskio_bytesread; + uint64_t ri_diskio_byteswritten; + uint64_t ri_cpu_time_qos_default; + uint64_t ri_cpu_time_qos_maintenance; + uint64_t ri_cpu_time_qos_background; + uint64_t ri_cpu_time_qos_utility; + uint64_t ri_cpu_time_qos_legacy; + uint64_t ri_cpu_time_qos_user_initiated; + uint64_t ri_cpu_time_qos_user_interactive; + uint64_t ri_billed_system_time; + uint64_t ri_serviced_system_time; + uint64_t ri_logical_writes; + uint64_t ri_lifetime_max_phys_footprint; + uint64_t ri_instructions; + uint64_t ri_cycles; + uint64_t ri_billed_energy; + uint64_t ri_serviced_energy; + uint64_t ri_interval_max_phys_footprint; + uint64_t ri_runnable_time; +}; + +typedef struct rusage_info_v4 rusage_info_current; +struct rlimit { + rlim_t rlim_cur; + rlim_t rlim_max; +}; +struct proc_rlimit_control_wakeupmon { + uint32_t wm_flags; + int32_t wm_rate; +}; +extern "C" { +int getpriority(int, id_t); + +int getiopolicy_np(int, int) __attribute__((availability(ios,introduced=2.0))); + +int getrlimit(int, struct rlimit *) __asm("_" "getrlimit" ); +int getrusage(int, struct rusage *); +int setpriority(int, id_t, int); + +int setiopolicy_np(int, int, int) __attribute__((availability(ios,introduced=2.0))); + +int setrlimit(int, const struct rlimit *) __asm("_" "setrlimit" ); +} +union wait { + int w_status; + + + + struct { + + unsigned int w_Termsig:7, + w_Coredump:1, + w_Retcode:8, + w_Filler:16; + + + + + + + + } w_T; + + + + + + struct { + + unsigned int w_Stopval:8, + w_Stopsig:8, + w_Filler:16; + + + + + + + } w_S; +}; +extern "C" { +pid_t wait(int *) __asm("_" "wait" ); +pid_t waitpid(pid_t, int *, int) __asm("_" "waitpid" ); + +int waitid(idtype_t, id_t, siginfo_t *, int) __asm("_" "waitid" ); + + +pid_t wait3(int *, int, struct rusage *); +pid_t wait4(pid_t, int *, int, struct rusage *); + +} + +extern "C" { +void *alloca(size_t); +} + + + + + + + + +typedef __darwin_ct_rune_t ct_rune_t; +typedef __darwin_rune_t rune_t; + + + +typedef struct { + int quot; + int rem; +} div_t; + +typedef struct { + long quot; + long rem; +} ldiv_t; + + +typedef struct { + long long quot; + long long rem; +} lldiv_t; + + + +extern int __mb_cur_max; +extern "C" { + +void *malloc(size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1))); +void *calloc(size_t __count, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(1,2))); +void free(void *); +void *realloc(void *__ptr, size_t __size) __attribute__((__warn_unused_result__)) __attribute__((alloc_size(2))); + +void *valloc(size_t) __attribute__((alloc_size(1))); + + + + + + +int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((availability(ios,introduced=3.0))); + +} + +extern "C" { +void abort(void) __attribute__((__cold__)) __attribute__((__noreturn__)); +int abs(int) __attribute__((__const__)); +int atexit(void (* _Nonnull)(void)); +double atof(const char *); +int atoi(const char *); +long atol(const char *); + +long long + atoll(const char *); + +void *bsearch(const void *__key, const void *__base, size_t __nel, + size_t __width, int (* _Nonnull __compar)(const void *, const void *)); + +div_t div(int, int) __attribute__((__const__)); +void exit(int) __attribute__((__noreturn__)); + +char *getenv(const char *); +long labs(long) __attribute__((__const__)); +ldiv_t ldiv(long, long) __attribute__((__const__)); + +long long + llabs(long long); +lldiv_t lldiv(long long, long long); + + +int mblen(const char *__s, size_t __n); +size_t mbstowcs(wchar_t * , const char * , size_t); +int mbtowc(wchar_t * , const char * , size_t); + +void qsort(void *__base, size_t __nel, size_t __width, + int (* _Nonnull __compar)(const void *, const void *)); +int rand(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); + +void srand(unsigned) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +double strtod(const char *, char **) __asm("_" "strtod" ); +float strtof(const char *, char **) __asm("_" "strtof" ); +long strtol(const char *__str, char **__endptr, int __base); +long double + strtold(const char *, char **); + +long long + strtoll(const char *__str, char **__endptr, int __base); + +unsigned long + strtoul(const char *__str, char **__endptr, int __base); + +unsigned long long + strtoull(const char *__str, char **__endptr, int __base); +__attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))) +__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +int system(const char *) __asm("_" "system" ); + + + +size_t wcstombs(char * , const wchar_t * , size_t); +int wctomb(char *, wchar_t); + + +void _Exit(int) __attribute__((__noreturn__)); +long a64l(const char *); +double drand48(void); +char *ecvt(double, int, int *, int *); +double erand48(unsigned short[3]); +char *fcvt(double, int, int *, int *); +char *gcvt(double, int, char *); +int getsubopt(char **, char * const *, char **); +int grantpt(int); + +char *initstate(unsigned, char *, size_t); + + + +long jrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +char *l64a(long); +void lcong48(unsigned short[7]); +long lrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +char *mktemp(char *); +int mkstemp(char *); +long mrand48(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +long nrand48(unsigned short[3]) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +int posix_openpt(int); +char *ptsname(int); + + +int ptsname_r(int fildes, char *buffer, size_t buflen) __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(tvos,introduced=11.3))) __attribute__((availability(watchos,introduced=4.3))); + + +int putenv(char *) __asm("_" "putenv" ); +long random(void) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); +int rand_r(unsigned *) __attribute__((__availability__(swift, unavailable, message="Use arc4random instead."))); + +char *realpath(const char * , char * ) __asm("_" "realpath" "$DARWIN_EXTSN"); + + + +unsigned short + *seed48(unsigned short[3]); +int setenv(const char * __name, const char * __value, int __overwrite) __asm("_" "setenv" ); + +void setkey(const char *) __asm("_" "setkey" ); + + + +char *setstate(const char *); +void srand48(long); + +void srandom(unsigned); + + + +int unlockpt(int); + +int unsetenv(const char *) __asm("_" "unsetenv" ); +uint32_t arc4random(void); +void arc4random_addrandom(unsigned char * , int ) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(macosx,deprecated=10.12,message="use arc4random_stir"))) + __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(ios,deprecated=10.0,message="use arc4random_stir"))) + __attribute__((availability(tvos,introduced=2.0))) __attribute__((availability(tvos,deprecated=10.0,message="use arc4random_stir"))) + __attribute__((availability(watchos,introduced=1.0))) __attribute__((availability(watchos,deprecated=3.0,message="use arc4random_stir"))); +void arc4random_buf(void * __buf, size_t __nbytes) __attribute__((availability(ios,introduced=4.3))); +void arc4random_stir(void); +uint32_t + arc4random_uniform(uint32_t __upper_bound) __attribute__((availability(ios,introduced=4.3))); + +int atexit_b(void (^ _Nonnull)(void)) __attribute__((availability(ios,introduced=3.2))); +void *bsearch_b(const void *__key, const void *__base, size_t __nel, + size_t __width, int (^ _Nonnull __compar)(const void *, const void *)) __attribute__((availability(ios,introduced=3.2))); + + + +char *cgetcap(char *, const char *, int); +int cgetclose(void); +int cgetent(char **, char **, const char *); +int cgetfirst(char **, char **); +int cgetmatch(const char *, const char *); +int cgetnext(char **, char **); +int cgetnum(char *, const char *, long *); +int cgetset(const char *); +int cgetstr(char *, const char *, char **); +int cgetustr(char *, const char *, char **); + +int daemon(int, int) __asm("_" "daemon" ) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use posix_spawn APIs instead."))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +char *devname(dev_t, mode_t); +char *devname_r(dev_t, mode_t, char *buf, int len); +char *getbsize(int *, long *); +int getloadavg(double [], int); +const char + *getprogname(void); +void setprogname(const char *); +int heapsort(void *__base, size_t __nel, size_t __width, + int (* _Nonnull __compar)(const void *, const void *)); + +int heapsort_b(void *__base, size_t __nel, size_t __width, + int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__))) + __attribute__((availability(ios,introduced=3.2))); + +int mergesort(void *__base, size_t __nel, size_t __width, + int (* _Nonnull __compar)(const void *, const void *)); + +int mergesort_b(void *__base, size_t __nel, size_t __width, + int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__))) + __attribute__((availability(ios,introduced=3.2))); + +void psort(void *__base, size_t __nel, size_t __width, + int (* _Nonnull __compar)(const void *, const void *)) + __attribute__((availability(ios,introduced=3.2))); + +void psort_b(void *__base, size_t __nel, size_t __width, + int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__))) + __attribute__((availability(ios,introduced=3.2))); + +void psort_r(void *__base, size_t __nel, size_t __width, void *, + int (* _Nonnull __compar)(void *, const void *, const void *)) + __attribute__((availability(ios,introduced=3.2))); + +void qsort_b(void *__base, size_t __nel, size_t __width, + int (^ _Nonnull __compar)(const void *, const void *) __attribute__((__noescape__))) + __attribute__((availability(ios,introduced=3.2))); + +void qsort_r(void *__base, size_t __nel, size_t __width, void *, + int (* _Nonnull __compar)(void *, const void *, const void *)); +int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table, + unsigned __endbyte); +int rpmatch(const char *) + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table, + unsigned __endbyte); +void sranddev(void); +void srandomdev(void); +void *reallocf(void *__ptr, size_t __size) __attribute__((alloc_size(2))); + +long long + strtoq(const char *__str, char **__endptr, int __base); +unsigned long long + strtouq(const char *__str, char **__endptr, int __base); + +extern char *suboptarg; + + + + + + + +} +extern "C" { +void __assert_rtn(const char *, const char *, int, const char *) __attribute__((__noreturn__)) __attribute__((__cold__)) __attribute__((__disable_tail_calls__)); + + + +} +typedef __darwin_wint_t wint_t; +typedef struct { + __darwin_rune_t __min; + __darwin_rune_t __max; + __darwin_rune_t __map; + __uint32_t *__types; +} _RuneEntry; + +typedef struct { + int __nranges; + _RuneEntry *__ranges; +} _RuneRange; + +typedef struct { + char __name[14]; + __uint32_t __mask; +} _RuneCharClass; + +typedef struct { + char __magic[8]; + char __encoding[32]; + + __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **); + int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **); + __darwin_rune_t __invalid_rune; + + __uint32_t __runetype[(1 <<8 )]; + __darwin_rune_t __maplower[(1 <<8 )]; + __darwin_rune_t __mapupper[(1 <<8 )]; + + + + + + + _RuneRange __runetype_ext; + _RuneRange __maplower_ext; + _RuneRange __mapupper_ext; + + void *__variable; + int __variable_len; + + + + + int __ncharclasses; + _RuneCharClass *__charclasses; +} _RuneLocale; + + + +extern "C" { +extern _RuneLocale _DefaultRuneLocale; +extern _RuneLocale *_CurrentRuneLocale; +} +extern "C" { +unsigned long ___runetype(__darwin_ct_rune_t); +__darwin_ct_rune_t ___tolower(__darwin_ct_rune_t); +__darwin_ct_rune_t ___toupper(__darwin_ct_rune_t); +} + +inline int +isascii(int _c) +{ + return ((_c & ~0x7F) == 0); +} +extern "C" { +int __maskrune(__darwin_ct_rune_t, unsigned long); +} + + +inline int +__istype(__darwin_ct_rune_t _c, unsigned long _f) +{ + + + + return (isascii(_c) ? !!(_DefaultRuneLocale.__runetype[_c] & _f) + : !!__maskrune(_c, _f)); + +} + +inline __darwin_ct_rune_t +__isctype(__darwin_ct_rune_t _c, unsigned long _f) +{ + + + + return (_c < 0 || _c >= (1 <<8 )) ? 0 : + !!(_DefaultRuneLocale.__runetype[_c] & _f); + +} +extern "C" { +__darwin_ct_rune_t __toupper(__darwin_ct_rune_t); +__darwin_ct_rune_t __tolower(__darwin_ct_rune_t); +} + + +inline int +__wcwidth(__darwin_ct_rune_t _c) +{ + unsigned int _x; + + if (_c == 0) + return (0); + _x = (unsigned int)__maskrune(_c, 0xe0000000L|0x00040000L); + if ((_x & 0xe0000000L) != 0) + return ((_x & 0xe0000000L) >> 30); + return ((_x & 0x00040000L) != 0 ? 1 : -1); +} + + + + + + +inline int +isalnum(int _c) +{ + return (__istype(_c, 0x00000100L|0x00000400L)); +} + +inline int +isalpha(int _c) +{ + return (__istype(_c, 0x00000100L)); +} + +inline int +isblank(int _c) +{ + return (__istype(_c, 0x00020000L)); +} + +inline int +iscntrl(int _c) +{ + return (__istype(_c, 0x00000200L)); +} + + +inline int +isdigit(int _c) +{ + return (__isctype(_c, 0x00000400L)); +} + +inline int +isgraph(int _c) +{ + return (__istype(_c, 0x00000800L)); +} + +inline int +islower(int _c) +{ + return (__istype(_c, 0x00001000L)); +} + +inline int +isprint(int _c) +{ + return (__istype(_c, 0x00040000L)); +} + +inline int +ispunct(int _c) +{ + return (__istype(_c, 0x00002000L)); +} + +inline int +isspace(int _c) +{ + return (__istype(_c, 0x00004000L)); +} + +inline int +isupper(int _c) +{ + return (__istype(_c, 0x00008000L)); +} + + +inline int +isxdigit(int _c) +{ + return (__isctype(_c, 0x00010000L)); +} + +inline int +toascii(int _c) +{ + return (_c & 0x7F); +} + +inline int +tolower(int _c) +{ + return (__tolower(_c)); +} + +inline int +toupper(int _c) +{ + return (__toupper(_c)); +} + + +inline int +digittoint(int _c) +{ + return (__maskrune(_c, 0x0F)); +} + +inline int +ishexnumber(int _c) +{ + return (__istype(_c, 0x00010000L)); +} + +inline int +isideogram(int _c) +{ + return (__istype(_c, 0x00080000L)); +} + +inline int +isnumber(int _c) +{ + return (__istype(_c, 0x00000400L)); +} + +inline int +isphonogram(int _c) +{ + return (__istype(_c, 0x00200000L)); +} + +inline int +isrune(int _c) +{ + return (__istype(_c, 0xFFFFFFF0L)); +} + +inline int +isspecial(int _c) +{ + return (__istype(_c, 0x00100000L)); +} +extern "C" { +extern int * __error(void); + +} + + + + + +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 int_frac_digits; + char frac_digits; + char p_cs_precedes; + char p_sep_by_space; + char n_cs_precedes; + char n_sep_by_space; + char p_sign_posn; + char n_sign_posn; + char int_p_cs_precedes; + char int_n_cs_precedes; + char int_p_sep_by_space; + char int_n_sep_by_space; + char int_p_sign_posn; + char int_n_sign_posn; +}; + + + +extern "C" { +struct lconv *localeconv(void); +} +extern "C" { +char *setlocale(int, const char *); +} +extern "C" { + typedef float float_t; + typedef double double_t; +extern int __math_errhandling(void); +extern int __fpclassifyf(float); +extern int __fpclassifyd(double); +extern int __fpclassifyl(long double); +inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float); +inline __attribute__ ((__always_inline__)) int __inline_isfinited(double); +inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double); +inline __attribute__ ((__always_inline__)) int __inline_isinff(float); +inline __attribute__ ((__always_inline__)) int __inline_isinfd(double); +inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double); +inline __attribute__ ((__always_inline__)) int __inline_isnanf(float); +inline __attribute__ ((__always_inline__)) int __inline_isnand(double); +inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double); +inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float); +inline __attribute__ ((__always_inline__)) int __inline_isnormald(double); +inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double); +inline __attribute__ ((__always_inline__)) int __inline_signbitf(float); +inline __attribute__ ((__always_inline__)) int __inline_signbitd(double); +inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double); + +inline __attribute__ ((__always_inline__)) int __inline_isfinitef(float __x) { + return __x == __x && __builtin_fabsf(__x) != __builtin_inff(); +} +inline __attribute__ ((__always_inline__)) int __inline_isfinited(double __x) { + return __x == __x && __builtin_fabs(__x) != __builtin_inf(); +} +inline __attribute__ ((__always_inline__)) int __inline_isfinitel(long double __x) { + return __x == __x && __builtin_fabsl(__x) != __builtin_infl(); +} +inline __attribute__ ((__always_inline__)) int __inline_isinff(float __x) { + return __builtin_fabsf(__x) == __builtin_inff(); +} +inline __attribute__ ((__always_inline__)) int __inline_isinfd(double __x) { + return __builtin_fabs(__x) == __builtin_inf(); +} +inline __attribute__ ((__always_inline__)) int __inline_isinfl(long double __x) { + return __builtin_fabsl(__x) == __builtin_infl(); +} +inline __attribute__ ((__always_inline__)) int __inline_isnanf(float __x) { + return __x != __x; +} +inline __attribute__ ((__always_inline__)) int __inline_isnand(double __x) { + return __x != __x; +} +inline __attribute__ ((__always_inline__)) int __inline_isnanl(long double __x) { + return __x != __x; +} +inline __attribute__ ((__always_inline__)) int __inline_signbitf(float __x) { + union { float __f; unsigned int __u; } __u; + __u.__f = __x; + return (int)(__u.__u >> 31); +} +inline __attribute__ ((__always_inline__)) int __inline_signbitd(double __x) { + union { double __f; unsigned long long __u; } __u; + __u.__f = __x; + return (int)(__u.__u >> 63); +} +inline __attribute__ ((__always_inline__)) int __inline_signbitl(long double __x) { + union { long double __f; unsigned long long __u;} __u; + __u.__f = __x; + return (int)(__u.__u >> 63); +} + +inline __attribute__ ((__always_inline__)) int __inline_isnormalf(float __x) { + return __inline_isfinitef(__x) && __builtin_fabsf(__x) >= 1.17549435e-38F; +} +inline __attribute__ ((__always_inline__)) int __inline_isnormald(double __x) { + return __inline_isfinited(__x) && __builtin_fabs(__x) >= 2.2250738585072014e-308; +} +inline __attribute__ ((__always_inline__)) int __inline_isnormall(long double __x) { + return __inline_isfinitel(__x) && __builtin_fabsl(__x) >= 2.2250738585072014e-308L; +} +extern float acosf(float); +extern double acos(double); +extern long double acosl(long double); + +extern float asinf(float); +extern double asin(double); +extern long double asinl(long double); + +extern float atanf(float); +extern double atan(double); +extern long double atanl(long double); + +extern float atan2f(float, float); +extern double atan2(double, double); +extern long double atan2l(long double, long double); + +extern float cosf(float); +extern double cos(double); +extern long double cosl(long double); + +extern float sinf(float); +extern double sin(double); +extern long double sinl(long double); + +extern float tanf(float); +extern double tan(double); +extern long double tanl(long double); + +extern float acoshf(float); +extern double acosh(double); +extern long double acoshl(long double); + +extern float asinhf(float); +extern double asinh(double); +extern long double asinhl(long double); + +extern float atanhf(float); +extern double atanh(double); +extern long double atanhl(long double); + +extern float coshf(float); +extern double cosh(double); +extern long double coshl(long double); + +extern float sinhf(float); +extern double sinh(double); +extern long double sinhl(long double); + +extern float tanhf(float); +extern double tanh(double); +extern long double tanhl(long double); + +extern float expf(float); +extern double exp(double); +extern long double expl(long double); + +extern float exp2f(float); +extern double exp2(double); +extern long double exp2l(long double); + +extern float expm1f(float); +extern double expm1(double); +extern long double expm1l(long double); + +extern float logf(float); +extern double log(double); +extern long double logl(long double); + +extern float log10f(float); +extern double log10(double); +extern long double log10l(long double); + +extern float log2f(float); +extern double log2(double); +extern long double log2l(long double); + +extern float log1pf(float); +extern double log1p(double); +extern long double log1pl(long double); + +extern float logbf(float); +extern double logb(double); +extern long double logbl(long double); + +extern float modff(float, float *); +extern double modf(double, double *); +extern long double modfl(long double, long double *); + +extern float ldexpf(float, int); +extern double ldexp(double, int); +extern long double ldexpl(long double, int); + +extern float frexpf(float, int *); +extern double frexp(double, int *); +extern long double frexpl(long double, int *); + +extern int ilogbf(float); +extern int ilogb(double); +extern int ilogbl(long double); + +extern float scalbnf(float, int); +extern double scalbn(double, int); +extern long double scalbnl(long double, int); + +extern float scalblnf(float, long int); +extern double scalbln(double, long int); +extern long double scalblnl(long double, long int); + +extern float fabsf(float); +extern double fabs(double); +extern long double fabsl(long double); + +extern float cbrtf(float); +extern double cbrt(double); +extern long double cbrtl(long double); + +extern float hypotf(float, float); +extern double hypot(double, double); +extern long double hypotl(long double, long double); + +extern float powf(float, float); +extern double pow(double, double); +extern long double powl(long double, long double); + +extern float sqrtf(float); +extern double sqrt(double); +extern long double sqrtl(long double); + +extern float erff(float); +extern double erf(double); +extern long double erfl(long double); + +extern float erfcf(float); +extern double erfc(double); +extern long double erfcl(long double); + + + + +extern float lgammaf(float); +extern double lgamma(double); +extern long double lgammal(long double); + +extern float tgammaf(float); +extern double tgamma(double); +extern long double tgammal(long double); + +extern float ceilf(float); +extern double ceil(double); +extern long double ceill(long double); + +extern float floorf(float); +extern double floor(double); +extern long double floorl(long double); + +extern float nearbyintf(float); +extern double nearbyint(double); +extern long double nearbyintl(long double); + +extern float rintf(float); +extern double rint(double); +extern long double rintl(long double); + +extern long int lrintf(float); +extern long int lrint(double); +extern long int lrintl(long double); + +extern float roundf(float); +extern double round(double); +extern long double roundl(long double); + +extern long int lroundf(float); +extern long int lround(double); +extern long int lroundl(long double); + + + + +extern long long int llrintf(float); +extern long long int llrint(double); +extern long long int llrintl(long double); + +extern long long int llroundf(float); +extern long long int llround(double); +extern long long int llroundl(long double); + + +extern float truncf(float); +extern double trunc(double); +extern long double truncl(long double); + +extern float fmodf(float, float); +extern double fmod(double, double); +extern long double fmodl(long double, long double); + +extern float remainderf(float, float); +extern double remainder(double, double); +extern long double remainderl(long double, long double); + +extern float remquof(float, float, int *); +extern double remquo(double, double, int *); +extern long double remquol(long double, long double, int *); + +extern float copysignf(float, float); +extern double copysign(double, double); +extern long double copysignl(long double, long double); + +extern float nanf(const char *); +extern double nan(const char *); +extern long double nanl(const char *); + +extern float nextafterf(float, float); +extern double nextafter(double, double); +extern long double nextafterl(long double, long double); + +extern double nexttoward(double, long double); +extern float nexttowardf(float, long double); +extern long double nexttowardl(long double, long double); + +extern float fdimf(float, float); +extern double fdim(double, double); +extern long double fdiml(long double, long double); + +extern float fmaxf(float, float); +extern double fmax(double, double); +extern long double fmaxl(long double, long double); + +extern float fminf(float, float); +extern double fmin(double, double); +extern long double fminl(long double, long double); + +extern float fmaf(float, float, float); +extern double fma(double, double, double); +extern long double fmal(long double, long double, long double); +extern float __inff(void) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `(float)INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern double __inf(void) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern long double __infl(void) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="use `(long double)INFINITY` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern float __nan(void) +__attribute__((availability(macos,introduced=10.0,deprecated=10.14,message="use `NAN` instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern float __exp10f(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern double __exp10(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); + + + + + +inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp); +inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp); +extern float __cospif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern double __cospi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern float __sinpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern double __sinpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern float __tanpif(float) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern double __tanpi(double) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp); +inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp); + + + + + + +struct __float2 { float __sinval; float __cosval; }; +struct __double2 { double __sinval; double __cosval; }; + +extern struct __float2 __sincosf_stret(float); +extern struct __double2 __sincos_stret(double); +extern struct __float2 __sincospif_stret(float); +extern struct __double2 __sincospi_stret(double); + +inline __attribute__ ((__always_inline__)) void __sincosf(float __x, float *__sinp, float *__cosp) { + const struct __float2 __stret = __sincosf_stret(__x); + *__sinp = __stret.__sinval; *__cosp = __stret.__cosval; +} + +inline __attribute__ ((__always_inline__)) void __sincos(double __x, double *__sinp, double *__cosp) { + const struct __double2 __stret = __sincos_stret(__x); + *__sinp = __stret.__sinval; *__cosp = __stret.__cosval; +} + +inline __attribute__ ((__always_inline__)) void __sincospif(float __x, float *__sinp, float *__cosp) { + const struct __float2 __stret = __sincospif_stret(__x); + *__sinp = __stret.__sinval; *__cosp = __stret.__cosval; +} + +inline __attribute__ ((__always_inline__)) void __sincospi(double __x, double *__sinp, double *__cosp) { + const struct __double2 __stret = __sincospi_stret(__x); + *__sinp = __stret.__sinval; *__cosp = __stret.__cosval; +} + + + + + + + +extern double j0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double j1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double jn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double y0(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double y1(double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double yn(int, double) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))); +extern double scalb(double, double); +extern int signgam; +extern long int rinttol(double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="lrint"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern long int roundtol(double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="lround"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern double drem(double, double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="remainder"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern int finite(double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use `isfinite((double)x)` instead."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern double gamma(double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,replacement="tgamma"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern double significand(double) +__attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use `2*frexp( )` or `scalbn(x, -ilogb(x))` instead."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +} +typedef int jmp_buf[((14 + 8 + 2) * 2)]; +typedef int sigjmp_buf[((14 + 8 + 2) * 2) + 1]; + + + + + +extern "C" { +extern int setjmp(jmp_buf); +extern void longjmp(jmp_buf, int) __attribute__((__noreturn__)); + + +int _setjmp(jmp_buf); +void _longjmp(jmp_buf, int) __attribute__((__noreturn__)); +int sigsetjmp(sigjmp_buf, int); +void siglongjmp(sigjmp_buf, int) __attribute__((__noreturn__)); + + + +void longjmperror(void); + +} +extern const char *const sys_signame[32]; +extern const char *const sys_siglist[32]; + + +extern "C" { +int raise(int); +} + + +extern "C" { +void (* _Nullable bsd_signal(int, void (* _Nullable)(int)))(int); +int kill(pid_t, int) __asm("_" "kill" ); +int killpg(pid_t, int) __asm("_" "killpg" ); +int pthread_kill(pthread_t, int); +int pthread_sigmask(int, const sigset_t *, sigset_t *) __asm("_" "pthread_sigmask" ); +int sigaction(int, const struct sigaction * , + struct sigaction * ); +int sigaddset(sigset_t *, int); +int sigaltstack(const stack_t * , stack_t * ) __asm("_" "sigaltstack" ) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int sigdelset(sigset_t *, int); +int sigemptyset(sigset_t *); +int sigfillset(sigset_t *); +int sighold(int); +int sigignore(int); +int siginterrupt(int, int); +int sigismember(const sigset_t *, int); +int sigpause(int) __asm("_" "sigpause" ); +int sigpending(sigset_t *); +int sigprocmask(int, const sigset_t * , sigset_t * ); +int sigrelse(int); +void (* _Nullable sigset(int, void (* _Nullable)(int)))(int); +int sigsuspend(const sigset_t *) __asm("_" "sigsuspend" ); +int sigwait(const sigset_t * , int * ) __asm("_" "sigwait" ); + +void psignal(unsigned int, const char *); +int sigblock(int); +int sigsetmask(int); +int sigvec(int, struct sigvec *, struct sigvec *); + +} +typedef long int ptrdiff_t; +typedef __darwin_va_list va_list; + + + +extern "C" { + +int renameat(int, const char *, int, const char *) __attribute__((availability(ios,introduced=8.0))); + + + + + + +int renamex_np(const char *, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +int renameatx_np(int, const char *, int, const char *, unsigned int) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + + + +} + +typedef __darwin_off_t fpos_t; +struct __sbuf { + unsigned char *_base; + int _size; +}; + + +struct __sFILEX; +typedef struct __sFILE { + unsigned char *_p; + int _r; + int _w; + short _flags; + short _file; + struct __sbuf _bf; + int _lbfsize; + + + void *_cookie; + int (* _Nullable _close)(void *); + int (* _Nullable _read) (void *, char *, int); + fpos_t (* _Nullable _seek) (void *, fpos_t, int); + int (* _Nullable _write)(void *, const char *, int); + + + struct __sbuf _ub; + struct __sFILEX *_extra; + int _ur; + + + unsigned char _ubuf[3]; + unsigned char _nbuf[1]; + + + struct __sbuf _lb; + + + int _blksize; + fpos_t _offset; +} FILE; + +extern "C" { +extern FILE *__stdinp; +extern FILE *__stdoutp; +extern FILE *__stderrp; +} +extern "C" { +void clearerr(FILE *); +int fclose(FILE *); +int feof(FILE *); +int ferror(FILE *); +int fflush(FILE *); +int fgetc(FILE *); +int fgetpos(FILE * , fpos_t *); +char *fgets(char * , int, FILE *); + + + +FILE *fopen(const char * __filename, const char * __mode) __asm("_" "fopen" ); + +int fprintf(FILE * , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))); +int fputc(int, FILE *); +int fputs(const char * , FILE * ) __asm("_" "fputs" ); +size_t fread(void * __ptr, size_t __size, size_t __nitems, FILE * __stream); +FILE *freopen(const char * , const char * , + FILE * ) __asm("_" "freopen" ); +int fscanf(FILE * , const char * , ...) __attribute__((__format__ (__scanf__, 2, 3))); +int fseek(FILE *, long, int); +int fsetpos(FILE *, const fpos_t *); +long ftell(FILE *); +size_t fwrite(const void * __ptr, size_t __size, size_t __nitems, FILE * __stream) __asm("_" "fwrite" ); +int getc(FILE *); +int getchar(void); +char *gets(char *); +void perror(const char *) __attribute__((__cold__)); +int printf(const char * , ...) __attribute__((__format__ (__printf__, 1, 2))); +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 * , ...) __attribute__((__format__ (__scanf__, 1, 2))); +void setbuf(FILE * , char * ); +int setvbuf(FILE * , char * , int, size_t); +int sprintf(char * , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((__availability__(swift, unavailable, message="Use snprintf instead."))); +int sscanf(const char * , const char * , ...) __attribute__((__format__ (__scanf__, 2, 3))); +FILE *tmpfile(void); + +__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead."))) + +__attribute__((__deprecated__("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."))) + +char *tmpnam(char *); +int ungetc(int, FILE *); +int vfprintf(FILE * , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))); +int vprintf(const char * , va_list) __attribute__((__format__ (__printf__, 1, 0))); +int vsprintf(char * , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((__availability__(swift, unavailable, message="Use vsnprintf instead."))); +} +extern "C" { + +char *ctermid(char *); + + + + +FILE *fdopen(int, const char *) __asm("_" "fdopen" ); + +int fileno(FILE *); +} +extern "C" { +int pclose(FILE *) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))); + + + +FILE *popen(const char *, const char *) __asm("_" "popen" ) __attribute__((__availability__(swift, unavailable, message="Use posix_spawn APIs or NSTask instead."))); + +} +extern "C" { +int __srget(FILE *); +int __svfscanf(FILE *, const char *, va_list) __attribute__((__format__ (__scanf__, 2, 0))); +int __swbuf(int, FILE *); +} + + + + + + + +inline __attribute__ ((__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)); +} +extern "C" { +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); + + + +int getw(FILE *); +int putw(int, FILE *); + + +__attribute__((__availability__(swift, unavailable, message="Use mkstemp(3) instead."))) + +__attribute__((__deprecated__("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."))) + +char *tempnam(const char *__dir, const char *__prefix) __asm("_" "tempnam" ); +} +extern "C" { +int fseeko(FILE * __stream, off_t __offset, int __whence); +off_t ftello(FILE * __stream); +} + + + +extern "C" { +int snprintf(char * __str, size_t __size, const char * __format, ...) __attribute__((__format__ (__printf__, 3, 4))); +int vfscanf(FILE * __stream, const char * __format, va_list) __attribute__((__format__ (__scanf__, 2, 0))); +int vscanf(const char * __format, va_list) __attribute__((__format__ (__scanf__, 1, 0))); +int vsnprintf(char * __str, size_t __size, const char * __format, va_list) __attribute__((__format__ (__printf__, 3, 0))); +int vsscanf(const char * __str, const char * __format, va_list) __attribute__((__format__ (__scanf__, 2, 0))); +} +extern "C" { +int dprintf(int, const char * , ...) __attribute__((__format__ (__printf__, 2, 3))) __attribute__((availability(ios,introduced=4.3))); +int vdprintf(int, const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))) __attribute__((availability(ios,introduced=4.3))); +ssize_t getdelim(char ** __linep, size_t * __linecapp, int __delimiter, FILE * __stream) __attribute__((availability(ios,introduced=4.3))); +ssize_t getline(char ** __linep, size_t * __linecapp, FILE * __stream) __attribute__((availability(ios,introduced=4.3))); +FILE *fmemopen(void * __buf, size_t __size, const char * __mode) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +FILE *open_memstream(char **__bufp, size_t *__sizep) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +} + + + + + + + +extern "C" { +extern const int sys_nerr; +extern const char *const sys_errlist[]; + +int asprintf(char ** , const char * , ...) __attribute__((__format__ (__printf__, 2, 3))); +char *ctermid_r(char *); +char *fgetln(FILE *, size_t *); +const char *fmtcheck(const char *, const char *); +int fpurge(FILE *); +void setbuffer(FILE *, char *, int); +int setlinebuf(FILE *); +int vasprintf(char ** , const char * , va_list) __attribute__((__format__ (__printf__, 2, 0))); +FILE *zopen(const char *, const char *, int); + + + + + +FILE *funopen(const void *, + int (* _Nullable)(void *, char *, int), + int (* _Nullable)(void *, const char *, int), + fpos_t (* _Nullable)(void *, fpos_t, int), + int (* _Nullable)(void *)); +} + +extern "C" { +void *memchr(const void *__s, int __c, size_t __n); +int memcmp(const void *__s1, const void *__s2, size_t __n); +void *memcpy(void *__dst, const void *__src, size_t __n); +void *memmove(void *__dst, const void *__src, size_t __len); +void *memset(void *__b, int __c, size_t __len); +char *strcat(char *__s1, const char *__s2); +char *strchr(const char *__s, int __c); +int strcmp(const char *__s1, const char *__s2); +int strcoll(const char *__s1, const char *__s2); +char *strcpy(char *__dst, const char *__src); +size_t strcspn(const char *__s, const char *__charset); +char *strerror(int __errnum) __asm("_" "strerror" ); +size_t strlen(const char *__s); +char *strncat(char *__s1, const char *__s2, size_t __n); +int strncmp(const char *__s1, const char *__s2, size_t __n); +char *strncpy(char *__dst, const char *__src, size_t __n); +char *strpbrk(const char *__s, const char *__charset); +char *strrchr(const char *__s, int __c); +size_t strspn(const char *__s, const char *__charset); +char *strstr(const char *__big, const char *__little); +char *strtok(char *__str, const char *__sep); +size_t strxfrm(char *__s1, const char *__s2, size_t __n); +} +extern "C" { +char *strtok_r(char *__str, const char *__sep, char **__lasts); +} +extern "C" { +int strerror_r(int __errnum, char *__strerrbuf, size_t __buflen); +char *strdup(const char *__s1); +void *memccpy(void *__dst, const void *__src, int __c, size_t __n); +} +extern "C" { +char *stpcpy(char *__dst, const char *__src); +char *stpncpy(char *__dst, const char *__src, size_t __n) __attribute__((availability(ios,introduced=4.3))); +char *strndup(const char *__s1, size_t __n) __attribute__((availability(ios,introduced=4.3))); +size_t strnlen(const char *__s1, size_t __n) __attribute__((availability(ios,introduced=4.3))); +char *strsignal(int __sig); +} +extern "C" { +errno_t memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __attribute__((availability(ios,introduced=7.0))); +} + + + + + + + +extern "C" { +void *memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __attribute__((availability(ios,introduced=4.3))); +void memset_pattern4(void *__b, const void *__pattern4, size_t __len) __attribute__((availability(ios,introduced=3.0))); +void memset_pattern8(void *__b, const void *__pattern8, size_t __len) __attribute__((availability(ios,introduced=3.0))); +void memset_pattern16(void *__b, const void *__pattern16, size_t __len) __attribute__((availability(ios,introduced=3.0))); + +char *strcasestr(const char *__big, const char *__little); +char *strnstr(const char *__big, const char *__little, size_t __len); +size_t strlcat(char *__dst, const char *__source, size_t __size); +size_t strlcpy(char *__dst, const char *__source, size_t __size); +void strmode(int __mode, char *__bp); +char *strsep(char **__stringp, const char *__delim); + + +void swab(const void * , void * , ssize_t); + +__attribute__((availability(macosx,introduced=10.12.1))) __attribute__((availability(ios,introduced=10.1))) +__attribute__((availability(tvos,introduced=10.0.1))) __attribute__((availability(watchos,introduced=3.1))) +int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len); +} + + + + + + + +extern "C" { + + +int bcmp(const void *, const void *, size_t) ; +void bcopy(const void *, void *, size_t) ; +void bzero(void *, size_t) ; +char *index(const char *, int) ; +char *rindex(const char *, int) ; + + +int ffs(int); +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, size_t); +} + + + +extern "C" { +int ffsl(long) __attribute__((availability(ios,introduced=2.0))); +int ffsll(long long) __attribute__((availability(ios,introduced=7.0))); +int fls(int) __attribute__((availability(ios,introduced=2.0))); +int flsl(long) __attribute__((availability(ios,introduced=2.0))); +int flsll(long long) __attribute__((availability(ios,introduced=7.0))); +} + + +struct timespec +{ + __darwin_time_t tv_sec; + long tv_nsec; +}; + +struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; + long tm_gmtoff; + char *tm_zone; +}; +extern char *tzname[]; + + +extern int getdate_err; + +extern long timezone __asm("_" "timezone" ); + +extern int daylight; + +extern "C" { +char *asctime(const struct tm *); +clock_t clock(void) __asm("_" "clock" ); +char *ctime(const time_t *); +double difftime(time_t, time_t); +struct tm *getdate(const char *); +struct tm *gmtime(const time_t *); +struct tm *localtime(const time_t *); +time_t mktime(struct tm *) __asm("_" "mktime" ); +size_t strftime(char * , size_t, const char * , const struct tm * ) __asm("_" "strftime" ); +char *strptime(const char * , const char * , struct tm * ) __asm("_" "strptime" ); +time_t time(time_t *); + + +void tzset(void); + + + +char *asctime_r(const struct tm * , char * ); +char *ctime_r(const time_t *, char *); +struct tm *gmtime_r(const time_t * , struct tm * ); +struct tm *localtime_r(const time_t * , struct tm * ); + + +time_t posix2time(time_t); + + + +void tzsetwall(void); +time_t time2posix(time_t); +time_t timelocal(struct tm * const); +time_t timegm(struct tm * const); + + + +int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) __asm("_" "nanosleep" ); +typedef enum { +_CLOCK_REALTIME __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 0, + +_CLOCK_MONOTONIC __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 6, + + +_CLOCK_MONOTONIC_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 4, + +_CLOCK_MONOTONIC_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 5, + +_CLOCK_UPTIME_RAW __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 8, + +_CLOCK_UPTIME_RAW_APPROX __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 9, + + +_CLOCK_PROCESS_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 12, + +_CLOCK_THREAD_CPUTIME_ID __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 16 + +} clockid_t; + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +int clock_getres(clockid_t __clock_id, struct timespec *__res); + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +int clock_gettime(clockid_t __clock_id, struct timespec *__tp); + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +__uint64_t clock_gettime_nsec_np(clockid_t __clock_id); + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) +__attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +int clock_settime(clockid_t __clock_id, const struct timespec *__tp); +} + + + + + +extern "C" { + + + + + +extern "C" void *_Block_copy(const void *aBlock) + __attribute__((availability(ios,introduced=3.2))); + + +extern "C" void _Block_release(const void *aBlock) + __attribute__((availability(ios,introduced=3.2))); + + + +extern "C" void _Block_object_assign(void *, const void *, const int) + __attribute__((availability(ios,introduced=3.2))); + + +extern "C" void _Block_object_dispose(const void *, const int) + __attribute__((availability(ios,introduced=3.2))); + + +extern "C" void * _NSConcreteGlobalBlock[32] + __attribute__((availability(ios,introduced=3.2))); +extern "C" void * _NSConcreteStackBlock[32] + __attribute__((availability(ios,introduced=3.2))); + + + +} + + + + +extern "C" { + + +#pragma pack(push, 2) +typedef unsigned char UInt8; +typedef signed char SInt8; +typedef unsigned short UInt16; +typedef signed short SInt16; + + +typedef unsigned int UInt32; +typedef signed int SInt32; +struct wide { + UInt32 lo; + SInt32 hi; +}; +typedef struct wide wide; +struct UnsignedWide { + UInt32 lo; + UInt32 hi; +}; +typedef struct UnsignedWide UnsignedWide; + typedef signed long long SInt64; + typedef unsigned long long UInt64; +typedef SInt32 Fixed; +typedef Fixed * FixedPtr; +typedef SInt32 Fract; +typedef Fract * FractPtr; +typedef UInt32 UnsignedFixed; +typedef UnsignedFixed * UnsignedFixedPtr; +typedef short ShortFixed; +typedef ShortFixed * ShortFixedPtr; +typedef float Float32; +typedef double Float64; +struct Float80 { + SInt16 exp; + UInt16 man[4]; +}; +typedef struct Float80 Float80; + +struct Float96 { + SInt16 exp[2]; + UInt16 man[4]; +}; +typedef struct Float96 Float96; +struct Float32Point { + Float32 x; + Float32 y; +}; +typedef struct Float32Point Float32Point; +typedef char * Ptr; +typedef Ptr * Handle; +typedef long Size; +typedef SInt16 OSErr; +typedef SInt32 OSStatus; +typedef void * LogicalAddress; +typedef const void * ConstLogicalAddress; +typedef void * PhysicalAddress; +typedef UInt8 * BytePtr; +typedef unsigned long ByteCount; +typedef unsigned long ByteOffset; +typedef SInt32 Duration; +typedef UnsignedWide AbsoluteTime; +typedef UInt32 OptionBits; +typedef unsigned long ItemCount; +typedef UInt32 PBVersion; +typedef SInt16 ScriptCode; +typedef SInt16 LangCode; +typedef SInt16 RegionCode; +typedef UInt32 FourCharCode; +typedef FourCharCode OSType; +typedef FourCharCode ResType; +typedef OSType * OSTypePtr; +typedef ResType * ResTypePtr; +typedef unsigned char Boolean; +typedef long ( * ProcPtr)(void); +typedef void ( * Register68kProcPtr)(void); + + + + +typedef ProcPtr UniversalProcPtr; + + +typedef ProcPtr * ProcHandle; +typedef UniversalProcPtr * UniversalProcHandle; +typedef void * PRefCon; + +typedef void * URefCon; +typedef void * SRefCon; +enum { + noErr = 0 +}; + +enum { + kNilOptions = 0 +}; + + +enum { + kVariableLengthArray + + + __attribute__((deprecated)) + + + = 1 +}; + +enum { + kUnknownType = 0x3F3F3F3F +}; +typedef UInt32 UnicodeScalarValue; +typedef UInt32 UTF32Char; +typedef UInt16 UniChar; +typedef UInt16 UTF16Char; +typedef UInt8 UTF8Char; +typedef UniChar * UniCharPtr; +typedef unsigned long UniCharCount; +typedef UniCharCount * UniCharCountPtr; +typedef unsigned char Str255[256]; +typedef unsigned char Str63[64]; +typedef unsigned char Str32[33]; +typedef unsigned char Str31[32]; +typedef unsigned char Str27[28]; +typedef unsigned char Str15[16]; +typedef unsigned char Str32Field[34]; +typedef Str63 StrFileName; +typedef unsigned char * StringPtr; +typedef StringPtr * StringHandle; +typedef const unsigned char * ConstStringPtr; +typedef const unsigned char * ConstStr255Param; +typedef const unsigned char * ConstStr63Param; +typedef const unsigned char * ConstStr32Param; +typedef const unsigned char * ConstStr31Param; +typedef const unsigned char * ConstStr27Param; +typedef const unsigned char * ConstStr15Param; +typedef ConstStr63Param ConstStrFileNameParam; + +inline unsigned char StrLength(ConstStr255Param string) { return (*string); } +struct ProcessSerialNumber { + UInt32 highLongOfPSN; + UInt32 lowLongOfPSN; +}; +typedef struct ProcessSerialNumber ProcessSerialNumber; +typedef ProcessSerialNumber * ProcessSerialNumberPtr; +struct Point { + short v; + short h; +}; +typedef struct Point Point; +typedef Point * PointPtr; +struct Rect { + short top; + short left; + short bottom; + short right; +}; +typedef struct Rect Rect; +typedef Rect * RectPtr; +struct FixedPoint { + Fixed x; + Fixed y; +}; +typedef struct FixedPoint FixedPoint; +struct FixedRect { + Fixed left; + Fixed top; + Fixed right; + Fixed bottom; +}; +typedef struct FixedRect FixedRect; + +typedef short CharParameter; +enum { + normal = 0, + bold = 1, + italic = 2, + underline = 4, + outline = 8, + shadow = 0x10, + condense = 0x20, + extend = 0x40 +}; + +typedef unsigned char Style; +typedef short StyleParameter; +typedef Style StyleField; +typedef SInt32 TimeValue; +typedef SInt32 TimeScale; +typedef wide CompTimeValue; +typedef SInt64 TimeValue64; +typedef struct TimeBaseRecord* TimeBase; +struct TimeRecord { + CompTimeValue value; + TimeScale scale; + TimeBase base; +}; +typedef struct TimeRecord TimeRecord; +struct NumVersion { + + UInt8 nonRelRev; + UInt8 stage; + UInt8 minorAndBugRev; + UInt8 majorRev; +}; +typedef struct NumVersion NumVersion; + + +enum { + + developStage = 0x20, + alphaStage = 0x40, + betaStage = 0x60, + finalStage = 0x80 +}; + +union NumVersionVariant { + + NumVersion parts; + UInt32 whole; +}; +typedef union NumVersionVariant NumVersionVariant; +typedef NumVersionVariant * NumVersionVariantPtr; +typedef NumVersionVariantPtr * NumVersionVariantHandle; +struct VersRec { + + NumVersion numericVersion; + short countryCode; + Str255 shortVersion; + Str255 reserved; +}; +typedef struct VersRec VersRec; +typedef VersRec * VersRecPtr; +typedef VersRecPtr * VersRecHndl; + + + + + +typedef UInt8 Byte; +typedef SInt8 SignedByte; +typedef wide * WidePtr; +typedef UnsignedWide * UnsignedWidePtr; +typedef Float80 extended80; +typedef Float96 extended96; +typedef SInt8 VHSelect; +extern void +Debugger(void) __attribute__((availability(ios,unavailable))); +extern void +DebugStr(ConstStr255Param debuggerMsg) __attribute__((availability(ios,unavailable))); +extern void +SysBreak(void) __attribute__((availability(ios,unavailable))); +extern void +SysBreakStr(ConstStr255Param debuggerMsg) __attribute__((availability(ios,unavailable))); +extern void +SysBreakFunc(ConstStr255Param debuggerMsg) __attribute__((availability(ios,unavailable))); +#pragma pack(pop) + + +} +extern "C" { +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSAttributedString; +#ifndef _REWRITER_typedef_NSAttributedString +#define _REWRITER_typedef_NSAttributedString +typedef struct objc_object NSAttributedString; +typedef struct {} _objc_exc_NSAttributedString; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSNull; +#ifndef _REWRITER_typedef_NSNull +#define _REWRITER_typedef_NSNull +typedef struct objc_object NSNull; +typedef struct {} _objc_exc_NSNull; +#endif + +// @class NSCharacterSet; +#ifndef _REWRITER_typedef_NSCharacterSet +#define _REWRITER_typedef_NSCharacterSet +typedef struct objc_object NSCharacterSet; +typedef struct {} _objc_exc_NSCharacterSet; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @class NSDate; +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +// @class NSTimeZone; +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @class NSLocale; +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +// @class NSNumber; +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +// @class NSSet; +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +extern double kCFCoreFoundationVersionNumber; +typedef unsigned long CFTypeID; +typedef unsigned long CFOptionFlags; +typedef unsigned long CFHashCode; +typedef signed long CFIndex; + + + +typedef const __attribute__((objc_bridge(id))) void * CFTypeRef; + +typedef const struct __attribute__((objc_bridge(NSString))) __CFString * CFStringRef; +typedef struct __attribute__((objc_bridge_mutable(NSMutableString))) __CFString * CFMutableStringRef; + + + + + + +typedef __attribute__((objc_bridge(id))) CFTypeRef CFPropertyListRef; + + +typedef CFIndex CFComparisonResult; enum { + kCFCompareLessThan = -1L, + kCFCompareEqualTo = 0, + kCFCompareGreaterThan = 1 +}; + + +typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context); + + +static const CFIndex kCFNotFound = -1; + + + +typedef struct { + CFIndex location; + CFIndex length; +} CFRange; + + +static __inline__ __attribute__((always_inline)) CFRange CFRangeMake(CFIndex loc, CFIndex len) { + CFRange range; + range.location = loc; + range.length = len; + return range; +} + + + + + +extern +CFRange __CFRangeMake(CFIndex loc, CFIndex len); + + + + +typedef const struct __attribute__((objc_bridge(NSNull))) __CFNull * CFNullRef; + +extern +CFTypeID CFNullGetTypeID(void); + +extern +const CFNullRef kCFNull; +typedef const struct __attribute__((objc_bridge(id))) __CFAllocator * CFAllocatorRef; + + +extern +const CFAllocatorRef kCFAllocatorDefault; + + +extern +const CFAllocatorRef kCFAllocatorSystemDefault; + + + + + + + +extern +const CFAllocatorRef kCFAllocatorMalloc; + + + + + +extern +const CFAllocatorRef kCFAllocatorMallocZone; + + + + + +extern +const CFAllocatorRef kCFAllocatorNull; + + + + + +extern +const CFAllocatorRef kCFAllocatorUseContext; + +typedef const void * (*CFAllocatorRetainCallBack)(const void *info); +typedef void (*CFAllocatorReleaseCallBack)(const void *info); +typedef CFStringRef (*CFAllocatorCopyDescriptionCallBack)(const void *info); +typedef void * (*CFAllocatorAllocateCallBack)(CFIndex allocSize, CFOptionFlags hint, void *info); +typedef void * (*CFAllocatorReallocateCallBack)(void *ptr, CFIndex newsize, CFOptionFlags hint, void *info); +typedef void (*CFAllocatorDeallocateCallBack)(void *ptr, void *info); +typedef CFIndex (*CFAllocatorPreferredSizeCallBack)(CFIndex size, CFOptionFlags hint, void *info); +typedef struct { + CFIndex version; + void * info; + CFAllocatorRetainCallBack retain; + CFAllocatorReleaseCallBack release; + CFAllocatorCopyDescriptionCallBack copyDescription; + CFAllocatorAllocateCallBack allocate; + CFAllocatorReallocateCallBack reallocate; + CFAllocatorDeallocateCallBack deallocate; + CFAllocatorPreferredSizeCallBack preferredSize; +} CFAllocatorContext; + +extern +CFTypeID CFAllocatorGetTypeID(void); +extern +void CFAllocatorSetDefault(CFAllocatorRef allocator); + +extern +CFAllocatorRef CFAllocatorGetDefault(void); + +extern +CFAllocatorRef CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorContext *context); + +extern +void *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint); + +extern +void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint); + +extern +void CFAllocatorDeallocate(CFAllocatorRef allocator, void *ptr); + +extern +CFIndex CFAllocatorGetPreferredSizeForSize(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint); + +extern +void CFAllocatorGetContext(CFAllocatorRef allocator, CFAllocatorContext *context); + + + + + + +extern +CFTypeID CFGetTypeID(CFTypeRef cf); + +extern +CFStringRef CFCopyTypeIDDescription(CFTypeID type_id); + +extern +CFTypeRef CFRetain(CFTypeRef cf); + +extern +void CFRelease(CFTypeRef cf); + + + +extern +CFTypeRef CFAutorelease(CFTypeRef __attribute__((cf_consumed)) arg) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFIndex CFGetRetainCount(CFTypeRef cf); + + +extern +Boolean CFEqual(CFTypeRef cf1, CFTypeRef cf2); + +extern +CFHashCode CFHash(CFTypeRef cf); + +extern +CFStringRef CFCopyDescription(CFTypeRef cf); + +extern +CFAllocatorRef CFGetAllocator(CFTypeRef cf); + + + + +extern +CFTypeRef CFMakeCollectable(CFTypeRef cf) ; + + + + + + + +} +extern "C" { +typedef const void * (*CFArrayRetainCallBack)(CFAllocatorRef allocator, const void *value); +typedef void (*CFArrayReleaseCallBack)(CFAllocatorRef allocator, const void *value); +typedef CFStringRef (*CFArrayCopyDescriptionCallBack)(const void *value); +typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2); +typedef struct { + CFIndex version; + CFArrayRetainCallBack retain; + CFArrayReleaseCallBack release; + CFArrayCopyDescriptionCallBack copyDescription; + CFArrayEqualCallBack equal; +} CFArrayCallBacks; + + + + + + +extern +const CFArrayCallBacks kCFTypeArrayCallBacks; +typedef void (*CFArrayApplierFunction)(const void *value, void *context); + + + + + +typedef const struct __attribute__((objc_bridge(NSArray))) __CFArray * CFArrayRef; + + + + + +typedef struct __attribute__((objc_bridge_mutable(NSMutableArray))) __CFArray * CFMutableArrayRef; + + + + + +extern +CFTypeID CFArrayGetTypeID(void); +extern +CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks); +extern +CFArrayRef CFArrayCreateCopy(CFAllocatorRef allocator, CFArrayRef theArray); +extern +CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks); +extern +CFMutableArrayRef CFArrayCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFArrayRef theArray); +extern +CFIndex CFArrayGetCount(CFArrayRef theArray); +extern +CFIndex CFArrayGetCountOfValue(CFArrayRef theArray, CFRange range, const void *value); +extern +Boolean CFArrayContainsValue(CFArrayRef theArray, CFRange range, const void *value); +extern +const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx); +extern +void CFArrayGetValues(CFArrayRef theArray, CFRange range, const void **values); +extern +void CFArrayApplyFunction(CFArrayRef theArray, CFRange range, CFArrayApplierFunction __attribute__((noescape)) applier, void *context); +extern +CFIndex CFArrayGetFirstIndexOfValue(CFArrayRef theArray, CFRange range, const void *value); +extern +CFIndex CFArrayGetLastIndexOfValue(CFArrayRef theArray, CFRange range, const void *value); +extern +CFIndex CFArrayBSearchValues(CFArrayRef theArray, CFRange range, const void *value, CFComparatorFunction comparator, void *context); +extern +void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value); +extern +void CFArrayInsertValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value); +extern +void CFArraySetValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value); +extern +void CFArrayRemoveValueAtIndex(CFMutableArrayRef theArray, CFIndex idx); +extern +void CFArrayRemoveAllValues(CFMutableArrayRef theArray); +extern +void CFArrayReplaceValues(CFMutableArrayRef theArray, CFRange range, const void **newValues, CFIndex newCount); +extern +void CFArrayExchangeValuesAtIndices(CFMutableArrayRef theArray, CFIndex idx1, CFIndex idx2); +extern +void CFArraySortValues(CFMutableArrayRef theArray, CFRange range, CFComparatorFunction comparator, void *context); +extern +void CFArrayAppendArray(CFMutableArrayRef theArray, CFArrayRef otherArray, CFRange otherRange); + +} +extern "C" { + +typedef const void * (*CFBagRetainCallBack)(CFAllocatorRef allocator, const void *value); +typedef void (*CFBagReleaseCallBack)(CFAllocatorRef allocator, const void *value); +typedef CFStringRef (*CFBagCopyDescriptionCallBack)(const void *value); +typedef Boolean (*CFBagEqualCallBack)(const void *value1, const void *value2); +typedef CFHashCode (*CFBagHashCallBack)(const void *value); +typedef struct { + CFIndex version; + CFBagRetainCallBack retain; + CFBagReleaseCallBack release; + CFBagCopyDescriptionCallBack copyDescription; + CFBagEqualCallBack equal; + CFBagHashCallBack hash; +} CFBagCallBacks; + +extern +const CFBagCallBacks kCFTypeBagCallBacks; +extern +const CFBagCallBacks kCFCopyStringBagCallBacks; + +typedef void (*CFBagApplierFunction)(const void *value, void *context); + +typedef const struct __attribute__((objc_bridge(id))) __CFBag * CFBagRef; +typedef struct __attribute__((objc_bridge_mutable(id))) __CFBag * CFMutableBagRef; + +extern +CFTypeID CFBagGetTypeID(void); + +extern +CFBagRef CFBagCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFBagCallBacks *callBacks); + +extern +CFBagRef CFBagCreateCopy(CFAllocatorRef allocator, CFBagRef theBag); + +extern +CFMutableBagRef CFBagCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFBagCallBacks *callBacks); + +extern +CFMutableBagRef CFBagCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBagRef theBag); + +extern +CFIndex CFBagGetCount(CFBagRef theBag); + +extern +CFIndex CFBagGetCountOfValue(CFBagRef theBag, const void *value); + +extern +Boolean CFBagContainsValue(CFBagRef theBag, const void *value); + +extern +const void *CFBagGetValue(CFBagRef theBag, const void *value); + +extern +Boolean CFBagGetValueIfPresent(CFBagRef theBag, const void *candidate, const void **value); + +extern +void CFBagGetValues(CFBagRef theBag, const void **values); + +extern +void CFBagApplyFunction(CFBagRef theBag, CFBagApplierFunction __attribute__((noescape)) applier, void *context); + +extern +void CFBagAddValue(CFMutableBagRef theBag, const void *value); + +extern +void CFBagReplaceValue(CFMutableBagRef theBag, const void *value); + +extern +void CFBagSetValue(CFMutableBagRef theBag, const void *value); + +extern +void CFBagRemoveValue(CFMutableBagRef theBag, const void *value); + +extern +void CFBagRemoveAllValues(CFMutableBagRef theBag); + +} +extern "C" { + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFBinaryHeapCompareContext; +typedef struct { + CFIndex version; + const void *(*retain)(CFAllocatorRef allocator, const void *ptr); + void (*release)(CFAllocatorRef allocator, const void *ptr); + CFStringRef (*copyDescription)(const void *ptr); + CFComparisonResult (*compare)(const void *ptr1, const void *ptr2, void *context); +} CFBinaryHeapCallBacks; + + + + + + + +extern const CFBinaryHeapCallBacks kCFStringBinaryHeapCallBacks; +typedef void (*CFBinaryHeapApplierFunction)(const void *val, void *context); + + + + + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFBinaryHeap * CFBinaryHeapRef; + + + + + +extern CFTypeID CFBinaryHeapGetTypeID(void); +extern CFBinaryHeapRef CFBinaryHeapCreate(CFAllocatorRef allocator, CFIndex capacity, const CFBinaryHeapCallBacks *callBacks, const CFBinaryHeapCompareContext *compareContext); +extern CFBinaryHeapRef CFBinaryHeapCreateCopy(CFAllocatorRef allocator, CFIndex capacity, CFBinaryHeapRef heap); +extern CFIndex CFBinaryHeapGetCount(CFBinaryHeapRef heap); +extern CFIndex CFBinaryHeapGetCountOfValue(CFBinaryHeapRef heap, const void *value); +extern Boolean CFBinaryHeapContainsValue(CFBinaryHeapRef heap, const void *value); +extern const void * CFBinaryHeapGetMinimum(CFBinaryHeapRef heap); +extern Boolean CFBinaryHeapGetMinimumIfPresent(CFBinaryHeapRef heap, const void **value); +extern void CFBinaryHeapGetValues(CFBinaryHeapRef heap, const void **values); +extern void CFBinaryHeapApplyFunction(CFBinaryHeapRef heap, CFBinaryHeapApplierFunction __attribute__((noescape)) applier, void *context); +extern void CFBinaryHeapAddValue(CFBinaryHeapRef heap, const void *value); + + + + + + + +extern void CFBinaryHeapRemoveMinimumValue(CFBinaryHeapRef heap); +extern void CFBinaryHeapRemoveAllValues(CFBinaryHeapRef heap); + +} +extern "C" { + +typedef UInt32 CFBit; + +typedef const struct __attribute__((objc_bridge(id))) __CFBitVector * CFBitVectorRef; +typedef struct __attribute__((objc_bridge_mutable(id))) __CFBitVector * CFMutableBitVectorRef; + +extern CFTypeID CFBitVectorGetTypeID(void); + +extern CFBitVectorRef CFBitVectorCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex numBits); +extern CFBitVectorRef CFBitVectorCreateCopy(CFAllocatorRef allocator, CFBitVectorRef bv); +extern CFMutableBitVectorRef CFBitVectorCreateMutable(CFAllocatorRef allocator, CFIndex capacity); +extern CFMutableBitVectorRef CFBitVectorCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBitVectorRef bv); + +extern CFIndex CFBitVectorGetCount(CFBitVectorRef bv); +extern CFIndex CFBitVectorGetCountOfBit(CFBitVectorRef bv, CFRange range, CFBit value); +extern Boolean CFBitVectorContainsBit(CFBitVectorRef bv, CFRange range, CFBit value); +extern CFBit CFBitVectorGetBitAtIndex(CFBitVectorRef bv, CFIndex idx); +extern void CFBitVectorGetBits(CFBitVectorRef bv, CFRange range, UInt8 *bytes); +extern CFIndex CFBitVectorGetFirstIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value); +extern CFIndex CFBitVectorGetLastIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value); + +extern void CFBitVectorSetCount(CFMutableBitVectorRef bv, CFIndex count); +extern void CFBitVectorFlipBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx); +extern void CFBitVectorFlipBits(CFMutableBitVectorRef bv, CFRange range); +extern void CFBitVectorSetBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx, CFBit value); +extern void CFBitVectorSetBits(CFMutableBitVectorRef bv, CFRange range, CFBit value); +extern void CFBitVectorSetAllBits(CFMutableBitVectorRef bv, CFBit value); + +} +enum { + OSUnknownByteOrder, + OSLittleEndian, + OSBigEndian +}; + +static __inline__ +int32_t +OSHostByteOrder(void) +{ + + return OSLittleEndian; + + + + + +} +static __inline__ +uint16_t +_OSReadInt16( + const volatile void * base, + uintptr_t byteOffset + ) +{ + return *(volatile uint16_t *)((uintptr_t)base + byteOffset); +} + +static __inline__ +uint32_t +_OSReadInt32( + const volatile void * base, + uintptr_t byteOffset + ) +{ + return *(volatile uint32_t *)((uintptr_t)base + byteOffset); +} + +static __inline__ +uint64_t +_OSReadInt64( + const volatile void * base, + uintptr_t byteOffset + ) +{ + return *(volatile uint64_t *)((uintptr_t)base + byteOffset); +} + + + +static __inline__ +void +_OSWriteInt16( + volatile void * base, + uintptr_t byteOffset, + uint16_t data + ) +{ + *(volatile uint16_t *)((uintptr_t)base + byteOffset) = data; +} + +static __inline__ +void +_OSWriteInt32( + volatile void * base, + uintptr_t byteOffset, + uint32_t data + ) +{ + *(volatile uint32_t *)((uintptr_t)base + byteOffset) = data; +} + +static __inline__ +void +_OSWriteInt64( + volatile void * base, + uintptr_t byteOffset, + uint64_t data + ) +{ + *(volatile uint64_t *)((uintptr_t)base + byteOffset) = data; +} + + + +extern "C" { + +enum __CFByteOrder { + CFByteOrderUnknown, + CFByteOrderLittleEndian, + CFByteOrderBigEndian +}; +typedef CFIndex CFByteOrder; + +static __inline__ __attribute__((always_inline)) CFByteOrder CFByteOrderGetCurrent(void) { + + int32_t byteOrder = OSHostByteOrder(); + switch (byteOrder) { + case OSLittleEndian: return CFByteOrderLittleEndian; + case OSBigEndian: return CFByteOrderBigEndian; + default: break; + } + return CFByteOrderUnknown; +} + +static __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16(uint16_t arg) { + + return ((__uint16_t)(__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg))); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32(uint32_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64(uint64_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg)); +} + +static __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16BigToHost(uint16_t arg) { + + return ((__uint16_t)(__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg))); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32BigToHost(uint32_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64BigToHost(uint64_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16HostToBig(uint16_t arg) { + + return ((__uint16_t)(__builtin_constant_p(arg) ? ((__uint16_t)((((__uint16_t)(arg) & 0xff00) >> 8) | (((__uint16_t)(arg) & 0x00ff) << 8))) : _OSSwapInt16(arg))); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32HostToBig(uint32_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint32_t)((((__uint32_t)(arg) & 0xff000000) >> 24) | (((__uint32_t)(arg) & 0x00ff0000) >> 8) | (((__uint32_t)(arg) & 0x0000ff00) << 8) | (((__uint32_t)(arg) & 0x000000ff) << 24))) : _OSSwapInt32(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64HostToBig(uint64_t arg) { + + return (__builtin_constant_p(arg) ? ((__uint64_t)((((__uint64_t)(arg) & 0xff00000000000000ULL) >> 56) | (((__uint64_t)(arg) & 0x00ff000000000000ULL) >> 40) | (((__uint64_t)(arg) & 0x0000ff0000000000ULL) >> 24) | (((__uint64_t)(arg) & 0x000000ff00000000ULL) >> 8) | (((__uint64_t)(arg) & 0x00000000ff000000ULL) << 8) | (((__uint64_t)(arg) & 0x0000000000ff0000ULL) << 24) | (((__uint64_t)(arg) & 0x000000000000ff00ULL) << 40) | (((__uint64_t)(arg) & 0x00000000000000ffULL) << 56))) : _OSSwapInt64(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16LittleToHost(uint16_t arg) { + + return ((uint16_t)(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32LittleToHost(uint32_t arg) { + + return ((uint32_t)(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64LittleToHost(uint64_t arg) { + + return ((uint64_t)(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint16_t CFSwapInt16HostToLittle(uint16_t arg) { + + return ((uint16_t)(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint32_t CFSwapInt32HostToLittle(uint32_t arg) { + + return ((uint32_t)(arg)); + + + + + +} + +static __inline__ __attribute__((always_inline)) uint64_t CFSwapInt64HostToLittle(uint64_t arg) { + + return ((uint64_t)(arg)); + + + + + +} + +typedef struct {uint32_t v;} CFSwappedFloat32; +typedef struct {uint64_t v;} CFSwappedFloat64; + +static __inline__ __attribute__((always_inline)) CFSwappedFloat32 CFConvertFloat32HostToSwapped(Float32 arg) { + union CFSwap { + Float32 v; + CFSwappedFloat32 sv; + } result; + result.v = arg; + + result.sv.v = CFSwapInt32(result.sv.v); + + return result.sv; +} + +static __inline__ __attribute__((always_inline)) Float32 CFConvertFloat32SwappedToHost(CFSwappedFloat32 arg) { + union CFSwap { + Float32 v; + CFSwappedFloat32 sv; + } result; + result.sv = arg; + + result.sv.v = CFSwapInt32(result.sv.v); + + return result.v; +} + +static __inline__ __attribute__((always_inline)) CFSwappedFloat64 CFConvertFloat64HostToSwapped(Float64 arg) { + union CFSwap { + Float64 v; + CFSwappedFloat64 sv; + } result; + result.v = arg; + + result.sv.v = CFSwapInt64(result.sv.v); + + return result.sv; +} + +static __inline__ __attribute__((always_inline)) Float64 CFConvertFloat64SwappedToHost(CFSwappedFloat64 arg) { + union CFSwap { + Float64 v; + CFSwappedFloat64 sv; + } result; + result.sv = arg; + + result.sv.v = CFSwapInt64(result.sv.v); + + return result.v; +} + +static __inline__ __attribute__((always_inline)) CFSwappedFloat32 CFConvertFloatHostToSwapped(float arg) { + union CFSwap { + float v; + CFSwappedFloat32 sv; + } result; + result.v = arg; + + result.sv.v = CFSwapInt32(result.sv.v); + + return result.sv; +} + +static __inline__ __attribute__((always_inline)) float CFConvertFloatSwappedToHost(CFSwappedFloat32 arg) { + union CFSwap { + float v; + CFSwappedFloat32 sv; + } result; + result.sv = arg; + + result.sv.v = CFSwapInt32(result.sv.v); + + return result.v; +} + +static __inline__ __attribute__((always_inline)) CFSwappedFloat64 CFConvertDoubleHostToSwapped(double arg) { + union CFSwap { + double v; + CFSwappedFloat64 sv; + } result; + result.v = arg; + + result.sv.v = CFSwapInt64(result.sv.v); + + return result.sv; +} + +static __inline__ __attribute__((always_inline)) double CFConvertDoubleSwappedToHost(CFSwappedFloat64 arg) { + union CFSwap { + double v; + CFSwappedFloat64 sv; + } result; + result.sv = arg; + + result.sv.v = CFSwapInt64(result.sv.v); + + return result.v; +} + +} +extern "C" { +typedef const void * (*CFDictionaryRetainCallBack)(CFAllocatorRef allocator, const void *value); +typedef void (*CFDictionaryReleaseCallBack)(CFAllocatorRef allocator, const void *value); +typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack)(const void *value); +typedef Boolean (*CFDictionaryEqualCallBack)(const void *value1, const void *value2); +typedef CFHashCode (*CFDictionaryHashCallBack)(const void *value); +typedef struct { + CFIndex version; + CFDictionaryRetainCallBack retain; + CFDictionaryReleaseCallBack release; + CFDictionaryCopyDescriptionCallBack copyDescription; + CFDictionaryEqualCallBack equal; + CFDictionaryHashCallBack hash; +} CFDictionaryKeyCallBacks; + + + + + + + +extern +const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks; +extern +const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks; +typedef struct { + CFIndex version; + CFDictionaryRetainCallBack retain; + CFDictionaryReleaseCallBack release; + CFDictionaryCopyDescriptionCallBack copyDescription; + CFDictionaryEqualCallBack equal; +} CFDictionaryValueCallBacks; + + + + + + + +extern +const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks; +typedef void (*CFDictionaryApplierFunction)(const void *key, const void *value, void *context); + + + + + +typedef const struct __attribute__((objc_bridge(NSDictionary))) __CFDictionary * CFDictionaryRef; + + + + + +typedef struct __attribute__((objc_bridge_mutable(NSMutableDictionary))) __CFDictionary * CFMutableDictionaryRef; + + + + + +extern +CFTypeID CFDictionaryGetTypeID(void); +extern +CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks); +extern +CFDictionaryRef CFDictionaryCreateCopy(CFAllocatorRef allocator, CFDictionaryRef theDict); +extern +CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks); +extern +CFMutableDictionaryRef CFDictionaryCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDictionaryRef theDict); +extern +CFIndex CFDictionaryGetCount(CFDictionaryRef theDict); +extern +CFIndex CFDictionaryGetCountOfKey(CFDictionaryRef theDict, const void *key); +extern +CFIndex CFDictionaryGetCountOfValue(CFDictionaryRef theDict, const void *value); +extern +Boolean CFDictionaryContainsKey(CFDictionaryRef theDict, const void *key); +extern +Boolean CFDictionaryContainsValue(CFDictionaryRef theDict, const void *value); +extern +const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key); +extern +Boolean CFDictionaryGetValueIfPresent(CFDictionaryRef theDict, const void *key, const void **value); +extern +void CFDictionaryGetKeysAndValues(CFDictionaryRef theDict, const void **keys, const void **values); +extern +void CFDictionaryApplyFunction(CFDictionaryRef theDict, CFDictionaryApplierFunction __attribute__((noescape)) applier, void *context); +extern +void CFDictionaryAddValue(CFMutableDictionaryRef theDict, const void *key, const void *value); +extern +void CFDictionarySetValue(CFMutableDictionaryRef theDict, const void *key, const void *value); +extern +void CFDictionaryReplaceValue(CFMutableDictionaryRef theDict, const void *key, const void *value); +extern +void CFDictionaryRemoveValue(CFMutableDictionaryRef theDict, const void *key); +extern +void CFDictionaryRemoveAllValues(CFMutableDictionaryRef theDict); + +} +extern "C" { + +typedef CFStringRef CFNotificationName __attribute__((swift_wrapper(struct))); + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFNotificationCenter * CFNotificationCenterRef; + +typedef void (*CFNotificationCallback)(CFNotificationCenterRef center, void *observer, CFNotificationName name, const void *object, CFDictionaryRef userInfo); + +typedef CFIndex CFNotificationSuspensionBehavior; enum { + CFNotificationSuspensionBehaviorDrop = 1, + + CFNotificationSuspensionBehaviorCoalesce = 2, + + CFNotificationSuspensionBehaviorHold = 3, + + CFNotificationSuspensionBehaviorDeliverImmediately = 4 + +}; + +extern CFTypeID CFNotificationCenterGetTypeID(void); + +extern CFNotificationCenterRef CFNotificationCenterGetLocalCenter(void); + + + + + +extern CFNotificationCenterRef CFNotificationCenterGetDarwinNotifyCenter(void); +extern void CFNotificationCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior); + +extern void CFNotificationCenterRemoveObserver(CFNotificationCenterRef center, const void *observer, CFNotificationName name, const void *object); +extern void CFNotificationCenterRemoveEveryObserver(CFNotificationCenterRef center, const void *observer); + +extern void CFNotificationCenterPostNotification(CFNotificationCenterRef center, CFNotificationName name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately); + +enum { + kCFNotificationDeliverImmediately = (1UL << 0), + kCFNotificationPostToAllSessions = (1UL << 1) +}; + +extern void CFNotificationCenterPostNotificationWithOptions(CFNotificationCenterRef center, CFNotificationName name, const void *object, CFDictionaryRef userInfo, CFOptionFlags options); + + +} + + +extern "C" { + +typedef CFStringRef CFLocaleIdentifier __attribute__((swift_wrapper(struct))); +typedef CFStringRef CFLocaleKey __attribute__((swift_wrapper(enum))); + +typedef const struct __attribute__((objc_bridge(NSLocale))) __CFLocale *CFLocaleRef; + +extern +CFTypeID CFLocaleGetTypeID(void); + +extern +CFLocaleRef CFLocaleGetSystem(void); + + +extern +CFLocaleRef CFLocaleCopyCurrent(void); +extern +CFArrayRef CFLocaleCopyAvailableLocaleIdentifiers(void); + + + +extern +CFArrayRef CFLocaleCopyISOLanguageCodes(void); + + + + +extern +CFArrayRef CFLocaleCopyISOCountryCodes(void); + + + + +extern +CFArrayRef CFLocaleCopyISOCurrencyCodes(void); + + + + +extern +CFArrayRef CFLocaleCopyCommonISOCurrencyCodes(void) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFArrayRef CFLocaleCopyPreferredLanguages(void) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +CFLocaleIdentifier CFLocaleCreateCanonicalLanguageIdentifierFromString(CFAllocatorRef allocator, CFStringRef localeIdentifier); + + + +extern +CFLocaleIdentifier CFLocaleCreateCanonicalLocaleIdentifierFromString(CFAllocatorRef allocator, CFStringRef localeIdentifier); + + + +extern +CFLocaleIdentifier CFLocaleCreateCanonicalLocaleIdentifierFromScriptManagerCodes(CFAllocatorRef allocator, LangCode lcode, RegionCode rcode); + + +extern +CFLocaleIdentifier CFLocaleCreateLocaleIdentifierFromWindowsLocaleCode(CFAllocatorRef allocator, uint32_t lcid) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +uint32_t CFLocaleGetWindowsLocaleCodeFromLocaleIdentifier(CFLocaleIdentifier localeIdentifier) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef CFIndex CFLocaleLanguageDirection; enum { + kCFLocaleLanguageDirectionUnknown = 0, + kCFLocaleLanguageDirectionLeftToRight = 1, + kCFLocaleLanguageDirectionRightToLeft = 2, + kCFLocaleLanguageDirectionTopToBottom = 3, + kCFLocaleLanguageDirectionBottomToTop = 4 +}; + +extern +CFLocaleLanguageDirection CFLocaleGetLanguageCharacterDirection(CFStringRef isoLangCode) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFLocaleLanguageDirection CFLocaleGetLanguageLineDirection(CFStringRef isoLangCode) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFDictionaryRef CFLocaleCreateComponentsFromLocaleIdentifier(CFAllocatorRef allocator, CFLocaleIdentifier localeID); +extern +CFLocaleIdentifier CFLocaleCreateLocaleIdentifierFromComponents(CFAllocatorRef allocator, CFDictionaryRef dictionary); + + + + + + +extern +CFLocaleRef CFLocaleCreate(CFAllocatorRef allocator, CFLocaleIdentifier localeIdentifier); + + +extern +CFLocaleRef CFLocaleCreateCopy(CFAllocatorRef allocator, CFLocaleRef locale); + + + + +extern +CFLocaleIdentifier CFLocaleGetIdentifier(CFLocaleRef locale); + + + +extern +CFTypeRef CFLocaleGetValue(CFLocaleRef locale, CFLocaleKey key); + + + +extern +CFStringRef CFLocaleCopyDisplayNameForPropertyValue(CFLocaleRef displayLocale, CFLocaleKey key, CFStringRef value); + + + + + +extern const CFNotificationName kCFLocaleCurrentLocaleDidChangeNotification __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern const CFLocaleKey kCFLocaleIdentifier; +extern const CFLocaleKey kCFLocaleLanguageCode; +extern const CFLocaleKey kCFLocaleCountryCode; +extern const CFLocaleKey kCFLocaleScriptCode; +extern const CFLocaleKey kCFLocaleVariantCode; + +extern const CFLocaleKey kCFLocaleExemplarCharacterSet; +extern const CFLocaleKey kCFLocaleCalendarIdentifier; +extern const CFLocaleKey kCFLocaleCalendar; +extern const CFLocaleKey kCFLocaleCollationIdentifier; +extern const CFLocaleKey kCFLocaleUsesMetricSystem; +extern const CFLocaleKey kCFLocaleMeasurementSystem; +extern const CFLocaleKey kCFLocaleDecimalSeparator; +extern const CFLocaleKey kCFLocaleGroupingSeparator; +extern const CFLocaleKey kCFLocaleCurrencySymbol; +extern const CFLocaleKey kCFLocaleCurrencyCode; +extern const CFLocaleKey kCFLocaleCollatorIdentifier __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFLocaleKey kCFLocaleQuotationBeginDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFLocaleKey kCFLocaleQuotationEndDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFLocaleKey kCFLocaleAlternateQuotationBeginDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFLocaleKey kCFLocaleAlternateQuotationEndDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef CFStringRef CFCalendarIdentifier __attribute__((swift_wrapper(enum))); + +extern const CFCalendarIdentifier kCFGregorianCalendar; +extern const CFCalendarIdentifier kCFBuddhistCalendar; +extern const CFCalendarIdentifier kCFChineseCalendar; +extern const CFCalendarIdentifier kCFHebrewCalendar; +extern const CFCalendarIdentifier kCFIslamicCalendar; +extern const CFCalendarIdentifier kCFIslamicCivilCalendar; +extern const CFCalendarIdentifier kCFJapaneseCalendar; +extern const CFCalendarIdentifier kCFRepublicOfChinaCalendar __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFCalendarIdentifier kCFPersianCalendar __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFCalendarIdentifier kCFIndianCalendar __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFCalendarIdentifier kCFISO8601Calendar __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFCalendarIdentifier kCFIslamicTabularCalendar __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFCalendarIdentifier kCFIslamicUmmAlQuraCalendar __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} +extern "C" { + +typedef double CFTimeInterval; +typedef CFTimeInterval CFAbsoluteTime; + + + +extern +CFAbsoluteTime CFAbsoluteTimeGetCurrent(void); + +extern +const CFTimeInterval kCFAbsoluteTimeIntervalSince1970; +extern +const CFTimeInterval kCFAbsoluteTimeIntervalSince1904; + +typedef const struct __attribute__((objc_bridge(NSDate))) __CFDate * CFDateRef; + +extern +CFTypeID CFDateGetTypeID(void); + +extern +CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at); + +extern +CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate); + +extern +CFTimeInterval CFDateGetTimeIntervalSinceDate(CFDateRef theDate, CFDateRef otherDate); + +extern +CFComparisonResult CFDateCompare(CFDateRef theDate, CFDateRef otherDate, void *context); + + + +typedef const struct __attribute__((objc_bridge(NSTimeZone))) __CFTimeZone * CFTimeZoneRef; +typedef struct { + SInt32 year; + SInt8 month; + SInt8 day; + SInt8 hour; + SInt8 minute; + double second; +} CFGregorianDate __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +typedef struct { + SInt32 years; + SInt32 months; + SInt32 days; + SInt32 hours; + SInt32 minutes; + double seconds; +} CFGregorianUnits __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +typedef CFOptionFlags CFGregorianUnitFlags; enum { + kCFGregorianUnitsYears __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 0), + kCFGregorianUnitsMonths __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 1), + kCFGregorianUnitsDays __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 2), + kCFGregorianUnitsHours __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 3), + kCFGregorianUnitsMinutes __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 4), + kCFGregorianUnitsSeconds __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = (1UL << 5), + kCFGregorianAllUnits __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))) = 0x00FFFFFF +}; + +extern +Boolean CFGregorianDateIsValid(CFGregorianDate gdate, CFOptionFlags unitFlags) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +CFAbsoluteTime CFGregorianDateGetAbsoluteTime(CFGregorianDate gdate, CFTimeZoneRef tz) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +CFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +CFAbsoluteTime CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTime at, CFTimeZoneRef tz, CFGregorianUnits units) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +CFGregorianUnits CFAbsoluteTimeGetDifferenceAsGregorianUnits(CFAbsoluteTime at1, CFAbsoluteTime at2, CFTimeZoneRef tz, CFOptionFlags unitFlags) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +SInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +SInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +extern +SInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz) __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFCalendar or NSCalendar API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFCalendar or NSCalendar API instead"))); + +} +extern "C" { + +typedef const struct __attribute__((objc_bridge(NSData))) __CFData * CFDataRef; +typedef struct __attribute__((objc_bridge_mutable(NSMutableData))) __CFData * CFMutableDataRef; + +extern +CFTypeID CFDataGetTypeID(void); + +extern +CFDataRef CFDataCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length); + +extern +CFDataRef CFDataCreateWithBytesNoCopy(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator); + + +extern +CFDataRef CFDataCreateCopy(CFAllocatorRef allocator, CFDataRef theData); + +extern +CFMutableDataRef CFDataCreateMutable(CFAllocatorRef allocator, CFIndex capacity); + +extern +CFMutableDataRef CFDataCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDataRef theData); + +extern +CFIndex CFDataGetLength(CFDataRef theData); + +extern +const UInt8 *CFDataGetBytePtr(CFDataRef theData); + +extern +UInt8 *CFDataGetMutableBytePtr(CFMutableDataRef theData); + +extern +void CFDataGetBytes(CFDataRef theData, CFRange range, UInt8 *buffer); + +extern +void CFDataSetLength(CFMutableDataRef theData, CFIndex length); + +extern +void CFDataIncreaseLength(CFMutableDataRef theData, CFIndex extraLength); + +extern +void CFDataAppendBytes(CFMutableDataRef theData, const UInt8 *bytes, CFIndex length); + +extern +void CFDataReplaceBytes(CFMutableDataRef theData, CFRange range, const UInt8 *newBytes, CFIndex newLength); + +extern +void CFDataDeleteBytes(CFMutableDataRef theData, CFRange range); + +typedef CFOptionFlags CFDataSearchFlags; enum { + kCFDataSearchBackwards = 1UL << 0, + kCFDataSearchAnchored = 1UL << 1 +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFRange CFDataFind(CFDataRef theData, CFDataRef dataToFind, CFRange searchRange, CFDataSearchFlags compareOptions) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} + + +extern "C" { + + + + + +typedef const struct __attribute__((objc_bridge(NSCharacterSet))) __CFCharacterSet * CFCharacterSetRef; + + + + + +typedef struct __attribute__((objc_bridge_mutable(NSMutableCharacterSet))) __CFCharacterSet * CFMutableCharacterSetRef; + + + + + + +typedef CFIndex CFCharacterSetPredefinedSet; enum { + kCFCharacterSetControl = 1, + kCFCharacterSetWhitespace, + kCFCharacterSetWhitespaceAndNewline, + kCFCharacterSetDecimalDigit, + kCFCharacterSetLetter, + kCFCharacterSetLowercaseLetter, + kCFCharacterSetUppercaseLetter, + kCFCharacterSetNonBase, + kCFCharacterSetDecomposable, + kCFCharacterSetAlphaNumeric, + kCFCharacterSetPunctuation, + kCFCharacterSetCapitalizedLetter = 13, + kCFCharacterSetSymbol = 14, + kCFCharacterSetNewline __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 15, + kCFCharacterSetIllegal = 12 +}; + + + + + +extern +CFTypeID CFCharacterSetGetTypeID(void); +extern +CFCharacterSetRef CFCharacterSetGetPredefined(CFCharacterSetPredefinedSet theSetIdentifier); +extern +CFCharacterSetRef CFCharacterSetCreateWithCharactersInRange(CFAllocatorRef alloc, CFRange theRange); +extern +CFCharacterSetRef CFCharacterSetCreateWithCharactersInString(CFAllocatorRef alloc, CFStringRef theString); +extern +CFCharacterSetRef CFCharacterSetCreateWithBitmapRepresentation(CFAllocatorRef alloc, CFDataRef theData); +extern CFCharacterSetRef CFCharacterSetCreateInvertedSet(CFAllocatorRef alloc, CFCharacterSetRef theSet); +extern Boolean CFCharacterSetIsSupersetOfSet(CFCharacterSetRef theSet, CFCharacterSetRef theOtherset); +extern Boolean CFCharacterSetHasMemberInPlane(CFCharacterSetRef theSet, CFIndex thePlane); +extern +CFMutableCharacterSetRef CFCharacterSetCreateMutable(CFAllocatorRef alloc); +extern +CFCharacterSetRef CFCharacterSetCreateCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet); +extern +CFMutableCharacterSetRef CFCharacterSetCreateMutableCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet); +extern +Boolean CFCharacterSetIsCharacterMember(CFCharacterSetRef theSet, UniChar theChar); +extern Boolean CFCharacterSetIsLongCharacterMember(CFCharacterSetRef theSet, UTF32Char theChar); +extern +CFDataRef CFCharacterSetCreateBitmapRepresentation(CFAllocatorRef alloc, CFCharacterSetRef theSet); +extern +void CFCharacterSetAddCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange); +extern +void CFCharacterSetRemoveCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange); +extern +void CFCharacterSetAddCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString); +extern +void CFCharacterSetRemoveCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString); +extern +void CFCharacterSetUnion(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet); +extern +void CFCharacterSetIntersect(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet); +extern +void CFCharacterSetInvert(CFMutableCharacterSetRef theSet); + +} + + + + +extern "C" { +typedef UInt32 CFStringEncoding; + + + + + +typedef CFStringEncoding CFStringBuiltInEncodings; enum { + kCFStringEncodingMacRoman = 0, + kCFStringEncodingWindowsLatin1 = 0x0500, + kCFStringEncodingISOLatin1 = 0x0201, + kCFStringEncodingNextStepLatin = 0x0B01, + kCFStringEncodingASCII = 0x0600, + kCFStringEncodingUnicode = 0x0100, + kCFStringEncodingUTF8 = 0x08000100, + kCFStringEncodingNonLossyASCII = 0x0BFF, + + kCFStringEncodingUTF16 = 0x0100, + kCFStringEncodingUTF16BE = 0x10000100, + kCFStringEncodingUTF16LE = 0x14000100, + + kCFStringEncodingUTF32 = 0x0c000100, + kCFStringEncodingUTF32BE = 0x18000100, + kCFStringEncodingUTF32LE = 0x1c000100 +}; + + + +extern +CFTypeID CFStringGetTypeID(void); +extern +CFStringRef CFStringCreateWithPascalString(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding); + +extern +CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding); + + + +extern +CFStringRef CFStringCreateWithBytes(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation); + +extern +CFStringRef CFStringCreateWithCharacters(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars); +extern +CFStringRef CFStringCreateWithPascalStringNoCopy(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator); + +extern +CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator); + + + +extern +CFStringRef CFStringCreateWithBytesNoCopy(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation, CFAllocatorRef contentsDeallocator); + +extern +CFStringRef CFStringCreateWithCharactersNoCopy(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars, CFAllocatorRef contentsDeallocator); + + + +extern +CFStringRef CFStringCreateWithSubstring(CFAllocatorRef alloc, CFStringRef str, CFRange range); + +extern +CFStringRef CFStringCreateCopy(CFAllocatorRef alloc, CFStringRef theString); + + + +extern +CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...) __attribute__((format(CFString, 3, 4))); + +extern +CFStringRef CFStringCreateWithFormatAndArguments(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments) __attribute__((format(CFString, 3, 0))); + + + +extern +CFMutableStringRef CFStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength); + +extern +CFMutableStringRef CFStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFStringRef theString); + + + + + + + +extern +CFMutableStringRef CFStringCreateMutableWithExternalCharactersNoCopy(CFAllocatorRef alloc, UniChar *chars, CFIndex numChars, CFIndex capacity, CFAllocatorRef externalCharactersAllocator); + + + + + +extern +CFIndex CFStringGetLength(CFStringRef theString); + + + + + + +extern +UniChar CFStringGetCharacterAtIndex(CFStringRef theString, CFIndex idx); + +extern +void CFStringGetCharacters(CFStringRef theString, CFRange range, UniChar *buffer); +extern +Boolean CFStringGetPascalString(CFStringRef theString, StringPtr buffer, CFIndex bufferSize, CFStringEncoding encoding); + +extern +Boolean CFStringGetCString(CFStringRef theString, char *buffer, CFIndex bufferSize, CFStringEncoding encoding); + + + + + + +extern +ConstStringPtr CFStringGetPascalStringPtr(CFStringRef theString, CFStringEncoding encoding); + +extern +const char *CFStringGetCStringPtr(CFStringRef theString, CFStringEncoding encoding); + +extern +const UniChar *CFStringGetCharactersPtr(CFStringRef theString); +extern +CFIndex CFStringGetBytes(CFStringRef theString, CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen); + + + + + + + +extern +CFStringRef CFStringCreateFromExternalRepresentation(CFAllocatorRef alloc, CFDataRef data, CFStringEncoding encoding); + +extern +CFDataRef CFStringCreateExternalRepresentation(CFAllocatorRef alloc, CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte); + + + +extern +CFStringEncoding CFStringGetSmallestEncoding(CFStringRef theString); + +extern +CFStringEncoding CFStringGetFastestEncoding(CFStringRef theString); + + + +extern +CFStringEncoding CFStringGetSystemEncoding(void); + +extern +CFIndex CFStringGetMaximumSizeForEncoding(CFIndex length, CFStringEncoding encoding); + + + + + + +extern +Boolean CFStringGetFileSystemRepresentation(CFStringRef string, char *buffer, CFIndex maxBufLen); + + + +extern +CFIndex CFStringGetMaximumSizeOfFileSystemRepresentation(CFStringRef string); + + + +extern +CFStringRef CFStringCreateWithFileSystemRepresentation(CFAllocatorRef alloc, const char *buffer); + + + + + + +typedef CFOptionFlags CFStringCompareFlags; enum { + kCFCompareCaseInsensitive = 1, + kCFCompareBackwards = 4, + kCFCompareAnchored = 8, + kCFCompareNonliteral = 16, + kCFCompareLocalized = 32, + kCFCompareNumerically = 64, + kCFCompareDiacriticInsensitive __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 128, + kCFCompareWidthInsensitive __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 256, + kCFCompareForcedOrdering __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 512 +}; + + + + + + + +extern +CFComparisonResult CFStringCompareWithOptionsAndLocale(CFStringRef theString1, CFStringRef theString2, CFRange rangeToCompare, CFStringCompareFlags compareOptions, CFLocaleRef locale) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFComparisonResult CFStringCompareWithOptions(CFStringRef theString1, CFStringRef theString2, CFRange rangeToCompare, CFStringCompareFlags compareOptions); + + + + + +extern +CFComparisonResult CFStringCompare(CFStringRef theString1, CFStringRef theString2, CFStringCompareFlags compareOptions); + + + + + + + +extern +Boolean CFStringFindWithOptionsAndLocale(CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFLocaleRef locale, CFRange *result) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +Boolean CFStringFindWithOptions(CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); +extern +CFArrayRef CFStringCreateArrayWithFindResults(CFAllocatorRef alloc, CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFStringCompareFlags compareOptions); + + + +extern +CFRange CFStringFind(CFStringRef theString, CFStringRef stringToFind, CFStringCompareFlags compareOptions); + +extern +Boolean CFStringHasPrefix(CFStringRef theString, CFStringRef prefix); + +extern +Boolean CFStringHasSuffix(CFStringRef theString, CFStringRef suffix); +extern CFRange CFStringGetRangeOfComposedCharactersAtIndex(CFStringRef theString, CFIndex theIndex); +extern Boolean CFStringFindCharacterFromSet(CFStringRef theString, CFCharacterSetRef theSet, CFRange rangeToSearch, CFStringCompareFlags searchOptions, CFRange *result); +extern +void CFStringGetLineBounds(CFStringRef theString, CFRange range, CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex); + + + +extern +void CFStringGetParagraphBounds(CFStringRef string, CFRange range, CFIndex *parBeginIndex, CFIndex *parEndIndex, CFIndex *contentsEndIndex) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFIndex CFStringGetHyphenationLocationBeforeIndex(CFStringRef string, CFIndex location, CFRange limitRange, CFOptionFlags options, CFLocaleRef locale, UTF32Char *character) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +Boolean CFStringIsHyphenationAvailableForLocale(CFLocaleRef locale) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef theArray, CFStringRef separatorString); + +extern +CFArrayRef CFStringCreateArrayBySeparatingStrings(CFAllocatorRef alloc, CFStringRef theString, CFStringRef separatorString); + + + + +extern +SInt32 CFStringGetIntValue(CFStringRef str); + +extern +double CFStringGetDoubleValue(CFStringRef str); +extern +void CFStringAppend(CFMutableStringRef theString, CFStringRef appendedString); + +extern +void CFStringAppendCharacters(CFMutableStringRef theString, const UniChar *chars, CFIndex numChars); + +extern +void CFStringAppendPascalString(CFMutableStringRef theString, ConstStr255Param pStr, CFStringEncoding encoding); + +extern +void CFStringAppendCString(CFMutableStringRef theString, const char *cStr, CFStringEncoding encoding); + +extern +void CFStringAppendFormat(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, ...) __attribute__((format(CFString, 3, 4))); + +extern +void CFStringAppendFormatAndArguments(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments) __attribute__((format(CFString, 3, 0))); + +extern +void CFStringInsert(CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr); + +extern +void CFStringDelete(CFMutableStringRef theString, CFRange range); + +extern +void CFStringReplace(CFMutableStringRef theString, CFRange range, CFStringRef replacement); + +extern +void CFStringReplaceAll(CFMutableStringRef theString, CFStringRef replacement); +extern +CFIndex CFStringFindAndReplace(CFMutableStringRef theString, CFStringRef stringToFind, CFStringRef replacementString, CFRange rangeToSearch, CFStringCompareFlags compareOptions); +extern +void CFStringSetExternalCharactersNoCopy(CFMutableStringRef theString, UniChar *chars, CFIndex length, CFIndex capacity); +extern +void CFStringPad(CFMutableStringRef theString, CFStringRef padString, CFIndex length, CFIndex indexIntoPad); + +extern +void CFStringTrim(CFMutableStringRef theString, CFStringRef trimString); + +extern +void CFStringTrimWhitespace(CFMutableStringRef theString); + +extern +void CFStringLowercase(CFMutableStringRef theString, CFLocaleRef locale); + +extern +void CFStringUppercase(CFMutableStringRef theString, CFLocaleRef locale); + +extern +void CFStringCapitalize(CFMutableStringRef theString, CFLocaleRef locale); + + + + + + + +typedef CFIndex CFStringNormalizationForm; enum { + kCFStringNormalizationFormD = 0, + kCFStringNormalizationFormKD, + kCFStringNormalizationFormC, + kCFStringNormalizationFormKC +}; +extern void CFStringNormalize(CFMutableStringRef theString, CFStringNormalizationForm theForm); +extern +void CFStringFold(CFMutableStringRef theString, CFStringCompareFlags theFlags, CFLocaleRef theLocale) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern +Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse); + + + +extern const CFStringRef kCFStringTransformStripCombiningMarks; +extern const CFStringRef kCFStringTransformToLatin; +extern const CFStringRef kCFStringTransformFullwidthHalfwidth; +extern const CFStringRef kCFStringTransformLatinKatakana; +extern const CFStringRef kCFStringTransformLatinHiragana; +extern const CFStringRef kCFStringTransformHiraganaKatakana; +extern const CFStringRef kCFStringTransformMandarinLatin; +extern const CFStringRef kCFStringTransformLatinHangul; +extern const CFStringRef kCFStringTransformLatinArabic; +extern const CFStringRef kCFStringTransformLatinHebrew; +extern const CFStringRef kCFStringTransformLatinThai; +extern const CFStringRef kCFStringTransformLatinCyrillic; +extern const CFStringRef kCFStringTransformLatinGreek; +extern const CFStringRef kCFStringTransformToXMLHex; +extern const CFStringRef kCFStringTransformToUnicodeName; +extern const CFStringRef kCFStringTransformStripDiacritics __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +Boolean CFStringIsEncodingAvailable(CFStringEncoding encoding); + + + +extern +const CFStringEncoding *CFStringGetListOfAvailableEncodings(void); + + + +extern +CFStringRef CFStringGetNameOfEncoding(CFStringEncoding encoding); + + + +extern +unsigned long CFStringConvertEncodingToNSStringEncoding(CFStringEncoding encoding); + +extern +CFStringEncoding CFStringConvertNSStringEncodingToEncoding(unsigned long encoding); + + + +extern +UInt32 CFStringConvertEncodingToWindowsCodepage(CFStringEncoding encoding); + +extern +CFStringEncoding CFStringConvertWindowsCodepageToEncoding(UInt32 codepage); + + + +extern +CFStringEncoding CFStringConvertIANACharSetNameToEncoding(CFStringRef theString); + +extern +CFStringRef CFStringConvertEncodingToIANACharSetName(CFStringEncoding encoding); + + + + + +extern +CFStringEncoding CFStringGetMostCompatibleMacStringEncoding(CFStringEncoding encoding); +typedef struct { + UniChar buffer[64]; + CFStringRef theString; + const UniChar *directUniCharBuffer; + const char *directCStringBuffer; + CFRange rangeToBuffer; + CFIndex bufferedRangeStart; + CFIndex bufferedRangeEnd; +} CFStringInlineBuffer; + + +static __inline__ __attribute__((always_inline)) void CFStringInitInlineBuffer(CFStringRef str, CFStringInlineBuffer *buf, CFRange range) { + buf->theString = str; + buf->rangeToBuffer = range; + buf->directCStringBuffer = (buf->directUniCharBuffer = CFStringGetCharactersPtr(str)) ? __null : CFStringGetCStringPtr(str, kCFStringEncodingASCII); + buf->bufferedRangeStart = buf->bufferedRangeEnd = 0; +} + +static __inline__ __attribute__((always_inline)) UniChar CFStringGetCharacterFromInlineBuffer(CFStringInlineBuffer *buf, CFIndex idx) { + if (idx < 0 || idx >= buf->rangeToBuffer.length) return 0; + if (buf->directUniCharBuffer) return buf->directUniCharBuffer[idx + buf->rangeToBuffer.location]; + if (buf->directCStringBuffer) return (UniChar)(buf->directCStringBuffer[idx + buf->rangeToBuffer.location]); + if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart) { + if ((buf->bufferedRangeStart = idx - 4) < 0) buf->bufferedRangeStart = 0; + buf->bufferedRangeEnd = buf->bufferedRangeStart + 64; + if (buf->bufferedRangeEnd > buf->rangeToBuffer.length) buf->bufferedRangeEnd = buf->rangeToBuffer.length; + CFStringGetCharacters(buf->theString, CFRangeMake(buf->rangeToBuffer.location + buf->bufferedRangeStart, buf->bufferedRangeEnd - buf->bufferedRangeStart), buf->buffer); + } + return buf->buffer[idx - buf->bufferedRangeStart]; +} +static __inline__ __attribute__((always_inline)) Boolean CFStringIsSurrogateHighCharacter(UniChar character) { + return ((character >= 0xD800UL) && (character <= 0xDBFFUL) ? true : false); +} + +static __inline__ __attribute__((always_inline)) Boolean CFStringIsSurrogateLowCharacter(UniChar character) { + return ((character >= 0xDC00UL) && (character <= 0xDFFFUL) ? true : false); +} + +static __inline__ __attribute__((always_inline)) UTF32Char CFStringGetLongCharacterForSurrogatePair(UniChar surrogateHigh, UniChar surrogateLow) { + return (UTF32Char)(((surrogateHigh - 0xD800UL) << 10) + (surrogateLow - 0xDC00UL) + 0x0010000UL); +} + + +static __inline__ __attribute__((always_inline)) Boolean CFStringGetSurrogatePairForLongCharacter(UTF32Char character, UniChar *surrogates) { + if ((character > 0xFFFFUL) && (character < 0x110000UL)) { + character -= 0x10000; + if (__null != surrogates) { + surrogates[0] = (UniChar)((character >> 10) + 0xD800UL); + surrogates[1] = (UniChar)((character & 0x3FF) + 0xDC00UL); + } + return true; + } else { + if (__null != surrogates) *surrogates = (UniChar)character; + return false; + } +} + + + + + + + +extern +void CFShow(CFTypeRef obj); + +extern +void CFShowStr(CFStringRef str); + + +extern +CFStringRef __CFStringMakeConstantString(const char *cStr) __attribute__((format_arg(1))); + +} + + + + +extern "C" { + +extern +CFTypeID CFTimeZoneGetTypeID(void); + +extern +CFTimeZoneRef CFTimeZoneCopySystem(void); + +extern +void CFTimeZoneResetSystem(void); + +extern +CFTimeZoneRef CFTimeZoneCopyDefault(void); + +extern +void CFTimeZoneSetDefault(CFTimeZoneRef tz); + +extern +CFArrayRef CFTimeZoneCopyKnownNames(void); + +extern +CFDictionaryRef CFTimeZoneCopyAbbreviationDictionary(void); + +extern +void CFTimeZoneSetAbbreviationDictionary(CFDictionaryRef dict); + +extern +CFTimeZoneRef CFTimeZoneCreate(CFAllocatorRef allocator, CFStringRef name, CFDataRef data); + +extern +CFTimeZoneRef CFTimeZoneCreateWithTimeIntervalFromGMT(CFAllocatorRef allocator, CFTimeInterval ti); + +extern +CFTimeZoneRef CFTimeZoneCreateWithName(CFAllocatorRef allocator, CFStringRef name, Boolean tryAbbrev); + +extern +CFStringRef CFTimeZoneGetName(CFTimeZoneRef tz); + +extern +CFDataRef CFTimeZoneGetData(CFTimeZoneRef tz); + +extern +CFTimeInterval CFTimeZoneGetSecondsFromGMT(CFTimeZoneRef tz, CFAbsoluteTime at); + +extern +CFStringRef CFTimeZoneCopyAbbreviation(CFTimeZoneRef tz, CFAbsoluteTime at); + +extern +Boolean CFTimeZoneIsDaylightSavingTime(CFTimeZoneRef tz, CFAbsoluteTime at); + +extern +CFTimeInterval CFTimeZoneGetDaylightSavingTimeOffset(CFTimeZoneRef tz, CFAbsoluteTime at) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFAbsoluteTime CFTimeZoneGetNextDaylightSavingTimeTransition(CFTimeZoneRef tz, CFAbsoluteTime at) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef CFIndex CFTimeZoneNameStyle; enum { + kCFTimeZoneNameStyleStandard, + kCFTimeZoneNameStyleShortStandard, + kCFTimeZoneNameStyleDaylightSaving, + kCFTimeZoneNameStyleShortDaylightSaving, + kCFTimeZoneNameStyleGeneric, + kCFTimeZoneNameStyleShortGeneric +} __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFStringRef CFTimeZoneCopyLocalizedName(CFTimeZoneRef tz, CFTimeZoneNameStyle style, CFLocaleRef locale) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +const CFNotificationName kCFTimeZoneSystemTimeZoneDidChangeNotification __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} + + +extern "C" { + +typedef struct __attribute__((objc_bridge_mutable(NSCalendar))) __CFCalendar * CFCalendarRef; + +extern +CFTypeID CFCalendarGetTypeID(void); + +extern +CFCalendarRef CFCalendarCopyCurrent(void); + +extern +CFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFCalendarIdentifier identifier); + + + +extern +CFCalendarIdentifier CFCalendarGetIdentifier(CFCalendarRef calendar); + + +extern +CFLocaleRef CFCalendarCopyLocale(CFCalendarRef calendar); + +extern +void CFCalendarSetLocale(CFCalendarRef calendar, CFLocaleRef locale); + +extern +CFTimeZoneRef CFCalendarCopyTimeZone(CFCalendarRef calendar); + +extern +void CFCalendarSetTimeZone(CFCalendarRef calendar, CFTimeZoneRef tz); + +extern +CFIndex CFCalendarGetFirstWeekday(CFCalendarRef calendar); + +extern +void CFCalendarSetFirstWeekday(CFCalendarRef calendar, CFIndex wkdy); + +extern +CFIndex CFCalendarGetMinimumDaysInFirstWeek(CFCalendarRef calendar); + +extern +void CFCalendarSetMinimumDaysInFirstWeek(CFCalendarRef calendar, CFIndex mwd); + + +typedef CFOptionFlags CFCalendarUnit; enum { + kCFCalendarUnitEra = (1UL << 1), + kCFCalendarUnitYear = (1UL << 2), + kCFCalendarUnitMonth = (1UL << 3), + kCFCalendarUnitDay = (1UL << 4), + kCFCalendarUnitHour = (1UL << 5), + kCFCalendarUnitMinute = (1UL << 6), + kCFCalendarUnitSecond = (1UL << 7), + kCFCalendarUnitWeek __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use kCFCalendarUnitWeekOfYear or kCFCalendarUnitWeekOfMonth instead"))) = (1UL << 8), + kCFCalendarUnitWeekday = (1UL << 9), + kCFCalendarUnitWeekdayOrdinal = (1UL << 10), + kCFCalendarUnitQuarter __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 11), + kCFCalendarUnitWeekOfMonth __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 12), + kCFCalendarUnitWeekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 13), + kCFCalendarUnitYearForWeekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 14), +}; + +extern +CFRange CFCalendarGetMinimumRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit); + +extern +CFRange CFCalendarGetMaximumRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit); + +extern +CFRange CFCalendarGetRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit smallerUnit, CFCalendarUnit biggerUnit, CFAbsoluteTime at); + +extern +CFIndex CFCalendarGetOrdinalityOfUnit(CFCalendarRef calendar, CFCalendarUnit smallerUnit, CFCalendarUnit biggerUnit, CFAbsoluteTime at); + +extern +Boolean CFCalendarGetTimeRangeOfUnit(CFCalendarRef calendar, CFCalendarUnit unit, CFAbsoluteTime at, CFAbsoluteTime *startp, CFTimeInterval *tip) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +Boolean CFCalendarComposeAbsoluteTime(CFCalendarRef calendar, CFAbsoluteTime *at, const char *componentDesc, ...); + +extern +Boolean CFCalendarDecomposeAbsoluteTime(CFCalendarRef calendar, CFAbsoluteTime at, const char *componentDesc, ...); + + +enum { + kCFCalendarComponentsWrap = (1UL << 0) +}; + +extern +Boolean CFCalendarAddComponents(CFCalendarRef calendar, CFAbsoluteTime *at, CFOptionFlags options, const char *componentDesc, ...); + +extern +Boolean CFCalendarGetComponentDifference(CFCalendarRef calendar, CFAbsoluteTime startingAT, CFAbsoluteTime resultAT, CFOptionFlags options, const char *componentDesc, ...); + + +} + + + +extern "C" { + +typedef CFStringRef CFDateFormatterKey __attribute__((swift_wrapper(enum))); + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFDateFormatter *CFDateFormatterRef; + + + +extern +CFStringRef CFDateFormatterCreateDateFormatFromTemplate(CFAllocatorRef allocator, CFStringRef tmplate, CFOptionFlags options, CFLocaleRef locale) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +CFTypeID CFDateFormatterGetTypeID(void); +typedef CFIndex CFDateFormatterStyle; enum { + kCFDateFormatterNoStyle = 0, + kCFDateFormatterShortStyle = 1, + kCFDateFormatterMediumStyle = 2, + kCFDateFormatterLongStyle = 3, + kCFDateFormatterFullStyle = 4 +}; + +typedef CFOptionFlags CFISO8601DateFormatOptions; enum { + + + + + kCFISO8601DateFormatWithYear __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 0), + kCFISO8601DateFormatWithMonth __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 1), + + kCFISO8601DateFormatWithWeekOfYear __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 2), + + + + + + + kCFISO8601DateFormatWithDay __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 4), + + kCFISO8601DateFormatWithTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 5), + kCFISO8601DateFormatWithTimeZone __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 6), + + kCFISO8601DateFormatWithSpaceBetweenDateAndTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 7), + kCFISO8601DateFormatWithDashSeparatorInDate __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 8), + kCFISO8601DateFormatWithColonSeparatorInTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 9), + kCFISO8601DateFormatWithColonSeparatorInTimeZone __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = (1UL << 10), + kCFISO8601DateFormatWithFractionalSeconds __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) = (1UL << 11), + + kCFISO8601DateFormatWithFullDate __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithYear | kCFISO8601DateFormatWithMonth | kCFISO8601DateFormatWithDay | kCFISO8601DateFormatWithDashSeparatorInDate, + kCFISO8601DateFormatWithFullTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithTime | kCFISO8601DateFormatWithColonSeparatorInTime | kCFISO8601DateFormatWithTimeZone | kCFISO8601DateFormatWithColonSeparatorInTimeZone, + + kCFISO8601DateFormatWithInternetDateTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithFullDate | kCFISO8601DateFormatWithFullTime, +}; + +extern +CFDateFormatterRef CFDateFormatterCreateISO8601Formatter(CFAllocatorRef allocator, CFISO8601DateFormatOptions formatOptions) __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +extern +CFDateFormatterRef CFDateFormatterCreate(CFAllocatorRef allocator, CFLocaleRef locale, CFDateFormatterStyle dateStyle, CFDateFormatterStyle timeStyle); + + + +extern +CFLocaleRef CFDateFormatterGetLocale(CFDateFormatterRef formatter); + +extern +CFDateFormatterStyle CFDateFormatterGetDateStyle(CFDateFormatterRef formatter); + +extern +CFDateFormatterStyle CFDateFormatterGetTimeStyle(CFDateFormatterRef formatter); + + +extern +CFStringRef CFDateFormatterGetFormat(CFDateFormatterRef formatter); + +extern +void CFDateFormatterSetFormat(CFDateFormatterRef formatter, CFStringRef formatString); + + + + + + + +extern +CFStringRef CFDateFormatterCreateStringWithDate(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFDateRef date); + +extern +CFStringRef CFDateFormatterCreateStringWithAbsoluteTime(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFAbsoluteTime at); + + + + +extern +CFDateRef CFDateFormatterCreateDateFromString(CFAllocatorRef allocator, CFDateFormatterRef formatter, CFStringRef string, CFRange *rangep); + +extern +Boolean CFDateFormatterGetAbsoluteTimeFromString(CFDateFormatterRef formatter, CFStringRef string, CFRange *rangep, CFAbsoluteTime *atp); +extern +void CFDateFormatterSetProperty(CFDateFormatterRef formatter, CFStringRef key, CFTypeRef value); + +extern +CFTypeRef CFDateFormatterCopyProperty(CFDateFormatterRef formatter, CFDateFormatterKey key); + + + +extern const CFDateFormatterKey kCFDateFormatterIsLenient; +extern const CFDateFormatterKey kCFDateFormatterTimeZone; +extern const CFDateFormatterKey kCFDateFormatterCalendarName; +extern const CFDateFormatterKey kCFDateFormatterDefaultFormat; +extern const CFDateFormatterKey kCFDateFormatterTwoDigitStartDate; +extern const CFDateFormatterKey kCFDateFormatterDefaultDate; +extern const CFDateFormatterKey kCFDateFormatterCalendar; +extern const CFDateFormatterKey kCFDateFormatterEraSymbols; +extern const CFDateFormatterKey kCFDateFormatterMonthSymbols; +extern const CFDateFormatterKey kCFDateFormatterShortMonthSymbols; +extern const CFDateFormatterKey kCFDateFormatterWeekdaySymbols; +extern const CFDateFormatterKey kCFDateFormatterShortWeekdaySymbols; +extern const CFDateFormatterKey kCFDateFormatterAMSymbol; +extern const CFDateFormatterKey kCFDateFormatterPMSymbol; +extern const CFDateFormatterKey kCFDateFormatterLongEraSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterVeryShortMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterShortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterVeryShortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterVeryShortWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterShortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterVeryShortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterShortQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterStandaloneQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterShortStandaloneQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterGregorianStartDate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFDateFormatterKey kCFDateFormatterDoesRelativeDateFormattingKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +} + +extern "C" { + +typedef CFStringRef CFErrorDomain __attribute__((swift_wrapper(struct))); + + + + + +typedef struct __attribute__((objc_bridge(NSError))) __CFError * CFErrorRef; + + + + + +extern +CFTypeID CFErrorGetTypeID(void) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern const CFErrorDomain kCFErrorDomainPOSIX __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFErrorDomain kCFErrorDomainOSStatus __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFErrorDomain kCFErrorDomainMach __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFErrorDomain kCFErrorDomainCocoa __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern const CFStringRef kCFErrorLocalizedDescriptionKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFStringRef kCFErrorLocalizedFailureKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +extern const CFStringRef kCFErrorLocalizedFailureReasonKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFStringRef kCFErrorLocalizedRecoverySuggestionKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern const CFStringRef kCFErrorDescriptionKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern const CFStringRef kCFErrorUnderlyingErrorKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFStringRef kCFErrorURLKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFStringRef kCFErrorFilePathKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFErrorRef CFErrorCreate(CFAllocatorRef allocator, CFErrorDomain domain, CFIndex code, CFDictionaryRef userInfo) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFErrorRef CFErrorCreateWithUserInfoKeysAndValues(CFAllocatorRef allocator, CFErrorDomain domain, CFIndex code, const void *const *userInfoKeys, const void *const *userInfoValues, CFIndex numUserInfoValues) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +extern +CFErrorDomain CFErrorGetDomain(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +extern +CFIndex CFErrorGetCode(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFDictionaryRef CFErrorCopyUserInfo(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringRef CFErrorCopyDescription(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringRef CFErrorCopyFailureReason(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringRef CFErrorCopyRecoverySuggestion(CFErrorRef err) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +} + +extern "C" { + +typedef const struct __attribute__((objc_bridge(NSNumber))) __CFBoolean * CFBooleanRef; + +extern +const CFBooleanRef kCFBooleanTrue; +extern +const CFBooleanRef kCFBooleanFalse; + +extern +CFTypeID CFBooleanGetTypeID(void); + +extern +Boolean CFBooleanGetValue(CFBooleanRef boolean); + +typedef CFIndex CFNumberType; enum { + + kCFNumberSInt8Type = 1, + kCFNumberSInt16Type = 2, + kCFNumberSInt32Type = 3, + kCFNumberSInt64Type = 4, + kCFNumberFloat32Type = 5, + kCFNumberFloat64Type = 6, + + kCFNumberCharType = 7, + kCFNumberShortType = 8, + kCFNumberIntType = 9, + kCFNumberLongType = 10, + kCFNumberLongLongType = 11, + kCFNumberFloatType = 12, + kCFNumberDoubleType = 13, + + kCFNumberCFIndexType = 14, + kCFNumberNSIntegerType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 15, + kCFNumberCGFloatType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 16, + kCFNumberMaxType = 16 +}; + +typedef const struct __attribute__((objc_bridge(NSNumber))) __CFNumber * CFNumberRef; + +extern +const CFNumberRef kCFNumberPositiveInfinity; +extern +const CFNumberRef kCFNumberNegativeInfinity; +extern +const CFNumberRef kCFNumberNaN; + +extern +CFTypeID CFNumberGetTypeID(void); +extern +CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr); + + + + + +extern +CFNumberType CFNumberGetType(CFNumberRef number); + + + + +extern +CFIndex CFNumberGetByteSize(CFNumberRef number); + + + + + +extern +Boolean CFNumberIsFloatType(CFNumberRef number); +extern +Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr); +extern +CFComparisonResult CFNumberCompare(CFNumberRef number, CFNumberRef otherNumber, void *context); + +} +extern "C" { + +typedef CFStringRef CFNumberFormatterKey __attribute__((swift_wrapper(enum))); + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFNumberFormatter *CFNumberFormatterRef; + + + +extern +CFTypeID CFNumberFormatterGetTypeID(void); + +typedef CFIndex CFNumberFormatterStyle; enum { + kCFNumberFormatterNoStyle = 0, + kCFNumberFormatterDecimalStyle = 1, + kCFNumberFormatterCurrencyStyle = 2, + kCFNumberFormatterPercentStyle = 3, + kCFNumberFormatterScientificStyle = 4, + kCFNumberFormatterSpellOutStyle = 5, + kCFNumberFormatterOrdinalStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 6, + kCFNumberFormatterCurrencyISOCodeStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 8, + kCFNumberFormatterCurrencyPluralStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 9, + kCFNumberFormatterCurrencyAccountingStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 10, +}; + + +extern +CFNumberFormatterRef CFNumberFormatterCreate(CFAllocatorRef allocator, CFLocaleRef locale, CFNumberFormatterStyle style); + + + +extern +CFLocaleRef CFNumberFormatterGetLocale(CFNumberFormatterRef formatter); + +extern +CFNumberFormatterStyle CFNumberFormatterGetStyle(CFNumberFormatterRef formatter); + + +extern +CFStringRef CFNumberFormatterGetFormat(CFNumberFormatterRef formatter); + +extern +void CFNumberFormatterSetFormat(CFNumberFormatterRef formatter, CFStringRef formatString); +extern +CFStringRef CFNumberFormatterCreateStringWithNumber(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberRef number); + +extern +CFStringRef CFNumberFormatterCreateStringWithValue(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFNumberType numberType, const void *valuePtr); + + + + +typedef CFOptionFlags CFNumberFormatterOptionFlags; enum { + kCFNumberFormatterParseIntegersOnly = 1 +}; + +extern +CFNumberRef CFNumberFormatterCreateNumberFromString(CFAllocatorRef allocator, CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFOptionFlags options); + +extern +Boolean CFNumberFormatterGetValueFromString(CFNumberFormatterRef formatter, CFStringRef string, CFRange *rangep, CFNumberType numberType, void *valuePtr); +extern +void CFNumberFormatterSetProperty(CFNumberFormatterRef formatter, CFNumberFormatterKey key, CFTypeRef value); + +extern +CFTypeRef CFNumberFormatterCopyProperty(CFNumberFormatterRef formatter, CFNumberFormatterKey key); + + + +extern const CFNumberFormatterKey kCFNumberFormatterCurrencyCode; +extern const CFNumberFormatterKey kCFNumberFormatterDecimalSeparator; +extern const CFNumberFormatterKey kCFNumberFormatterCurrencyDecimalSeparator; +extern const CFNumberFormatterKey kCFNumberFormatterAlwaysShowDecimalSeparator; +extern const CFNumberFormatterKey kCFNumberFormatterGroupingSeparator; +extern const CFNumberFormatterKey kCFNumberFormatterUseGroupingSeparator; +extern const CFNumberFormatterKey kCFNumberFormatterPercentSymbol; +extern const CFNumberFormatterKey kCFNumberFormatterZeroSymbol; +extern const CFNumberFormatterKey kCFNumberFormatterNaNSymbol; +extern const CFNumberFormatterKey kCFNumberFormatterInfinitySymbol; +extern const CFNumberFormatterKey kCFNumberFormatterMinusSign; +extern const CFNumberFormatterKey kCFNumberFormatterPlusSign; +extern const CFNumberFormatterKey kCFNumberFormatterCurrencySymbol; +extern const CFNumberFormatterKey kCFNumberFormatterExponentSymbol; +extern const CFNumberFormatterKey kCFNumberFormatterMinIntegerDigits; +extern const CFNumberFormatterKey kCFNumberFormatterMaxIntegerDigits; +extern const CFNumberFormatterKey kCFNumberFormatterMinFractionDigits; +extern const CFNumberFormatterKey kCFNumberFormatterMaxFractionDigits; +extern const CFNumberFormatterKey kCFNumberFormatterGroupingSize; +extern const CFNumberFormatterKey kCFNumberFormatterSecondaryGroupingSize; +extern const CFNumberFormatterKey kCFNumberFormatterRoundingMode; +extern const CFNumberFormatterKey kCFNumberFormatterRoundingIncrement; +extern const CFNumberFormatterKey kCFNumberFormatterFormatWidth; +extern const CFNumberFormatterKey kCFNumberFormatterPaddingPosition; +extern const CFNumberFormatterKey kCFNumberFormatterPaddingCharacter; +extern const CFNumberFormatterKey kCFNumberFormatterDefaultFormat; +extern const CFNumberFormatterKey kCFNumberFormatterMultiplier; +extern const CFNumberFormatterKey kCFNumberFormatterPositivePrefix; +extern const CFNumberFormatterKey kCFNumberFormatterPositiveSuffix; +extern const CFNumberFormatterKey kCFNumberFormatterNegativePrefix; +extern const CFNumberFormatterKey kCFNumberFormatterNegativeSuffix; +extern const CFNumberFormatterKey kCFNumberFormatterPerMillSymbol; +extern const CFNumberFormatterKey kCFNumberFormatterInternationalCurrencySymbol; +extern const CFNumberFormatterKey kCFNumberFormatterCurrencyGroupingSeparator __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFNumberFormatterKey kCFNumberFormatterIsLenient __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFNumberFormatterKey kCFNumberFormatterUseSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFNumberFormatterKey kCFNumberFormatterMinSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern const CFNumberFormatterKey kCFNumberFormatterMaxSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef CFIndex CFNumberFormatterRoundingMode; enum { + kCFNumberFormatterRoundCeiling = 0, + kCFNumberFormatterRoundFloor = 1, + kCFNumberFormatterRoundDown = 2, + kCFNumberFormatterRoundUp = 3, + kCFNumberFormatterRoundHalfEven = 4, + kCFNumberFormatterRoundHalfDown = 5, + kCFNumberFormatterRoundHalfUp = 6 +}; + +typedef CFIndex CFNumberFormatterPadPosition; enum { + kCFNumberFormatterPadBeforePrefix = 0, + kCFNumberFormatterPadAfterPrefix = 1, + kCFNumberFormatterPadBeforeSuffix = 2, + kCFNumberFormatterPadAfterSuffix = 3 +}; + + +extern +Boolean CFNumberFormatterGetDecimalInfoForCurrencyCode(CFStringRef currencyCode, int32_t *defaultFractionDigits, double *roundingIncrement); + + + + + + +} +#pragma clang assume_nonnull begin +extern "C" { + +extern +const CFStringRef kCFPreferencesAnyApplication; +extern +const CFStringRef kCFPreferencesCurrentApplication; +extern +const CFStringRef kCFPreferencesAnyHost; +extern +const CFStringRef kCFPreferencesCurrentHost; +extern +const CFStringRef kCFPreferencesAnyUser; +extern +const CFStringRef kCFPreferencesCurrentUser; +extern +_Nullable CFPropertyListRef CFPreferencesCopyAppValue(CFStringRef key, CFStringRef applicationID); + + + + +extern +Boolean CFPreferencesGetAppBooleanValue(CFStringRef key, CFStringRef applicationID, Boolean * _Nullable keyExistsAndHasValidFormat); + + + + +extern +CFIndex CFPreferencesGetAppIntegerValue(CFStringRef key, CFStringRef applicationID, Boolean * _Nullable keyExistsAndHasValidFormat); + + + + +extern +void CFPreferencesSetAppValue(CFStringRef key, _Nullable CFPropertyListRef value, CFStringRef applicationID); + + + + + +extern +void CFPreferencesAddSuitePreferencesToApp(CFStringRef applicationID, CFStringRef suiteID); + +extern +void CFPreferencesRemoveSuitePreferencesFromApp(CFStringRef applicationID, CFStringRef suiteID); + + + +extern +Boolean CFPreferencesAppSynchronize(CFStringRef applicationID); + + + + + +extern +_Nullable CFPropertyListRef CFPreferencesCopyValue(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + + + + + +extern +CFDictionaryRef CFPreferencesCopyMultiple(_Nullable CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + + + +extern +void CFPreferencesSetValue(CFStringRef key, _Nullable CFPropertyListRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + + + +extern +void CFPreferencesSetMultiple(_Nullable CFDictionaryRef keysToSet, _Nullable CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + +extern +Boolean CFPreferencesSynchronize(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + + + + + +extern +_Nullable CFArrayRef CFPreferencesCopyApplicationList(CFStringRef userName, CFStringRef hostName) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Unsupported API"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Unsupported API"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Unsupported API"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Unsupported API"))); + + + + +extern +_Nullable CFArrayRef CFPreferencesCopyKeyList(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName); + + + + + + + +extern +Boolean CFPreferencesAppValueIsForced(CFStringRef key, CFStringRef applicationID); + + + +} +#pragma clang assume_nonnull end +extern "C" { + +typedef CFIndex CFURLPathStyle; enum { + kCFURLPOSIXPathStyle = 0, + kCFURLHFSPathStyle __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Carbon File Manager is deprecated, use kCFURLPOSIXPathStyle where possible"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Carbon File Manager is deprecated, use kCFURLPOSIXPathStyle where possible"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Carbon File Manager is deprecated, use kCFURLPOSIXPathStyle where possible"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Carbon File Manager is deprecated, use kCFURLPOSIXPathStyle where possible"))), + kCFURLWindowsPathStyle +}; + +typedef const struct __attribute__((objc_bridge(NSURL))) __CFURL * CFURLRef; +extern +CFTypeID CFURLGetTypeID(void); +extern +CFURLRef CFURLCreateWithBytes(CFAllocatorRef allocator, const UInt8 *URLBytes, CFIndex length, CFStringEncoding encoding, CFURLRef baseURL); + + + + + +extern +CFDataRef CFURLCreateData(CFAllocatorRef allocator, CFURLRef url, CFStringEncoding encoding, Boolean escapeWhitespace); + + +extern +CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL); +extern +CFURLRef CFURLCreateAbsoluteURLWithBytes(CFAllocatorRef alloc, const UInt8 *relativeURLBytes, CFIndex length, CFStringEncoding encoding, CFURLRef baseURL, Boolean useCompatibilityMode); + + + + + + + +extern +CFURLRef CFURLCreateWithFileSystemPath(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory); + +extern +CFURLRef CFURLCreateFromFileSystemRepresentation(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory); + + + + + + + +extern +CFURLRef CFURLCreateWithFileSystemPathRelativeToBase(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL); + +extern +CFURLRef CFURLCreateFromFileSystemRepresentationRelativeToBase(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory, CFURLRef baseURL); +extern +Boolean CFURLGetFileSystemRepresentation(CFURLRef url, Boolean resolveAgainstBase, UInt8 *buffer, CFIndex maxBufLen); + + +extern +CFURLRef CFURLCopyAbsoluteURL(CFURLRef relativeURL); + + +extern +CFStringRef CFURLGetString(CFURLRef anURL); + + +extern +CFURLRef CFURLGetBaseURL(CFURLRef anURL); +extern +Boolean CFURLCanBeDecomposed(CFURLRef anURL); + +extern +CFStringRef CFURLCopyScheme(CFURLRef anURL); + + +extern +CFStringRef CFURLCopyNetLocation(CFURLRef anURL); +extern +CFStringRef CFURLCopyPath(CFURLRef anURL); + + +extern +CFStringRef CFURLCopyStrictPath(CFURLRef anURL, Boolean *isAbsolute); + + + + +extern +CFStringRef CFURLCopyFileSystemPath(CFURLRef anURL, CFURLPathStyle pathStyle); + + + +extern +Boolean CFURLHasDirectoryPath(CFURLRef anURL); + + + + +extern +CFStringRef CFURLCopyResourceSpecifier(CFURLRef anURL); + + +extern +CFStringRef CFURLCopyHostName(CFURLRef anURL); + +extern +SInt32 CFURLGetPortNumber(CFURLRef anURL); + + +extern +CFStringRef CFURLCopyUserName(CFURLRef anURL); + + +extern +CFStringRef CFURLCopyPassword(CFURLRef anURL); + + + + + + + +extern +CFStringRef CFURLCopyParameterString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped) __attribute__((availability(macosx,introduced=10.2,deprecated=10.15,message="The CFURLCopyParameterString function is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, CFURLCopyParameterString will always return NULL, and the CFURLCopyPath(), CFURLCopyStrictPath(), and CFURLCopyFileSystemPath() functions will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="The CFURLCopyParameterString function is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, CFURLCopyParameterString will always return NULL, and the CFURLCopyPath(), CFURLCopyStrictPath(), and CFURLCopyFileSystemPath() functions will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="The CFURLCopyParameterString function is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, CFURLCopyParameterString will always return NULL, and the CFURLCopyPath(), CFURLCopyStrictPath(), and CFURLCopyFileSystemPath() functions will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="The CFURLCopyParameterString function is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, CFURLCopyParameterString will always return NULL, and the CFURLCopyPath(), CFURLCopyStrictPath(), and CFURLCopyFileSystemPath() functions will return the complete path including the semicolon separator and params component if the URL string contains them."))); +extern +CFStringRef CFURLCopyQueryString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped); + +extern +CFStringRef CFURLCopyFragment(CFURLRef anURL, CFStringRef charactersToLeaveEscaped); + + +extern +CFStringRef CFURLCopyLastPathComponent(CFURLRef url); + + +extern +CFStringRef CFURLCopyPathExtension(CFURLRef url); + +extern +CFURLRef CFURLCreateCopyAppendingPathComponent(CFAllocatorRef allocator, CFURLRef url, CFStringRef pathComponent, Boolean isDirectory); + +extern +CFURLRef CFURLCreateCopyDeletingLastPathComponent(CFAllocatorRef allocator, CFURLRef url); + +extern +CFURLRef CFURLCreateCopyAppendingPathExtension(CFAllocatorRef allocator, CFURLRef url, CFStringRef extension); + +extern +CFURLRef CFURLCreateCopyDeletingPathExtension(CFAllocatorRef allocator, CFURLRef url); + + + + + + + +extern +CFIndex CFURLGetBytes(CFURLRef url, UInt8 *buffer, CFIndex bufferLength); + +typedef CFIndex CFURLComponentType; enum { + kCFURLComponentScheme = 1, + kCFURLComponentNetLocation = 2, + kCFURLComponentPath = 3, + kCFURLComponentResourceSpecifier = 4, + + kCFURLComponentUser = 5, + kCFURLComponentPassword = 6, + kCFURLComponentUserInfo = 7, + kCFURLComponentHost = 8, + kCFURLComponentPort = 9, + kCFURLComponentParameterString = 10, + kCFURLComponentQuery = 11, + kCFURLComponentFragment = 12 +}; +extern +CFRange CFURLGetByteRangeForComponent(CFURLRef url, CFURLComponentType component, CFRange *rangeIncludingSeparators); +extern +CFStringRef CFURLCreateStringByReplacingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveEscaped); + + +extern +CFStringRef CFURLCreateStringByReplacingPercentEscapesUsingEncoding(CFAllocatorRef allocator, CFStringRef origString, CFStringRef charsToLeaveEscaped, CFStringEncoding encoding) __attribute__((availability(macos,introduced=10.0,deprecated=10.11,message="Use [NSString stringByRemovingPercentEncoding] or CFURLCreateStringByReplacingPercentEscapes() instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use [NSString stringByRemovingPercentEncoding] or CFURLCreateStringByReplacingPercentEscapes() instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use [NSString stringByRemovingPercentEncoding] or CFURLCreateStringByReplacingPercentEscapes() instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use [NSString stringByRemovingPercentEncoding] or CFURLCreateStringByReplacingPercentEscapes() instead, which always uses the recommended UTF-8 encoding."))); +extern +CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) __attribute__((availability(macos,introduced=10.0,deprecated=10.11,message="Use [NSString 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)."))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use [NSString 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)."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use [NSString 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)."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use [NSString 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)."))); +extern +Boolean CFURLIsFileReferenceURL(CFURLRef url) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFURLRef CFURLCreateFileReferenceURL(CFAllocatorRef allocator, CFURLRef url, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFURLRef CFURLCreateFilePathURL(CFAllocatorRef allocator, CFURLRef url, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +struct FSRef; + + + +extern +CFURLRef CFURLCreateFromFSRef(CFAllocatorRef allocator, const struct FSRef *fsRef) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + +extern +Boolean CFURLGetFSRef(CFURLRef url, struct FSRef *fsRef) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); +extern +Boolean CFURLCopyResourcePropertyForKey(CFURLRef url, CFStringRef key, void *propertyValueTypeRefPtr, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFDictionaryRef CFURLCopyResourcePropertiesForKeys(CFURLRef url, CFArrayRef keys, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFURLSetResourcePropertyForKey(CFURLRef url, CFStringRef key, CFTypeRef propertyValue, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFURLSetResourcePropertiesForKeys(CFURLRef url, CFDictionaryRef keyedPropertyValues, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLKeysOfUnsetValuesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +void CFURLClearResourcePropertyCacheForKey(CFURLRef url, CFStringRef key) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +void CFURLClearResourcePropertyCache(CFURLRef url) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +void CFURLSetTemporaryResourcePropertyForKey(CFURLRef url, CFStringRef key, CFTypeRef propertyValue) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFURLResourceIsReachable(CFURLRef url, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +const CFStringRef kCFURLNameKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLLocalizedNameKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsRegularFileKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsDirectoryKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsSymbolicLinkKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsVolumeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsPackageKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsApplicationKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLApplicationIsScriptableKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern +const CFStringRef kCFURLIsSystemImmutableKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsUserImmutableKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsHiddenKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLHasHiddenExtensionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLCreationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLContentAccessDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLContentModificationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLAttributeModificationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLLinkCountKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLParentDirectoryURLKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeURLKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLTypeIdentifierKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLLocalizedTypeDescriptionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLLabelNumberKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLLabelColorKey __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message="Use NSURLLabelColorKey"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use NSURLLabelColorKey"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Use NSURLLabelColorKey"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Use NSURLLabelColorKey"))); + + +extern +const CFStringRef kCFURLLocalizedLabelKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLEffectiveIconKey __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message="Use NSURLEffectiveIconKey"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use NSURLEffectiveIconKey"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Use NSURLEffectiveIconKey"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Use NSURLEffectiveIconKey"))); + + +extern +const CFStringRef kCFURLCustomIconKey __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message="Use NSURLCustomIconKey"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use NSURLCustomIconKey"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Use NSURLCustomIconKey"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Use NSURLCustomIconKey"))); + + +extern +const CFStringRef kCFURLFileResourceIdentifierKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIdentifierKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLPreferredIOBlockSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsReadableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsWritableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsExecutableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLFileSecurityKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsExcludedFromBackupKey __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=5.1))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLTagNamesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern +const CFStringRef kCFURLPathKey __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLCanonicalPathKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLIsMountTriggerKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLGenerationIdentifierKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLDocumentIdentifierKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLAddedToDirectoryDateKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLQuarantinePropertiesKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern +const CFStringRef kCFURLFileResourceTypeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +const CFStringRef kCFURLFileResourceTypeNamedPipe __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeCharacterSpecial __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeDirectory __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeBlockSpecial __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeRegular __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeSymbolicLink __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeSocket __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +const CFStringRef kCFURLFileResourceTypeUnknown __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +const CFStringRef kCFURLFileSizeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLFileAllocatedSizeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLTotalFileSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLTotalFileAllocatedSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLIsAliasFileKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLFileProtectionKey __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + +extern +const CFStringRef kCFURLFileProtectionNone __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +extern +const CFStringRef kCFURLFileProtectionComplete __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +extern +const CFStringRef kCFURLFileProtectionCompleteUnlessOpen __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +extern +const CFStringRef kCFURLFileProtectionCompleteUntilFirstUserAuthentication __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + + +extern +const CFStringRef kCFURLVolumeLocalizedFormatDescriptionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeTotalCapacityKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeAvailableCapacityKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeAvailableCapacityForImportantUsageKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + +extern +const CFStringRef kCFURLVolumeAvailableCapacityForOpportunisticUsageKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +extern +const CFStringRef kCFURLVolumeResourceCountKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsPersistentIDsKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsSymbolicLinksKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsHardLinksKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsJournalingKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsJournalingKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsSparseFilesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsZeroRunsKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsCaseSensitiveNamesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsCasePreservedNamesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsRootDirectoryDatesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsVolumeSizesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsRenamingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsAdvisoryFileLockingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsExtendedSecurityKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsBrowsableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeMaximumFileSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsEjectableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsRemovableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsInternalKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsAutomountedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsLocalKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsReadOnlyKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeCreationDateKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeURLForRemountingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeUUIDStringKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeLocalizedNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLVolumeIsEncryptedKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeIsRootFileSystemKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsCompressionKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsFileCloningKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsSwapRenamingKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsExclusiveRenamingKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsImmutableFilesKey __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +extern +const CFStringRef kCFURLVolumeSupportsAccessPermissionsKey __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +extern +const CFStringRef kCFURLIsUbiquitousItemKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemHasUnresolvedConflictsKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemIsDownloadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.9,message="Use kCFURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use kCFURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use kCFURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use kCFURLUbiquitousItemDownloadingStatusKey instead"))); + + +extern +const CFStringRef kCFURLUbiquitousItemIsDownloadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemIsUploadedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemIsUploadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemPercentDownloadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.8,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentDownloadedKey on NSMetadataItem instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentDownloadedKey on NSMetadataItem instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentDownloadedKey on NSMetadataItem instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentDownloadedKey on NSMetadataItem instead"))); + + +extern +const CFStringRef kCFURLUbiquitousItemPercentUploadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.8,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentUploadedKey on NSMetadataItem instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentUploadedKey on NSMetadataItem instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentUploadedKey on NSMetadataItem instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSMetadataQuery and NSMetadataUbiquitousItemPercentUploadedKey on NSMetadataItem instead"))); + + +extern +const CFStringRef kCFURLUbiquitousItemDownloadingStatusKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemDownloadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemUploadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern +const CFStringRef kCFURLUbiquitousItemDownloadingStatusNotDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemDownloadingStatusDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern +const CFStringRef kCFURLUbiquitousItemDownloadingStatusCurrent __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef CFOptionFlags CFURLBookmarkCreationOptions; enum { + kCFURLBookmarkCreationMinimalBookmarkMask = ( 1UL << 9 ), + kCFURLBookmarkCreationSuitableForBookmarkFile = ( 1UL << 10 ), + kCFURLBookmarkCreationWithSecurityScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1UL << 11 ), + kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1UL << 12 ), + + + kCFURLBookmarkCreationPreferFileIDResolutionMask + __attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="kCFURLBookmarkCreationPreferFileIDResolutionMask does nothing and has no effect on bookmark resolution"))) __attribute__((availability(ios,introduced=4.0,deprecated=7.0,message="kCFURLBookmarkCreationPreferFileIDResolutionMask does nothing and has no effect on bookmark resolution"))) = ( 1UL << 8 ), +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef CFOptionFlags CFURLBookmarkResolutionOptions; enum { + kCFURLBookmarkResolutionWithoutUIMask = ( 1UL << 8 ), + kCFURLBookmarkResolutionWithoutMountingMask = ( 1UL << 9 ), + kCFURLBookmarkResolutionWithSecurityScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1UL << 10 ), + + kCFBookmarkResolutionWithoutUIMask = kCFURLBookmarkResolutionWithoutUIMask, + kCFBookmarkResolutionWithoutMountingMask = kCFURLBookmarkResolutionWithoutMountingMask, +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef CFOptionFlags CFURLBookmarkFileCreationOptions; + + + + + +extern +CFDataRef CFURLCreateBookmarkData ( CFAllocatorRef allocator, CFURLRef url, CFURLBookmarkCreationOptions options, CFArrayRef resourcePropertiesToInclude, CFURLRef relativeToURL, CFErrorRef* error ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFURLRef CFURLCreateByResolvingBookmarkData ( CFAllocatorRef allocator, CFDataRef bookmark, CFURLBookmarkResolutionOptions options, CFURLRef relativeToURL, CFArrayRef resourcePropertiesToInclude, Boolean* isStale, CFErrorRef* error ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFDictionaryRef CFURLCreateResourcePropertiesForKeysFromBookmarkData ( CFAllocatorRef allocator, CFArrayRef resourcePropertiesToReturn, CFDataRef bookmark ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFTypeRef CFURLCreateResourcePropertyForKeyFromBookmarkData( CFAllocatorRef allocator, CFStringRef resourcePropertyKey, CFDataRef bookmark ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFDataRef CFURLCreateBookmarkDataFromFile(CFAllocatorRef allocator, CFURLRef fileURL, CFErrorRef *errorRef ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +Boolean CFURLWriteBookmarkDataToFile( CFDataRef bookmarkRef, CFURLRef fileURL, CFURLBookmarkFileCreationOptions options, CFErrorRef *errorRef ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFDataRef CFURLCreateBookmarkDataFromAliasRecord ( CFAllocatorRef allocatorRef, CFDataRef aliasRecordDataRef ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + +extern +Boolean CFURLStartAccessingSecurityScopedResource(CFURLRef url) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +void CFURLStopAccessingSecurityScopedResource(CFURLRef url) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +} +typedef int boolean_t; +typedef __darwin_natural_t natural_t; +typedef int integer_t; + + + + + + +typedef uintptr_t vm_offset_t; +typedef uintptr_t vm_size_t; + +typedef uint64_t mach_vm_address_t; +typedef uint64_t mach_vm_offset_t; +typedef uint64_t mach_vm_size_t; + +typedef uint64_t vm_map_offset_t; +typedef uint64_t vm_map_address_t; +typedef uint64_t vm_map_size_t; +typedef uint32_t vm32_offset_t; +typedef uint32_t vm32_address_t; +typedef uint32_t vm32_size_t; + +typedef vm_offset_t mach_port_context_t; +typedef natural_t mach_port_name_t; +typedef mach_port_name_t *mach_port_name_array_t; +typedef __darwin_mach_port_t mach_port_t; + + +typedef mach_port_t *mach_port_array_t; +typedef natural_t mach_port_right_t; +typedef natural_t mach_port_type_t; +typedef mach_port_type_t *mach_port_type_array_t; +typedef natural_t mach_port_urefs_t; +typedef integer_t mach_port_delta_t; + + + +typedef natural_t mach_port_seqno_t; +typedef natural_t mach_port_mscount_t; +typedef natural_t mach_port_msgcount_t; +typedef natural_t mach_port_rights_t; + + + + + + +typedef unsigned int mach_port_srights_t; + +typedef struct mach_port_status { + mach_port_rights_t mps_pset; + mach_port_seqno_t mps_seqno; + mach_port_mscount_t mps_mscount; + mach_port_msgcount_t mps_qlimit; + mach_port_msgcount_t mps_msgcount; + mach_port_rights_t mps_sorights; + boolean_t mps_srights; + boolean_t mps_pdrequest; + boolean_t mps_nsrequest; + natural_t mps_flags; +} mach_port_status_t; +typedef struct mach_port_limits { + mach_port_msgcount_t mpl_qlimit; +} mach_port_limits_t; +typedef struct mach_port_info_ext { + mach_port_status_t mpie_status; + mach_port_msgcount_t mpie_boost_cnt; + uint32_t reserved[6]; +} mach_port_info_ext_t; + +typedef integer_t *mach_port_info_t; + + +typedef int mach_port_flavor_t; +typedef struct mach_port_qos { + unsigned int name:1; + unsigned int prealloc:1; + boolean_t pad1:30; + natural_t len; +} mach_port_qos_t; +typedef struct mach_port_options { + uint32_t flags; + mach_port_limits_t mpl; + uint64_t reserved[2]; +}mach_port_options_t; + +typedef mach_port_options_t *mach_port_options_ptr_t; +enum mach_port_guard_exception_codes { + kGUARD_EXC_DESTROY = 1u << 0, + kGUARD_EXC_MOD_REFS = 1u << 1, + kGUARD_EXC_SET_CONTEXT = 1u << 2, + kGUARD_EXC_UNGUARDED = 1u << 3, + kGUARD_EXC_INCORRECT_GUARD = 1u << 4, + kGUARD_EXC_IMMOVABLE = 1u << 5, + kGUARD_EXC_STRICT_REPLY = 1u << 6, + + 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_RCV_GUARDED_DESC = 1u << 20, +}; + + + +extern "C" { + +typedef CFStringRef CFRunLoopMode __attribute__((swift_wrapper(struct))); + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFRunLoop * CFRunLoopRef; + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFRunLoopSource * CFRunLoopSourceRef; + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFRunLoopObserver * CFRunLoopObserverRef; + +typedef struct __attribute__((objc_bridge_mutable(NSTimer))) __CFRunLoopTimer * CFRunLoopTimerRef; + + +typedef SInt32 CFRunLoopRunResult; enum { + kCFRunLoopRunFinished = 1, + kCFRunLoopRunStopped = 2, + kCFRunLoopRunTimedOut = 3, + kCFRunLoopRunHandledSource = 4 +}; + + +typedef CFOptionFlags CFRunLoopActivity; enum { + kCFRunLoopEntry = (1UL << 0), + kCFRunLoopBeforeTimers = (1UL << 1), + kCFRunLoopBeforeSources = (1UL << 2), + kCFRunLoopBeforeWaiting = (1UL << 5), + kCFRunLoopAfterWaiting = (1UL << 6), + kCFRunLoopExit = (1UL << 7), + kCFRunLoopAllActivities = 0x0FFFFFFFU +}; + +extern const CFRunLoopMode kCFRunLoopDefaultMode; +extern const CFRunLoopMode kCFRunLoopCommonModes; + +extern CFTypeID CFRunLoopGetTypeID(void); + +extern CFRunLoopRef CFRunLoopGetCurrent(void); +extern CFRunLoopRef CFRunLoopGetMain(void); + +extern CFRunLoopMode CFRunLoopCopyCurrentMode(CFRunLoopRef rl); + +extern CFArrayRef CFRunLoopCopyAllModes(CFRunLoopRef rl); + +extern void CFRunLoopAddCommonMode(CFRunLoopRef rl, CFRunLoopMode mode); + +extern CFAbsoluteTime CFRunLoopGetNextTimerFireDate(CFRunLoopRef rl, CFRunLoopMode mode); + +extern void CFRunLoopRun(void); +extern CFRunLoopRunResult CFRunLoopRunInMode(CFRunLoopMode mode, CFTimeInterval seconds, Boolean returnAfterSourceHandled); +extern Boolean CFRunLoopIsWaiting(CFRunLoopRef rl); +extern void CFRunLoopWakeUp(CFRunLoopRef rl); +extern void CFRunLoopStop(CFRunLoopRef rl); + + +extern void CFRunLoopPerformBlock(CFRunLoopRef rl, CFTypeRef mode, void (*block)(void)) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern Boolean CFRunLoopContainsSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFRunLoopMode mode); +extern void CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFRunLoopMode mode); +extern void CFRunLoopRemoveSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFRunLoopMode mode); + +extern Boolean CFRunLoopContainsObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFRunLoopMode mode); +extern void CFRunLoopAddObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFRunLoopMode mode); +extern void CFRunLoopRemoveObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFRunLoopMode mode); + +extern Boolean CFRunLoopContainsTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFRunLoopMode mode); +extern void CFRunLoopAddTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFRunLoopMode mode); +extern void CFRunLoopRemoveTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFRunLoopMode mode); + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); + Boolean (*equal)(const void *info1, const void *info2); + CFHashCode (*hash)(const void *info); + void (*schedule)(void *info, CFRunLoopRef rl, CFRunLoopMode mode); + void (*cancel)(void *info, CFRunLoopRef rl, CFRunLoopMode mode); + void (*perform)(void *info); +} CFRunLoopSourceContext; + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); + Boolean (*equal)(const void *info1, const void *info2); + CFHashCode (*hash)(const void *info); + + mach_port_t (*getPort)(void *info); + void * (*perform)(void *msg, CFIndex size, CFAllocatorRef allocator, void *info); + + + + +} CFRunLoopSourceContext1; + +extern CFTypeID CFRunLoopSourceGetTypeID(void); + +extern CFRunLoopSourceRef CFRunLoopSourceCreate(CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context); + +extern CFIndex CFRunLoopSourceGetOrder(CFRunLoopSourceRef source); +extern void CFRunLoopSourceInvalidate(CFRunLoopSourceRef source); +extern Boolean CFRunLoopSourceIsValid(CFRunLoopSourceRef source); +extern void CFRunLoopSourceGetContext(CFRunLoopSourceRef source, CFRunLoopSourceContext *context); +extern void CFRunLoopSourceSignal(CFRunLoopSourceRef source); + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFRunLoopObserverContext; + +typedef void (*CFRunLoopObserverCallBack)(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info); + +extern CFTypeID CFRunLoopObserverGetTypeID(void); + +extern CFRunLoopObserverRef CFRunLoopObserverCreate(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats, CFIndex order, CFRunLoopObserverCallBack callout, CFRunLoopObserverContext *context); + +extern CFRunLoopObserverRef CFRunLoopObserverCreateWithHandler(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats, CFIndex order, void (*block) (CFRunLoopObserverRef observer, CFRunLoopActivity activity)) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern CFOptionFlags CFRunLoopObserverGetActivities(CFRunLoopObserverRef observer); +extern Boolean CFRunLoopObserverDoesRepeat(CFRunLoopObserverRef observer); +extern CFIndex CFRunLoopObserverGetOrder(CFRunLoopObserverRef observer); +extern void CFRunLoopObserverInvalidate(CFRunLoopObserverRef observer); +extern Boolean CFRunLoopObserverIsValid(CFRunLoopObserverRef observer); +extern void CFRunLoopObserverGetContext(CFRunLoopObserverRef observer, CFRunLoopObserverContext *context); + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFRunLoopTimerContext; + +typedef void (*CFRunLoopTimerCallBack)(CFRunLoopTimerRef timer, void *info); + +extern CFTypeID CFRunLoopTimerGetTypeID(void); + +extern CFRunLoopTimerRef CFRunLoopTimerCreate(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, CFRunLoopTimerCallBack callout, CFRunLoopTimerContext *context); + +extern CFRunLoopTimerRef CFRunLoopTimerCreateWithHandler(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, void (*block) (CFRunLoopTimerRef timer)) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern CFAbsoluteTime CFRunLoopTimerGetNextFireDate(CFRunLoopTimerRef timer); +extern void CFRunLoopTimerSetNextFireDate(CFRunLoopTimerRef timer, CFAbsoluteTime fireDate); +extern CFTimeInterval CFRunLoopTimerGetInterval(CFRunLoopTimerRef timer); +extern Boolean CFRunLoopTimerDoesRepeat(CFRunLoopTimerRef timer); +extern CFIndex CFRunLoopTimerGetOrder(CFRunLoopTimerRef timer); +extern void CFRunLoopTimerInvalidate(CFRunLoopTimerRef timer); +extern Boolean CFRunLoopTimerIsValid(CFRunLoopTimerRef timer); +extern void CFRunLoopTimerGetContext(CFRunLoopTimerRef timer, CFRunLoopTimerContext *context); + + + +extern CFTimeInterval CFRunLoopTimerGetTolerance(CFRunLoopTimerRef timer) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern void CFRunLoopTimerSetTolerance(CFRunLoopTimerRef timer, CFTimeInterval tolerance) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} +extern "C" { + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFSocket * CFSocketRef; +typedef CFIndex CFSocketError; enum { + kCFSocketSuccess = 0, + kCFSocketError = -1L, + kCFSocketTimeout = -2L +}; + +typedef struct { + SInt32 protocolFamily; + SInt32 socketType; + SInt32 protocol; + CFDataRef address; +} CFSocketSignature; + + +typedef CFOptionFlags CFSocketCallBackType; enum { + kCFSocketNoCallBack = 0, + kCFSocketReadCallBack = 1, + kCFSocketAcceptCallBack = 2, + kCFSocketDataCallBack = 3, + kCFSocketConnectCallBack = 4, + kCFSocketWriteCallBack = 8 +}; + + +enum { + kCFSocketAutomaticallyReenableReadCallBack = 1, + kCFSocketAutomaticallyReenableAcceptCallBack = 2, + kCFSocketAutomaticallyReenableDataCallBack = 3, + kCFSocketAutomaticallyReenableWriteCallBack = 8, + kCFSocketLeaveErrors __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 64, + kCFSocketCloseOnInvalidate = 128 +}; + +typedef void (*CFSocketCallBack)(CFSocketRef s, CFSocketCallBackType type, CFDataRef address, const void *data, void *info); + + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFSocketContext; + + +typedef int CFSocketNativeHandle; + + +extern CFTypeID CFSocketGetTypeID(void); + +extern CFSocketRef CFSocketCreate(CFAllocatorRef allocator, SInt32 protocolFamily, SInt32 socketType, SInt32 protocol, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context); +extern CFSocketRef CFSocketCreateWithNative(CFAllocatorRef allocator, CFSocketNativeHandle sock, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context); +extern CFSocketRef CFSocketCreateWithSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context); + +extern CFSocketRef CFSocketCreateConnectedToSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context, CFTimeInterval timeout); + + +extern CFSocketError CFSocketSetAddress(CFSocketRef s, CFDataRef address); +extern CFSocketError CFSocketConnectToAddress(CFSocketRef s, CFDataRef address, CFTimeInterval timeout); +extern void CFSocketInvalidate(CFSocketRef s); + +extern Boolean CFSocketIsValid(CFSocketRef s); +extern CFDataRef CFSocketCopyAddress(CFSocketRef s); +extern CFDataRef CFSocketCopyPeerAddress(CFSocketRef s); +extern void CFSocketGetContext(CFSocketRef s, CFSocketContext *context); +extern CFSocketNativeHandle CFSocketGetNative(CFSocketRef s); + +extern CFRunLoopSourceRef CFSocketCreateRunLoopSource(CFAllocatorRef allocator, CFSocketRef s, CFIndex order); + +extern CFOptionFlags CFSocketGetSocketFlags(CFSocketRef s); +extern void CFSocketSetSocketFlags(CFSocketRef s, CFOptionFlags flags); +extern void CFSocketDisableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes); +extern void CFSocketEnableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes); + + + +extern CFSocketError CFSocketSendData(CFSocketRef s, CFDataRef address, CFDataRef data, CFTimeInterval timeout); +extern CFSocketError CFSocketRegisterValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef value); +extern CFSocketError CFSocketCopyRegisteredValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef *value, CFDataRef *nameServerAddress); + +extern CFSocketError CFSocketRegisterSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, const CFSocketSignature *signature); +extern CFSocketError CFSocketCopyRegisteredSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFSocketSignature *signature, CFDataRef *nameServerAddress); + +extern CFSocketError CFSocketUnregister(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name); + +extern void CFSocketSetDefaultNameRegistryPortNumber(UInt16 port); +extern UInt16 CFSocketGetDefaultNameRegistryPortNumber(void); + + +extern const CFStringRef kCFSocketCommandKey; +extern const CFStringRef kCFSocketNameKey; +extern const CFStringRef kCFSocketValueKey; +extern const CFStringRef kCFSocketResultKey; +extern const CFStringRef kCFSocketErrorKey; +extern const CFStringRef kCFSocketRegisterCommand; +extern const CFStringRef kCFSocketRetrieveCommand; + +} + +typedef void (*os_function_t)(void *_Nullable); +typedef void (*os_block_t)(void); + + + + + + + + + + + +struct accessx_descriptor { + unsigned int ad_name_offset; + int ad_flags; + int ad_pad[2]; +}; +extern "C" { + +int getattrlistbulk(int, void *, void *, size_t, uint64_t) __attribute__((availability(ios,introduced=8.0))); +int getattrlistat(int, const char *, void *, void *, size_t, unsigned long) __attribute__((availability(ios,introduced=8.0))); +int setattrlistat(int, const char *, void *, void *, size_t, uint32_t) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +} +extern "C" { + +int faccessat(int, const char *, int, int) __attribute__((availability(ios,introduced=8.0))); +int fchownat(int, const char *, uid_t, gid_t, int) __attribute__((availability(ios,introduced=8.0))); +int linkat(int, const char *, int, const char *, int) __attribute__((availability(ios,introduced=8.0))); +ssize_t readlinkat(int, const char *, char *, size_t) __attribute__((availability(ios,introduced=8.0))); +int symlinkat(const char *, int, const char *) __attribute__((availability(ios,introduced=8.0))); +int unlinkat(int, const char *, int) __attribute__((availability(ios,introduced=8.0))); + +} +extern "C" { +void _exit(int) __attribute__((__noreturn__)); +int access(const char *, int); +unsigned int + alarm(unsigned int); +int chdir(const char *); +int chown(const char *, uid_t, gid_t); + +int close(int) __asm("_" "close" ); + +int dup(int); +int dup2(int, int); +int execl(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int execle(const char * __path, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int execlp(const char * __file, const char * __arg0, ...) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int execv(const char * __path, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int execve(const char * __file, char * const * __argv, char * const * __envp) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int execvp(const char * __file, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +pid_t fork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +long fpathconf(int, int); +char *getcwd(char *, size_t); +gid_t getegid(void); +uid_t geteuid(void); +gid_t getgid(void); + + + +int getgroups(int, gid_t []); + +char *getlogin(void); +pid_t getpgrp(void); +pid_t getpid(void); +pid_t getppid(void); +uid_t getuid(void); +int isatty(int); +int link(const char *, const char *); +off_t lseek(int, off_t, int); +long pathconf(const char *, int); + +int pause(void) __asm("_" "pause" ); + +int pipe(int [2]); + +ssize_t read(int, void *, size_t) __asm("_" "read" ); + +int rmdir(const char *); +int setgid(gid_t); +int setpgid(pid_t, pid_t); +pid_t setsid(void); +int setuid(uid_t); + +unsigned int + sleep(unsigned int) __asm("_" "sleep" ); + +long sysconf(int); +pid_t tcgetpgrp(int); +int tcsetpgrp(int, pid_t); +char *ttyname(int); + + +int ttyname_r(int, char *, size_t) __asm("_" "ttyname_r" ); + + + + +int unlink(const char *); + +ssize_t write(int __fd, const void * __buf, size_t __nbyte) __asm("_" "write" ); +} +extern "C" { +size_t confstr(int, char *, size_t) __asm("_" "confstr" ); + +int getopt(int, char * const [], const char *) __asm("_" "getopt" ); + +extern char *optarg; +extern int optind, opterr, optopt; +} + extern "C" { + + + + + +__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +void *brk(const void *); +int chroot(const char *) ; + + +char *crypt(const char *, const char *); + +void encrypt(char *, int) __asm("_" "encrypt" ); + + + +int fchdir(int); +long gethostid(void); +pid_t getpgid(pid_t); +pid_t getsid(pid_t); + + + +int getdtablesize(void) ; +int getpagesize(void) __attribute__((__const__)) ; +char *getpass(const char *) ; + + + + +char *getwd(char *) ; + + +int lchown(const char *, uid_t, gid_t) __asm("_" "lchown" ); + +int lockf(int, int, off_t) __asm("_" "lockf" ); + +int nice(int) __asm("_" "nice" ); + +ssize_t pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pread" ); + +ssize_t pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __asm("_" "pwrite" ); + + + + + + +__attribute__((__deprecated__)) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +void *sbrk(int); + + + +pid_t setpgrp(void) __asm("_" "setpgrp" ); + + + + +int setregid(gid_t, gid_t) __asm("_" "setregid" ); + +int setreuid(uid_t, uid_t) __asm("_" "setreuid" ); + +void swab(const void * , void * , ssize_t); +void sync(void); +int truncate(const char *, off_t); +useconds_t ualarm(useconds_t, useconds_t); +int usleep(useconds_t) __asm("_" "usleep" ); +pid_t vfork(void) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +int fsync(int) __asm("_" "fsync" ); + +int ftruncate(int, off_t); +int getlogin_r(char *, size_t); +} +extern "C" { +int fchown(int, uid_t, gid_t); +int gethostname(char *, size_t); +ssize_t readlink(const char * , char * , size_t); +int setegid(gid_t); +int seteuid(uid_t); +int symlink(const char *, const char *); +} + + + + + + + + +extern "C" { + + +int pselect(int, fd_set * , fd_set * , + fd_set * , const struct timespec * , + const sigset_t * ) + + + + +__asm("_" "pselect" ) + + + + +; + + + +int select(int, fd_set * , fd_set * , + fd_set * , struct timeval * ) + + + + +__asm("_" "select" ) + + + + +; + +} + + + +typedef __darwin_uuid_t uuid_t; + +extern "C" { +void _Exit(int) __attribute__((__noreturn__)); +int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t); +int acct(const char *); +int add_profil(char *, size_t, unsigned long, unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +void endusershell(void); +int execvP(const char * __file, const char * __searchpath, char * const * __argv) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +char *fflagstostr(unsigned long); +int getdomainname(char *, int); +int getgrouplist(const char *, int, int *, int *); + + + + + +int gethostuuid(uuid_t, const struct timespec *) __attribute__((availability(ios,unavailable))); + + + + +mode_t getmode(const void *, mode_t); +int getpeereid(int, uid_t *, gid_t *); +int getsgroups_np(int *, uuid_t); +char *getusershell(void); +int getwgroups_np(int *, uuid_t); +int initgroups(const char *, int); +int issetugid(void); +char *mkdtemp(char *); +int mknod(const char *, mode_t, dev_t); +int mkpath_np(const char *path, mode_t omode) __attribute__((availability(ios,introduced=5.0))); +int mkpathat_np(int dfd, const char *path, mode_t omode) + __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) + __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +int mkstemp(char *); +int mkstemps(char *, int); +char *mktemp(char *); +int mkostemp(char *path, int oflags) + __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) + __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +int mkostemps(char *path, int slen, int oflags) + __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) + __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +int mkstemp_dprotected_np(char *path, int dpclass, int dpflags) + __attribute__((availability(macosx,unavailable))) __attribute__((availability(ios,introduced=10.0))) + __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +char *mkdtempat_np(int dfd, char *path) + __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) + __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +int mkstempsat_np(int dfd, char *path, int slen) + __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) + __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +int mkostempsat_np(int dfd, char *path, int slen, int oflags) + __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) + __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +int nfssvc(int, void *); +int profil(char *, size_t, unsigned long, unsigned int); + +__attribute__((__deprecated__("Use of per-thread security contexts is error-prone and discouraged."))) +int pthread_setugid_np(uid_t, gid_t); +int pthread_getugid_np( uid_t *, gid_t *); + +int reboot(int); +int revoke(const char *); + +__attribute__((__deprecated__)) int rcmd(char **, int, const char *, const char *, const char *, int *); +__attribute__((__deprecated__)) int rcmd_af(char **, int, const char *, const char *, const char *, int *, + int); +__attribute__((__deprecated__)) int rresvport(int *); +__attribute__((__deprecated__)) int rresvport_af(int *, int); +__attribute__((__deprecated__)) int iruserok(unsigned long, int, const char *, const char *); +__attribute__((__deprecated__)) int iruserok_sa(const void *, int, int, const char *, const char *); +__attribute__((__deprecated__)) int ruserok(const char *, int, const char *, const char *); + +int setdomainname(const char *, int); +int setgroups(int, const gid_t *); +void sethostid(long); +int sethostname(const char *, int); + +void setkey(const char *) __asm("_" "setkey" ); + + + +int setlogin(const char *); +void *setmode(const char *) __asm("_" "setmode" ); +int setrgid(gid_t); +int setruid(uid_t); +int setsgroups_np(int, const uuid_t); +void setusershell(void); +int setwgroups_np(int, const uuid_t); +int strtofflags(char **, unsigned long *, unsigned long *); +int swapon(const char *); +int ttyslot(void); +int undelete(const char *); +int unwhiteout(const char *); +void *valloc(size_t); + +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +__attribute__((availability(ios,deprecated=10.0,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost()."))) + +__attribute__((availability(macosx,deprecated=10.12,message="syscall(2) is unsupported; " "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost()."))) + +int syscall(int, ...); + +extern char *suboptarg; +int getsubopt(char **, char * const *, char **); + + + +int fgetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(ios,introduced=3.0))); +int fsetattrlist(int,void*,void*,size_t,unsigned int) __attribute__((availability(ios,introduced=3.0))); +int getattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "getattrlist" ); +int setattrlist(const char*,void*,void*,size_t,unsigned int) __asm("_" "setattrlist" ); +int exchangedata(const char*,const char*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +struct fssearchblock; +struct searchstate; + +int searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +int fsctl(const char *,unsigned long,void*,unsigned int); +int ffsctl(int,unsigned long,void*,unsigned int) __attribute__((availability(ios,introduced=3.0))); + + + + +int fsync_volume_np(int, int) __attribute__((availability(ios,introduced=6.0))); +int sync_volume_np(const char *, int) __attribute__((availability(ios,introduced=6.0))); + +extern int optreset; + +} + + + + + + +struct flock { + off_t l_start; + off_t l_len; + pid_t l_pid; + short l_type; + short l_whence; +}; +struct flocktimeout { + struct flock fl; + struct timespec timeout; +}; +struct radvisory { + off_t ra_offset; + int ra_count; +}; + + + +typedef struct fcodeblobs { + void *f_cd_hash; + size_t f_hash_size; + void *f_cd_buffer; + size_t f_cd_size; + unsigned int *f_out_size; + int f_arch; + int __padding; +} fcodeblobs_t; +typedef struct fsignatures { + off_t fs_file_start; + void *fs_blob_start; + size_t fs_blob_size; +} fsignatures_t; +typedef struct fchecklv { + off_t lv_file_start; + size_t lv_error_message_size; + void *lv_error_message; +} fchecklv_t; +typedef struct fstore { + unsigned int fst_flags; + int fst_posmode; + off_t fst_offset; + off_t fst_length; + off_t fst_bytesalloc; +} fstore_t; + + +typedef struct fpunchhole { + unsigned int fp_flags; + unsigned int reserved; + off_t fp_offset; + off_t fp_length; +} fpunchhole_t; + + +typedef struct ftrimactivefile { + off_t fta_offset; + off_t fta_length; +} ftrimactivefile_t; + + +typedef struct fspecread { + unsigned int fsr_flags; + unsigned int reserved; + off_t fsr_offset; + off_t fsr_length; +} fspecread_t; + + + +typedef struct fbootstraptransfer { + off_t fbt_offset; + size_t fbt_length; + void *fbt_buffer; +} fbootstraptransfer_t; +#pragma pack(4) + +struct log2phys { + unsigned int l2p_flags; + off_t l2p_contigbytes; + + + off_t l2p_devoffset; + + +}; + +#pragma pack() +struct _filesec; +typedef struct _filesec *filesec_t; + +typedef enum { + FILESEC_OWNER = 1, + FILESEC_GROUP = 2, + FILESEC_UUID = 3, + FILESEC_MODE = 4, + FILESEC_ACL = 5, + FILESEC_GRPUUID = 6, + + + FILESEC_ACL_RAW = 100, + FILESEC_ACL_ALLOCSIZE = 101 +} filesec_property_t; + + + + + +extern "C" { +int open(const char *, int, ...) __asm("_" "open" ); + +int openat(int, const char *, int, ...) __asm("_" "openat" ) __attribute__((availability(ios,introduced=8.0))); + +int creat(const char *, mode_t) __asm("_" "creat" ); +int fcntl(int, int, ...) __asm("_" "fcntl" ); + + +int openx_np(const char *, int, filesec_t); + + + + +int open_dprotected_np( const char *, int, int, int, ...); +int flock(int, int); +filesec_t filesec_init(void); +filesec_t filesec_dup(filesec_t); +void filesec_free(filesec_t); +int filesec_get_property(filesec_t, filesec_property_t, void *); +int filesec_query_property(filesec_t, filesec_property_t, int *); +int filesec_set_property(filesec_t, filesec_property_t, const void *); +int filesec_unset_property(filesec_t, filesec_property_t) __attribute__((availability(ios,introduced=3.2))); + + + +} + + + + +typedef struct objc_class *Class; + + +struct objc_object { + Class _Nonnull isa __attribute__((deprecated)); +}; + + +typedef struct objc_object *id; + + + +typedef struct objc_selector *SEL; + + + +typedef void (*IMP)(void ); + typedef bool BOOL; +extern "C" __attribute__((visibility("default"))) const char * _Nonnull sel_getName(SEL _Nonnull sel) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +extern "C" __attribute__((visibility("default"))) SEL _Nonnull sel_registerName(const char * _Nonnull str) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +extern "C" __attribute__((visibility("default"))) const char * _Nonnull object_getClassName(id _Nullable obj) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +extern "C" __attribute__((visibility("default"))) void * _Nullable object_getIndexedIvars(id _Nullable obj) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +extern "C" __attribute__((visibility("default"))) BOOL sel_isMapped(SEL _Nonnull sel) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +extern "C" __attribute__((visibility("default"))) SEL _Nonnull sel_getUid(const char * _Nonnull str) + __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); + +typedef const void* objc_objectptr_t; + + + + +extern "C" __attribute__((visibility("default"))) id _Nullable objc_retainedObject(objc_objectptr_t _Nullable obj) + + __attribute__((unavailable("use CFBridgingRelease() or a (__bridge_transfer id) cast instead"))) + + ; +extern "C" __attribute__((visibility("default"))) id _Nullable objc_unretainedObject(objc_objectptr_t _Nullable obj) + + __attribute__((unavailable("use a (__bridge id) cast instead"))) + + ; +extern "C" __attribute__((visibility("default"))) objc_objectptr_t _Nullable objc_unretainedPointer(id _Nullable obj) + + __attribute__((unavailable("use a __bridge cast instead"))) + + ; +typedef long NSInteger; +typedef unsigned long NSUInteger; + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSMethodSignature +#define _REWRITER_typedef_NSMethodSignature +typedef struct objc_object NSMethodSignature; +typedef struct {} _objc_exc_NSMethodSignature; +#endif + +#ifndef _REWRITER_typedef_NSInvocation +#define _REWRITER_typedef_NSInvocation +typedef struct objc_object NSInvocation; +typedef struct {} _objc_exc_NSInvocation; +#endif + + +// @protocol NSObject + +// - (BOOL)isEqual:(id)object; +// @property (readonly) NSUInteger hash; + +// @property (readonly) Class superclass; +// - (Class)class __attribute__((availability(swift, unavailable, message="use 'type(of: anObject)' instead"))); +// - (instancetype)self; + +// - (id)performSelector:(SEL)aSelector; +// - (id)performSelector:(SEL)aSelector withObject:(id)object; +// - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2; + +// - (BOOL)isProxy; + +// - (BOOL)isKindOfClass:(Class)aClass; +// - (BOOL)isMemberOfClass:(Class)aClass; +// - (BOOL)conformsToProtocol:(Protocol *)aProtocol; + +// - (BOOL)respondsToSelector:(SEL)aSelector; + +// - (instancetype)retain ; +// - (oneway void)release ; +// - (instancetype)autorelease ; +// - (NSUInteger)retainCount ; + +// - (struct _NSZone *)zone ; + +// @property (readonly, copy) NSString *description; +/* @optional */ +// @property (readonly, copy) NSString *debugDescription; + +/* @end */ + + + +__attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))) +__attribute__((objc_root_class)) +extern "C" __attribute__((visibility("default"))) + +#ifndef _REWRITER_typedef_NSObject +#define _REWRITER_typedef_NSObject +typedef struct objc_object NSObject; +typedef struct {} _objc_exc_NSObject; +#endif + +struct NSObject_IMPL { + Class isa; +}; + + +// + (void)load; + +// + (void)initialize; +#if 0 +- (instancetype)init + + __attribute__((objc_designated_initializer)) + + ; +#endif + + +// + (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +// + (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +// + (instancetype)alloc __attribute__((availability(swift, unavailable, message="use object initializers instead"))); +// - (void)dealloc __attribute__((availability(swift, unavailable, message="use 'deinit' to define a de-initializer"))); + +// - (void)finalize __attribute__((deprecated("Objective-C garbage collection is no longer supported"))); + +// - (id)copy; +// - (id)mutableCopy; + +// + (id)copyWithZone:(struct _NSZone *)zone ; +// + (id)mutableCopyWithZone:(struct _NSZone *)zone ; + +// + (BOOL)instancesRespondToSelector:(SEL)aSelector; +// + (BOOL)conformsToProtocol:(Protocol *)protocol; +// - (IMP)methodForSelector:(SEL)aSelector; +// + (IMP)instanceMethodForSelector:(SEL)aSelector; +// - (void)doesNotRecognizeSelector:(SEL)aSelector; + +// - (id)forwardingTargetForSelector:(SEL)aSelector __attribute__((availability(macosx,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +// - (void)forwardInvocation:(NSInvocation *)anInvocation __attribute__((availability(swift, unavailable, message=""))); +// - (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector __attribute__((availability(swift, unavailable, message=""))); + +// + (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector __attribute__((availability(swift, unavailable, message=""))); + +// - (BOOL)allowsWeakReference __attribute__((unavailable)); +// - (BOOL)retainWeakReference __attribute__((unavailable)); + +// + (BOOL)isSubclassOfClass:(Class)aClass; + +// + (BOOL)resolveClassMethod:(SEL)sel __attribute__((availability(macosx,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); +// + (BOOL)resolveInstanceMethod:(SEL)sel __attribute__((availability(macosx,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=1.0))); + +// + (NSUInteger)hash; +// + (Class)superclass; +// + (Class)class __attribute__((availability(swift, unavailable, message="use 'aClass.self' instead"))); +// + (NSString *)description; +// + (NSString *)debugDescription; + +/* @end */ + +extern "C" { +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((__visibility__("default"))) __attribute__((__availability__(swift, unavailable, message="Can't be used with ARC"))) +void* +os_retain(void *object); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((__visibility__("default"))) +void __attribute__((__availability__(swift, unavailable, message="Can't be used with ARC"))) +os_release(void *object); + + + + + +} +typedef void (*dispatch_function_t)(void *_Nullable); +struct time_value { + integer_t seconds; + integer_t microseconds; +}; + +typedef struct time_value time_value_t; + + + + +typedef int alarm_type_t; +typedef int sleep_type_t; +typedef int clock_id_t; +typedef int clock_flavor_t; +typedef int *clock_attr_t; +typedef int clock_res_t; + + + + +struct mach_timespec { + unsigned int tv_sec; + clock_res_t tv_nsec; +}; +typedef struct mach_timespec mach_timespec_t; + + +#pragma clang assume_nonnull begin +extern "C" { + +struct timespec; +typedef uint64_t dispatch_time_t; + +enum { + DISPATCH_WALLTIME_NOW __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) = ~1ull, + +}; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_time_t +dispatch_time(dispatch_time_t when, int64_t delta); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_time_t +dispatch_walltime(const struct timespec *_Nullable when, int64_t delta); + +} +#pragma clang assume_nonnull end +typedef enum : unsigned int { QOS_CLASS_USER_INTERACTIVE __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x21, QOS_CLASS_USER_INITIATED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x19, QOS_CLASS_DEFAULT __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x15, QOS_CLASS_UTILITY __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x11, QOS_CLASS_BACKGROUND __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x09, QOS_CLASS_UNSPECIFIED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x00, } qos_class_t; +extern "C" { +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +qos_class_t +qos_class_self(void); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +qos_class_t +qos_class_main(void); + +} + + +#pragma clang assume_nonnull begin +// @protocol OS_dispatch_object /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_object_t; +static __inline__ __attribute__((__always_inline__)) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +_dispatch_object_validate(dispatch_object_t object) +{ + void *isa = *(void *volatile*)( void*)object; + (void)isa; +} +typedef void (*dispatch_block_t)(void); + + +extern "C" { + + + + + + +typedef qos_class_t dispatch_qos_class_t; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +__attribute__((__availability__(swift, unavailable, message="Can't be used with ARC"))) +void +dispatch_retain(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +__attribute__((__availability__(swift, unavailable, message="Can't be used with ARC"))) +void +dispatch_release(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +void *_Nullable +dispatch_get_context(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nothrow__)) +void +dispatch_set_context(dispatch_object_t object, void *_Nullable context); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nothrow__)) +void +dispatch_set_finalizer_f(dispatch_object_t object, + dispatch_function_t _Nullable finalizer); +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_activate(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_suspend(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_resume(dispatch_object_t object); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nothrow__)) +void +dispatch_set_qos_class_floor(dispatch_object_t object, + dispatch_qos_class_t qos_class, int relative_priority); +__attribute__((__unavailable__)) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +long +dispatch_wait(void *object, dispatch_time_t timeout); +__attribute__((__unavailable__)) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_notify(void *object, dispatch_object_t queue, + dispatch_block_t notification_block); +__attribute__((__unavailable__)) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_cancel(void *object); +__attribute__((__unavailable__)) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +long +dispatch_testcancel(void *object); +__attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="unsupported interface"))) __attribute__((availability(ios,introduced=4.0,deprecated=6.0,message="unsupported interface"))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nothrow__)) __attribute__((__cold__)) +__attribute__((__format__(printf,2,3))) +void +dispatch_debug(dispatch_object_t object, const char *message, ...); + +__attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="unsupported interface"))) __attribute__((availability(ios,introduced=4.0,deprecated=6.0,message="unsupported interface"))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nothrow__)) __attribute__((__cold__)) +__attribute__((__format__(printf,2,0))) +void +dispatch_debugv(dispatch_object_t object, const char *message, va_list ap); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +// @protocol OS_dispatch_queue /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_t; +// @protocol OS_dispatch_queue_global /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_global_t; +// @protocol OS_dispatch_queue_serial /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_serial_t; +// @protocol OS_dispatch_queue_main /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_main_t; +// @protocol OS_dispatch_queue_concurrent /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_concurrent_t; + +extern "C" { +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_async(dispatch_queue_t queue, dispatch_block_t block); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_async_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_sync(dispatch_queue_t queue, __attribute__((__noescape__)) dispatch_block_t block); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_sync_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_async_and_wait(dispatch_queue_t queue, + __attribute__((__noescape__)) dispatch_block_t block); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_async_and_wait_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_apply(size_t iterations, + dispatch_queue_t _Nullable queue, + __attribute__((__noescape__)) void (^block)(size_t)); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(4))) __attribute__((__nothrow__)) +void +dispatch_apply_f(size_t iterations, + dispatch_queue_t _Nullable queue, + void *_Nullable context, void (*work)(void *_Nullable, size_t)); +__attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="unsupported interface"))) __attribute__((availability(ios,introduced=4.0,deprecated=6.0,message="unsupported interface"))) +extern __attribute__((visibility("default"))) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_queue_t +dispatch_get_current_queue(void); + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) +struct dispatch_queue_s _dispatch_main_q; +static __inline__ __attribute__((__always_inline__)) __attribute__((__const__)) __attribute__((__nothrow__)) +dispatch_queue_main_t +dispatch_get_main_queue(void) +{ + return (( dispatch_queue_main_t)&(_dispatch_main_q)); +} +typedef long dispatch_queue_priority_t; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__const__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_queue_global_t +dispatch_get_global_queue(long identifier, unsigned long flags); + + + + + + + +// @protocol OS_dispatch_queue_attr /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_queue_attr_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) +struct dispatch_queue_attr_s _dispatch_queue_attr_concurrent; +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__)) +dispatch_queue_attr_t +dispatch_queue_attr_make_initially_inactive( + dispatch_queue_attr_t _Nullable attr); +typedef enum : unsigned long { DISPATCH_AUTORELEASE_FREQUENCY_INHERIT __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 0, DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 1, DISPATCH_AUTORELEASE_FREQUENCY_NEVER __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) = 2, } __attribute__((__enum_extensibility__(open))) dispatch_autorelease_frequency_t; +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__)) +dispatch_queue_attr_t +dispatch_queue_attr_make_with_autorelease_frequency( + dispatch_queue_attr_t _Nullable attr, + dispatch_autorelease_frequency_t frequency); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) __attribute__((__nothrow__)) +dispatch_queue_attr_t +dispatch_queue_attr_make_with_qos_class(dispatch_queue_attr_t _Nullable attr, + dispatch_qos_class_t qos_class, int relative_priority); +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_queue_t +dispatch_queue_create_with_target(const char *_Nullable label, + dispatch_queue_attr_t _Nullable attr, dispatch_queue_t _Nullable target) + __asm__("_" "dispatch_queue_create_with_target" "$V2"); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_queue_t +dispatch_queue_create(const char *_Nullable label, + dispatch_queue_attr_t _Nullable attr); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +const char * +dispatch_queue_get_label(dispatch_queue_t _Nullable queue); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__warn_unused_result__)) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +dispatch_qos_class_t +dispatch_queue_get_qos_class(dispatch_queue_t queue, + int *_Nullable relative_priority_ptr); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nothrow__)) +void +dispatch_set_target_queue(dispatch_object_t object, + dispatch_queue_t _Nullable queue); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nothrow__)) __attribute__((__noreturn__)) +void +dispatch_main(void); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_after(dispatch_time_t when, dispatch_queue_t queue, + dispatch_block_t block); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(4))) __attribute__((__nothrow__)) +void +dispatch_after_f(dispatch_time_t when, dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_barrier_async_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_barrier_sync(dispatch_queue_t queue, + __attribute__((__noescape__)) dispatch_block_t block); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_barrier_sync_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_barrier_async_and_wait(dispatch_queue_t queue, + __attribute__((__noescape__)) dispatch_block_t block); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) +void +dispatch_barrier_async_and_wait_f(dispatch_queue_t queue, + void *_Nullable context, dispatch_function_t work); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_queue_set_specific(dispatch_queue_t queue, const void *key, + void *_Nullable context, dispatch_function_t _Nullable destructor); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +void *_Nullable +dispatch_queue_get_specific(dispatch_queue_t queue, const void *key); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__pure__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +void *_Nullable +dispatch_get_specific(const void *key); +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) +void +dispatch_assert_queue(dispatch_queue_t queue) + __asm__("_" "dispatch_assert_queue" "$V2"); +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) +void +dispatch_assert_queue_barrier(dispatch_queue_t queue); +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) +void +dispatch_assert_queue_not(dispatch_queue_t queue) + __asm__("_" "dispatch_assert_queue_not" "$V2"); +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" { +typedef enum : unsigned long { DISPATCH_BLOCK_BARRIER __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x1, DISPATCH_BLOCK_DETACHED __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x2, DISPATCH_BLOCK_ASSIGN_CURRENT __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x4, DISPATCH_BLOCK_NO_QOS_CLASS __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x8, DISPATCH_BLOCK_INHERIT_QOS_CLASS __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x10, DISPATCH_BLOCK_ENFORCE_QOS_CLASS __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) = 0x20, } __attribute__((__flag_enum__)) __attribute__((__enum_extensibility__(open))) dispatch_block_flags_t; +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_block_t +dispatch_block_create(dispatch_block_flags_t flags, dispatch_block_t block); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(4))) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_block_t +dispatch_block_create_with_qos_class(dispatch_block_flags_t flags, + dispatch_qos_class_t qos_class, int relative_priority, + dispatch_block_t block); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nothrow__)) +void +dispatch_block_perform(dispatch_block_flags_t flags, + __attribute__((__noescape__)) dispatch_block_t block); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +long +dispatch_block_wait(dispatch_block_t block, dispatch_time_t timeout); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_block_notify(dispatch_block_t block, dispatch_queue_t queue, + dispatch_block_t notification_block); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_block_cancel(dispatch_block_t block); +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +long +dispatch_block_testcancel(dispatch_block_t block); + +} +#pragma clang assume_nonnull end +typedef int kern_return_t; +typedef natural_t mach_msg_timeout_t; +typedef unsigned int mach_msg_bits_t; +typedef natural_t mach_msg_size_t; +typedef integer_t mach_msg_id_t; + + + +typedef unsigned int mach_msg_priority_t; + + + +typedef unsigned int mach_msg_type_name_t; +typedef unsigned int mach_msg_copy_options_t; +typedef unsigned int mach_msg_guard_flags_t; +typedef unsigned int mach_msg_descriptor_type_t; + + + + + + + +#pragma pack(push, 4) + +typedef struct{ + natural_t pad1; + mach_msg_size_t pad2; + unsigned int pad3 : 24; + mach_msg_descriptor_type_t type : 8; +} mach_msg_type_descriptor_t; + +typedef struct{ + mach_port_t name; + + mach_msg_size_t pad1; + unsigned int pad2 : 16; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; +} mach_msg_port_descriptor_t; + +typedef struct{ + uint32_t address; + mach_msg_size_t size; + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + unsigned int pad1: 8; + mach_msg_descriptor_type_t type: 8; +} mach_msg_ool_descriptor32_t; + +typedef struct{ + uint64_t address; + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + unsigned int pad1: 8; + mach_msg_descriptor_type_t type: 8; + mach_msg_size_t size; +} mach_msg_ool_descriptor64_t; + +typedef struct{ + void* address; + + + + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + unsigned int pad1: 8; + mach_msg_descriptor_type_t type: 8; + + mach_msg_size_t size; + +} mach_msg_ool_descriptor_t; + +typedef struct{ + uint32_t address; + mach_msg_size_t count; + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; +} mach_msg_ool_ports_descriptor32_t; + +typedef struct{ + uint64_t address; + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; + mach_msg_size_t count; +} mach_msg_ool_ports_descriptor64_t; + +typedef struct{ + void* address; + + + + boolean_t deallocate: 8; + mach_msg_copy_options_t copy: 8; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; + + mach_msg_size_t count; + +} mach_msg_ool_ports_descriptor_t; + +typedef struct{ + uint32_t context; + mach_port_name_t name; + mach_msg_guard_flags_t flags : 16; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; +} mach_msg_guarded_port_descriptor32_t; + +typedef struct{ + uint64_t context; + mach_msg_guard_flags_t flags : 16; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; + mach_port_name_t name; +} mach_msg_guarded_port_descriptor64_t; + +typedef struct{ + mach_port_context_t context; + + + + mach_msg_guard_flags_t flags : 16; + mach_msg_type_name_t disposition : 8; + mach_msg_descriptor_type_t type : 8; + + mach_port_name_t name; + +} mach_msg_guarded_port_descriptor_t; + + + + + + +typedef union{ + mach_msg_port_descriptor_t port; + mach_msg_ool_descriptor_t out_of_line; + mach_msg_ool_ports_descriptor_t ool_ports; + mach_msg_type_descriptor_t type; + mach_msg_guarded_port_descriptor_t guarded_port; +} mach_msg_descriptor_t; + +typedef struct{ + mach_msg_size_t msgh_descriptor_count; +} mach_msg_body_t; + + + + +typedef struct{ + mach_msg_bits_t msgh_bits; + mach_msg_size_t msgh_size; + mach_port_t msgh_remote_port; + mach_port_t msgh_local_port; + mach_port_name_t msgh_voucher_port; + mach_msg_id_t msgh_id; +} mach_msg_header_t; + + + + +typedef struct{ + mach_msg_header_t header; + mach_msg_body_t body; +} mach_msg_base_t; + +typedef unsigned int mach_msg_trailer_type_t; + + + +typedef unsigned int mach_msg_trailer_size_t; +typedef char *mach_msg_trailer_info_t; + +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; +} mach_msg_trailer_t; +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; + mach_port_seqno_t msgh_seqno; +} mach_msg_seqno_trailer_t; + +typedef struct{ + unsigned int val[2]; +} security_token_t; + +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; + mach_port_seqno_t msgh_seqno; + security_token_t msgh_sender; +} mach_msg_security_trailer_t; +typedef struct{ + unsigned int val[8]; +} audit_token_t; + +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; + mach_port_seqno_t msgh_seqno; + security_token_t msgh_sender; + audit_token_t msgh_audit; +} mach_msg_audit_trailer_t; + +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; + mach_port_seqno_t msgh_seqno; + security_token_t msgh_sender; + audit_token_t msgh_audit; + mach_port_context_t msgh_context; +} mach_msg_context_trailer_t; + + + +typedef struct{ + mach_port_name_t sender; +} msg_labels_t; + + + + + + +typedef struct{ + mach_msg_trailer_type_t msgh_trailer_type; + mach_msg_trailer_size_t msgh_trailer_size; + mach_port_seqno_t msgh_seqno; + security_token_t msgh_sender; + audit_token_t msgh_audit; + mach_port_context_t msgh_context; + int msgh_ad; + msg_labels_t msgh_labels; +} mach_msg_mac_trailer_t; +typedef mach_msg_mac_trailer_t mach_msg_max_trailer_t; +typedef mach_msg_security_trailer_t mach_msg_format_0_trailer_t; + + + + + + + +extern const security_token_t KERNEL_SECURITY_TOKEN; + + +extern const audit_token_t KERNEL_AUDIT_TOKEN; + +typedef integer_t mach_msg_options_t; + +typedef struct{ + mach_msg_header_t header; +} mach_msg_empty_send_t; + +typedef struct{ + mach_msg_header_t header; + mach_msg_trailer_t trailer; +} mach_msg_empty_rcv_t; + +typedef union{ + mach_msg_empty_send_t send; + mach_msg_empty_rcv_t rcv; +} mach_msg_empty_t; + +#pragma pack(pop) +typedef natural_t mach_msg_type_size_t; +typedef natural_t mach_msg_type_number_t; +typedef integer_t mach_msg_option_t; +typedef kern_return_t mach_msg_return_t; +extern "C" { +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +extern mach_msg_return_t mach_msg_overwrite( + mach_msg_header_t *msg, + mach_msg_option_t option, + mach_msg_size_t send_size, + mach_msg_size_t rcv_size, + mach_port_name_t rcv_name, + mach_msg_timeout_t timeout, + mach_port_name_t notify, + mach_msg_header_t *rcv_msg, + mach_msg_size_t rcv_limit); +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +extern mach_msg_return_t mach_msg( + mach_msg_header_t *msg, + mach_msg_option_t option, + mach_msg_size_t send_size, + mach_msg_size_t rcv_size, + mach_port_name_t rcv_name, + mach_msg_timeout_t timeout, + mach_port_name_t notify); + + + + + + + +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +extern kern_return_t mach_voucher_deallocate( + mach_port_name_t voucher); + + +} + + + + + + +#pragma clang assume_nonnull begin +// @protocol OS_dispatch_source /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_source_t;; + +extern "C" { +typedef const struct dispatch_source_type_s *dispatch_source_type_t; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_data_add; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_data_or; +__attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_data_replace; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_mach_send; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_mach_recv; +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_memorypressure; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_proc; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_read; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_signal; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_timer; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_vnode; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) const struct dispatch_source_type_s _dispatch_source_type_write; +typedef unsigned long dispatch_source_mach_send_flags_t; + + + + + +typedef unsigned long dispatch_source_mach_recv_flags_t; +typedef unsigned long dispatch_source_memorypressure_flags_t; +typedef unsigned long dispatch_source_proc_flags_t; +typedef unsigned long dispatch_source_vnode_flags_t; +typedef unsigned long dispatch_source_timer_flags_t; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_source_t +dispatch_source_create(dispatch_source_type_t type, + uintptr_t handle, + unsigned long mask, + dispatch_queue_t _Nullable queue); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_event_handler(dispatch_source_t source, + dispatch_block_t _Nullable handler); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_event_handler_f(dispatch_source_t source, + dispatch_function_t _Nullable handler); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_cancel_handler(dispatch_source_t source, + dispatch_block_t _Nullable handler); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_cancel_handler_f(dispatch_source_t source, + dispatch_function_t _Nullable handler); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_source_cancel(dispatch_source_t source); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +long +dispatch_source_testcancel(dispatch_source_t source); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +uintptr_t +dispatch_source_get_handle(dispatch_source_t source); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +unsigned long +dispatch_source_get_mask(dispatch_source_t source); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__pure__)) +__attribute__((__nothrow__)) +unsigned long +dispatch_source_get_data(dispatch_source_t source); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_source_merge_data(dispatch_source_t source, unsigned long value); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_source_set_timer(dispatch_source_t source, + dispatch_time_t start, + uint64_t interval, + uint64_t leeway); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_registration_handler(dispatch_source_t source, + dispatch_block_t _Nullable handler); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.3))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_source_set_registration_handler_f(dispatch_source_t source, + dispatch_function_t _Nullable handler); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + +// @protocol OS_dispatch_group /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_group_t; + +extern "C" { +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_group_t +dispatch_group_create(void); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_group_async(dispatch_group_t group, + dispatch_queue_t queue, + dispatch_block_t block); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(4))) +__attribute__((__nothrow__)) +void +dispatch_group_async_f(dispatch_group_t group, + dispatch_queue_t queue, + void *_Nullable context, + dispatch_function_t work); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +long +dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_group_notify(dispatch_group_t group, + dispatch_queue_t queue, + dispatch_block_t block); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(4))) +__attribute__((__nothrow__)) +void +dispatch_group_notify_f(dispatch_group_t group, + dispatch_queue_t queue, + void *_Nullable context, + dispatch_function_t work); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_group_enter(dispatch_group_t group); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_group_leave(dispatch_group_t group); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + + +// @protocol OS_dispatch_semaphore /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_semaphore_t; + +extern "C" { +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_semaphore_t +dispatch_semaphore_create(long value); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +long +dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +long +dispatch_semaphore_signal(dispatch_semaphore_t dsema); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" { +typedef intptr_t dispatch_once_t; +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) + +void +dispatch_once(dispatch_once_t *predicate, + __attribute__((__noescape__)) dispatch_block_t block); + + +static __inline__ __attribute__((__always_inline__)) __attribute__((__nonnull__)) __attribute__((__nothrow__)) + +void +_dispatch_once(dispatch_once_t *predicate, + __attribute__((__noescape__)) dispatch_block_t block) +{ + if (__builtin_expect((*predicate), (~0l)) != ~0l) { + dispatch_once(predicate, block); + } else { + __asm__ __volatile__("" ::: "memory"); + } + __builtin_assume(*predicate == ~0l); +} + + + + + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nothrow__)) + +void +dispatch_once_f(dispatch_once_t *predicate, void *_Nullable context, + dispatch_function_t function); + + +static __inline__ __attribute__((__always_inline__)) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) +__attribute__((__nothrow__)) + +void +_dispatch_once_f(dispatch_once_t *predicate, void *_Nullable context, + dispatch_function_t function) +{ + if (__builtin_expect((*predicate), (~0l)) != ~0l) { + dispatch_once_f(predicate, context, function); + } else { + __asm__ __volatile__("" ::: "memory"); + } + __builtin_assume(*predicate == ~0l); +} + + + + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" { +// @protocol OS_dispatch_data /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_data_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) struct dispatch_data_s _dispatch_data_empty; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) const dispatch_block_t _dispatch_data_destructor_free; + + + + + + + +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) +extern __attribute__((visibility("default"))) const dispatch_block_t _dispatch_data_destructor_munmap; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_data_t +dispatch_data_create(const void *buffer, + size_t size, + dispatch_queue_t _Nullable queue, + dispatch_block_t _Nullable destructor); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +size_t +dispatch_data_get_size(dispatch_data_t data); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_data_t +dispatch_data_create_map(dispatch_data_t data, + const void *_Nullable *_Nullable buffer_ptr, + size_t *_Nullable size_ptr); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_data_t +dispatch_data_create_concat(dispatch_data_t data1, dispatch_data_t data2); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_data_t +dispatch_data_create_subrange(dispatch_data_t data, + size_t offset, + size_t length); +typedef bool (*dispatch_data_applier_t)(dispatch_data_t region, + size_t offset, + const void *buffer, + size_t size); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +bool +dispatch_data_apply(dispatch_data_t data, + __attribute__((__noescape__)) dispatch_data_applier_t applier); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_data_t +dispatch_data_copy_region(dispatch_data_t data, + size_t location, + size_t *offset_ptr); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" { +typedef int dispatch_fd_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(3))) __attribute__((__nonnull__(4))) __attribute__((__nothrow__)) +void +dispatch_read(dispatch_fd_t fd, + size_t length, + dispatch_queue_t queue, + void (^handler)(dispatch_data_t data, int error)); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__nonnull__(3))) __attribute__((__nonnull__(4))) +__attribute__((__nothrow__)) +void +dispatch_write(dispatch_fd_t fd, + dispatch_data_t data, + dispatch_queue_t queue, + void (^handler)(dispatch_data_t _Nullable data, int error)); +// @protocol OS_dispatch_io /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_io_t; +typedef unsigned long dispatch_io_type_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_io_t +dispatch_io_create(dispatch_io_type_t type, + dispatch_fd_t fd, + dispatch_queue_t queue, + void (^cleanup_handler)(int error)); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_io_t +dispatch_io_create_with_path(dispatch_io_type_t type, + const char *path, int oflag, mode_t mode, + dispatch_queue_t queue, + void (^cleanup_handler)(int error)); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(2))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) +__attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_io_t +dispatch_io_create_with_io(dispatch_io_type_t type, + dispatch_io_t io, + dispatch_queue_t queue, + void (^cleanup_handler)(int error)); +typedef void (*dispatch_io_handler_t)(bool done, dispatch_data_t _Nullable data, + int error); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(4))) __attribute__((__nonnull__(5))) +__attribute__((__nothrow__)) +void +dispatch_io_read(dispatch_io_t channel, + off_t offset, + size_t length, + dispatch_queue_t queue, + dispatch_io_handler_t io_handler); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nonnull__(3))) __attribute__((__nonnull__(4))) +__attribute__((__nonnull__(5))) __attribute__((__nothrow__)) +void +dispatch_io_write(dispatch_io_t channel, + off_t offset, + dispatch_data_t data, + dispatch_queue_t queue, + dispatch_io_handler_t io_handler); +typedef unsigned long dispatch_io_close_flags_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_io_close(dispatch_io_t channel, dispatch_io_close_flags_t flags); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_io_barrier(dispatch_io_t channel, dispatch_block_t barrier); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__warn_unused_result__)) __attribute__((__nothrow__)) +dispatch_fd_t +dispatch_io_get_descriptor(dispatch_io_t channel); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_io_set_high_water(dispatch_io_t channel, size_t high_water); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_io_set_low_water(dispatch_io_t channel, size_t low_water); +typedef unsigned long dispatch_io_interval_flags_t; +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__(1))) __attribute__((__nothrow__)) +void +dispatch_io_set_interval(dispatch_io_t channel, + uint64_t interval, + dispatch_io_interval_flags_t flags); + +} +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" { +// @protocol OS_dispatch_workloop /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) dispatch_workloop_t; +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_workloop_t +dispatch_workloop_create(const char *_Nullable label); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__malloc__)) __attribute__((__ns_returns_retained__)) __attribute__((__warn_unused_result__)) +__attribute__((__nothrow__)) +dispatch_workloop_t +dispatch_workloop_create_inactive(const char *_Nullable label); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) +extern __attribute__((visibility("default"))) __attribute__((__nonnull__)) __attribute__((__nothrow__)) +void +dispatch_workloop_set_autorelease_frequency(dispatch_workloop_t workloop, + dispatch_autorelease_frequency_t frequency); + +} +#pragma clang assume_nonnull end + + +extern "C" { + +typedef struct { + CFIndex domain; + SInt32 error; +} CFStreamError; + +typedef CFStringRef CFStreamPropertyKey __attribute__((swift_wrapper(struct))); + +typedef CFIndex CFStreamStatus; enum { + kCFStreamStatusNotOpen = 0, + kCFStreamStatusOpening, + kCFStreamStatusOpen, + kCFStreamStatusReading, + kCFStreamStatusWriting, + kCFStreamStatusAtEnd, + kCFStreamStatusClosed, + kCFStreamStatusError +}; + +typedef CFOptionFlags CFStreamEventType; enum { + kCFStreamEventNone = 0, + kCFStreamEventOpenCompleted = 1, + kCFStreamEventHasBytesAvailable = 2, + kCFStreamEventCanAcceptBytes = 4, + kCFStreamEventErrorOccurred = 8, + kCFStreamEventEndEncountered = 16 +}; + +typedef struct { + CFIndex version; + void * _Null_unspecified info; + void *_Null_unspecified(* _Null_unspecified retain)(void * _Null_unspecified info); + void (* _Null_unspecified release)(void * _Null_unspecified info); + CFStringRef _Null_unspecified (* _Null_unspecified copyDescription)(void * _Null_unspecified info); +} CFStreamClientContext; + +typedef struct __attribute__((objc_bridge_mutable(NSInputStream))) __CFReadStream * CFReadStreamRef; +typedef struct __attribute__((objc_bridge_mutable(NSOutputStream))) __CFWriteStream * CFWriteStreamRef; + +typedef void (*CFReadStreamClientCallBack)(CFReadStreamRef _Null_unspecified stream, CFStreamEventType type, void * _Null_unspecified clientCallBackInfo); +typedef void (*CFWriteStreamClientCallBack)(CFWriteStreamRef _Null_unspecified stream, CFStreamEventType type, void * _Null_unspecified clientCallBackInfo); + +extern +CFTypeID CFReadStreamGetTypeID(void); +extern +CFTypeID CFWriteStreamGetTypeID(void); + + + + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertyDataWritten; + + +extern +CFReadStreamRef _Null_unspecified CFReadStreamCreateWithBytesNoCopy(CFAllocatorRef _Null_unspecified alloc, const UInt8 * _Null_unspecified bytes, CFIndex length, CFAllocatorRef _Null_unspecified bytesDeallocator); + + +extern +CFWriteStreamRef _Null_unspecified CFWriteStreamCreateWithBuffer(CFAllocatorRef _Null_unspecified alloc, UInt8 * _Null_unspecified buffer, CFIndex bufferCapacity); + + +extern +CFWriteStreamRef _Null_unspecified CFWriteStreamCreateWithAllocatedBuffers(CFAllocatorRef _Null_unspecified alloc, CFAllocatorRef _Null_unspecified bufferAllocator); + + +extern +CFReadStreamRef _Null_unspecified CFReadStreamCreateWithFile(CFAllocatorRef _Null_unspecified alloc, CFURLRef _Null_unspecified fileURL); +extern +CFWriteStreamRef _Null_unspecified CFWriteStreamCreateWithFile(CFAllocatorRef _Null_unspecified alloc, CFURLRef _Null_unspecified fileURL); + +extern +void CFStreamCreateBoundPair(CFAllocatorRef _Null_unspecified alloc, CFReadStreamRef _Null_unspecified * _Null_unspecified readStream, CFWriteStreamRef _Null_unspecified * _Null_unspecified writeStream, CFIndex transferBufferSize); + + + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertyAppendToFile; + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertyFileCurrentOffset; + + + + + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertySocketNativeHandle; + + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertySocketRemoteHostName; + + +extern +const CFStreamPropertyKey _Null_unspecified kCFStreamPropertySocketRemotePortNumber; + + + + + + + +extern const int kCFStreamErrorDomainSOCKS __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSProxy __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSProxyHost __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSProxyPort __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSVersion __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamSocketSOCKSVersion4 __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamSocketSOCKSVersion5 __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSUser __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySOCKSPassword __attribute__((availability(ios,introduced=2_0))); +extern const int kCFStreamErrorDomainSSL __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertySocketSecurityLevel __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamSocketSecurityLevelNone __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamSocketSecurityLevelSSLv2 __attribute__((availability(ios,introduced=2_0,deprecated=10_0,message="" ))); +extern const CFStringRef _Nonnull kCFStreamSocketSecurityLevelSSLv3 __attribute__((availability(ios,introduced=2_0,deprecated=10_0,message="" ))); +extern const CFStringRef _Nonnull kCFStreamSocketSecurityLevelTLSv1 __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamSocketSecurityLevelNegotiatedSSL __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef _Nonnull kCFStreamPropertyShouldCloseNativeSocket __attribute__((availability(ios,introduced=2_0))); + + + +extern +void CFStreamCreatePairWithSocket(CFAllocatorRef _Null_unspecified alloc, CFSocketNativeHandle sock, CFReadStreamRef _Null_unspecified * _Null_unspecified readStream, CFWriteStreamRef _Null_unspecified * _Null_unspecified writeStream); +extern +void CFStreamCreatePairWithSocketToHost(CFAllocatorRef _Null_unspecified alloc, CFStringRef _Null_unspecified host, UInt32 port, CFReadStreamRef _Null_unspecified * _Null_unspecified readStream, CFWriteStreamRef _Null_unspecified * _Null_unspecified writeStream); +extern +void CFStreamCreatePairWithPeerSocketSignature(CFAllocatorRef _Null_unspecified alloc, const CFSocketSignature * _Null_unspecified signature, CFReadStreamRef _Null_unspecified * _Null_unspecified readStream, CFWriteStreamRef _Null_unspecified * _Null_unspecified writeStream); + + + + +extern +CFStreamStatus CFReadStreamGetStatus(CFReadStreamRef _Null_unspecified stream); +extern +CFStreamStatus CFWriteStreamGetStatus(CFWriteStreamRef _Null_unspecified stream); + + +extern +CFErrorRef _Null_unspecified CFReadStreamCopyError(CFReadStreamRef _Null_unspecified stream) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFErrorRef _Null_unspecified CFWriteStreamCopyError(CFWriteStreamRef _Null_unspecified stream) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +Boolean CFReadStreamOpen(CFReadStreamRef _Null_unspecified stream); +extern +Boolean CFWriteStreamOpen(CFWriteStreamRef _Null_unspecified stream); + + + + +extern +void CFReadStreamClose(CFReadStreamRef _Null_unspecified stream); +extern +void CFWriteStreamClose(CFWriteStreamRef _Null_unspecified stream); + + + +extern +Boolean CFReadStreamHasBytesAvailable(CFReadStreamRef _Null_unspecified stream); +extern +CFIndex CFReadStreamRead(CFReadStreamRef _Null_unspecified stream, UInt8 * _Null_unspecified buffer, CFIndex bufferLength); +extern +const UInt8 * _Null_unspecified CFReadStreamGetBuffer(CFReadStreamRef _Null_unspecified stream, CFIndex maxBytesToRead, CFIndex * _Null_unspecified numBytesRead); + + + +extern +Boolean CFWriteStreamCanAcceptBytes(CFWriteStreamRef _Null_unspecified stream); + + + + + + +extern +CFIndex CFWriteStreamWrite(CFWriteStreamRef _Null_unspecified stream, const UInt8 * _Null_unspecified buffer, CFIndex bufferLength); +extern +CFTypeRef _Null_unspecified CFReadStreamCopyProperty(CFReadStreamRef _Null_unspecified stream, CFStreamPropertyKey _Null_unspecified propertyName); +extern +CFTypeRef _Null_unspecified CFWriteStreamCopyProperty(CFWriteStreamRef _Null_unspecified stream, CFStreamPropertyKey _Null_unspecified propertyName); + + + +extern +Boolean CFReadStreamSetProperty(CFReadStreamRef _Null_unspecified stream, CFStreamPropertyKey _Null_unspecified propertyName, CFTypeRef _Null_unspecified propertyValue); +extern +Boolean CFWriteStreamSetProperty(CFWriteStreamRef _Null_unspecified stream, CFStreamPropertyKey _Null_unspecified propertyName, CFTypeRef _Null_unspecified propertyValue); +extern +Boolean CFReadStreamSetClient(CFReadStreamRef _Null_unspecified stream, CFOptionFlags streamEvents, CFReadStreamClientCallBack _Null_unspecified clientCB, CFStreamClientContext * _Null_unspecified clientContext); +extern +Boolean CFWriteStreamSetClient(CFWriteStreamRef _Null_unspecified stream, CFOptionFlags streamEvents, CFWriteStreamClientCallBack _Null_unspecified clientCB, CFStreamClientContext * _Null_unspecified clientContext); + +extern +void CFReadStreamScheduleWithRunLoop(CFReadStreamRef _Null_unspecified stream, CFRunLoopRef _Null_unspecified runLoop, CFRunLoopMode _Null_unspecified runLoopMode); +extern +void CFWriteStreamScheduleWithRunLoop(CFWriteStreamRef _Null_unspecified stream, CFRunLoopRef _Null_unspecified runLoop, _Null_unspecified CFRunLoopMode runLoopMode); + +extern +void CFReadStreamUnscheduleFromRunLoop(CFReadStreamRef _Null_unspecified stream, CFRunLoopRef _Null_unspecified runLoop, CFRunLoopMode _Null_unspecified runLoopMode); +extern +void CFWriteStreamUnscheduleFromRunLoop(CFWriteStreamRef _Null_unspecified stream, CFRunLoopRef _Null_unspecified runLoop, CFRunLoopMode _Null_unspecified runLoopMode); +extern +void CFReadStreamSetDispatchQueue(CFReadStreamRef _Null_unspecified stream, dispatch_queue_t _Null_unspecified q) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +void CFWriteStreamSetDispatchQueue(CFWriteStreamRef _Null_unspecified stream, dispatch_queue_t _Null_unspecified q) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +dispatch_queue_t _Null_unspecified CFReadStreamCopyDispatchQueue(CFReadStreamRef _Null_unspecified stream) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +dispatch_queue_t _Null_unspecified CFWriteStreamCopyDispatchQueue(CFWriteStreamRef _Null_unspecified stream) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef CFIndex CFStreamErrorDomain; enum { + kCFStreamErrorDomainCustom = -1L, + kCFStreamErrorDomainPOSIX = 1, + kCFStreamErrorDomainMacOSStatus +}; + +extern +CFStreamError CFReadStreamGetError(CFReadStreamRef _Null_unspecified stream); +extern +CFStreamError CFWriteStreamGetError(CFWriteStreamRef _Null_unspecified stream); + + +} + + +extern "C" { + +typedef CFOptionFlags CFPropertyListMutabilityOptions; enum { + kCFPropertyListImmutable = 0, + kCFPropertyListMutableContainers = 1 << 0, + kCFPropertyListMutableContainersAndLeaves = 1 << 1, +}; +extern +CFPropertyListRef CFPropertyListCreateFromXMLData(CFAllocatorRef allocator, CFDataRef xmlData, CFOptionFlags mutabilityOption, CFStringRef *errorString) __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use CFPropertyListCreateWithData instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFPropertyListCreateWithData instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFPropertyListCreateWithData instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFPropertyListCreateWithData instead."))); +extern +CFDataRef CFPropertyListCreateXMLData(CFAllocatorRef allocator, CFPropertyListRef propertyList) __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use CFPropertyListCreateData instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFPropertyListCreateData instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFPropertyListCreateData instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFPropertyListCreateData instead."))); +extern +CFPropertyListRef CFPropertyListCreateDeepCopy(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFOptionFlags mutabilityOption); + +typedef CFIndex CFPropertyListFormat; enum { + kCFPropertyListOpenStepFormat = 1, + kCFPropertyListXMLFormat_v1_0 = 100, + kCFPropertyListBinaryFormat_v1_0 = 200 +}; + + + + + + +extern +Boolean CFPropertyListIsValid(CFPropertyListRef plist, CFPropertyListFormat format); +extern +CFIndex CFPropertyListWriteToStream(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format, CFStringRef *errorString) __attribute__((availability(macos,introduced=10.2,deprecated=10.10,message="Use CFPropertyListWrite instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFPropertyListWrite instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFPropertyListWrite instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFPropertyListWrite instead."))); +extern +CFPropertyListRef CFPropertyListCreateFromStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength, CFOptionFlags mutabilityOption, CFPropertyListFormat *format, CFStringRef *errorString) __attribute__((availability(macos,introduced=10.2,deprecated=10.10,message="Use CFPropertyListCreateWithStream instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use CFPropertyListCreateWithStream instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFPropertyListCreateWithStream instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFPropertyListCreateWithStream instead."))); + + + + + +enum { + kCFPropertyListReadCorruptError = 3840, + kCFPropertyListReadUnknownVersionError = 3841, + kCFPropertyListReadStreamError = 3842, + kCFPropertyListWriteStreamError = 3851, +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFPropertyListRef CFPropertyListCreateWithData(CFAllocatorRef allocator, CFDataRef data, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFPropertyListRef CFPropertyListCreateWithStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength, CFOptionFlags options, CFPropertyListFormat *format, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFIndex CFPropertyListWrite(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format, CFOptionFlags options, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern +CFDataRef CFPropertyListCreateData(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFPropertyListFormat format, CFOptionFlags options, CFErrorRef *error) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +} +extern "C" { +typedef const void * (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value); + + + + + + + +typedef void (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value); + + + + + + + +typedef CFStringRef (*CFSetCopyDescriptionCallBack)(const void *value); +typedef Boolean (*CFSetEqualCallBack)(const void *value1, const void *value2); + + + + + + + +typedef CFHashCode (*CFSetHashCallBack)(const void *value); +typedef struct { + CFIndex version; + CFSetRetainCallBack retain; + CFSetReleaseCallBack release; + CFSetCopyDescriptionCallBack copyDescription; + CFSetEqualCallBack equal; + CFSetHashCallBack hash; +} CFSetCallBacks; + + + + + + +extern +const CFSetCallBacks kCFTypeSetCallBacks; + + + + + + + +extern +const CFSetCallBacks kCFCopyStringSetCallBacks; +typedef void (*CFSetApplierFunction)(const void *value, void *context); + + + + + +typedef const struct __attribute__((objc_bridge(NSSet))) __CFSet * CFSetRef; + + + + + +typedef struct __attribute__((objc_bridge_mutable(NSMutableSet))) __CFSet * CFMutableSetRef; + + + + + +extern +CFTypeID CFSetGetTypeID(void); +extern +CFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks); +extern +CFSetRef CFSetCreateCopy(CFAllocatorRef allocator, CFSetRef theSet); +extern +CFMutableSetRef CFSetCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFSetCallBacks *callBacks); +extern +CFMutableSetRef CFSetCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFSetRef theSet); +extern +CFIndex CFSetGetCount(CFSetRef theSet); +extern +CFIndex CFSetGetCountOfValue(CFSetRef theSet, const void *value); +extern +Boolean CFSetContainsValue(CFSetRef theSet, const void *value); +extern +const void *CFSetGetValue(CFSetRef theSet, const void *value); +extern +Boolean CFSetGetValueIfPresent(CFSetRef theSet, const void *candidate, const void **value); +extern +void CFSetGetValues(CFSetRef theSet, const void **values); +extern +void CFSetApplyFunction(CFSetRef theSet, CFSetApplierFunction __attribute__((noescape)) applier, void *context); +extern +void CFSetAddValue(CFMutableSetRef theSet, const void *value); +extern +void CFSetReplaceValue(CFMutableSetRef theSet, const void *value); +extern +void CFSetSetValue(CFMutableSetRef theSet, const void *value); +extern +void CFSetRemoveValue(CFMutableSetRef theSet, const void *value); +extern +void CFSetRemoveAllValues(CFMutableSetRef theSet); + +} + +extern "C" { + +typedef CFIndex CFStringEncodings; enum { + + kCFStringEncodingMacJapanese = 1, + kCFStringEncodingMacChineseTrad = 2, + kCFStringEncodingMacKorean = 3, + kCFStringEncodingMacArabic = 4, + kCFStringEncodingMacHebrew = 5, + kCFStringEncodingMacGreek = 6, + kCFStringEncodingMacCyrillic = 7, + kCFStringEncodingMacDevanagari = 9, + kCFStringEncodingMacGurmukhi = 10, + kCFStringEncodingMacGujarati = 11, + kCFStringEncodingMacOriya = 12, + kCFStringEncodingMacBengali = 13, + kCFStringEncodingMacTamil = 14, + kCFStringEncodingMacTelugu = 15, + kCFStringEncodingMacKannada = 16, + kCFStringEncodingMacMalayalam = 17, + kCFStringEncodingMacSinhalese = 18, + kCFStringEncodingMacBurmese = 19, + kCFStringEncodingMacKhmer = 20, + kCFStringEncodingMacThai = 21, + kCFStringEncodingMacLaotian = 22, + kCFStringEncodingMacGeorgian = 23, + kCFStringEncodingMacArmenian = 24, + kCFStringEncodingMacChineseSimp = 25, + kCFStringEncodingMacTibetan = 26, + kCFStringEncodingMacMongolian = 27, + kCFStringEncodingMacEthiopic = 28, + kCFStringEncodingMacCentralEurRoman = 29, + kCFStringEncodingMacVietnamese = 30, + kCFStringEncodingMacExtArabic = 31, + + kCFStringEncodingMacSymbol = 33, + kCFStringEncodingMacDingbats = 34, + kCFStringEncodingMacTurkish = 35, + kCFStringEncodingMacCroatian = 36, + kCFStringEncodingMacIcelandic = 37, + kCFStringEncodingMacRomanian = 38, + kCFStringEncodingMacCeltic = 39, + kCFStringEncodingMacGaelic = 40, + + kCFStringEncodingMacFarsi = 0x8C, + + kCFStringEncodingMacUkrainian = 0x98, + + kCFStringEncodingMacInuit = 0xEC, + kCFStringEncodingMacVT100 = 0xFC, + + kCFStringEncodingMacHFS = 0xFF, + + + + + + + kCFStringEncodingISOLatin2 = 0x0202, + kCFStringEncodingISOLatin3 = 0x0203, + kCFStringEncodingISOLatin4 = 0x0204, + kCFStringEncodingISOLatinCyrillic = 0x0205, + kCFStringEncodingISOLatinArabic = 0x0206, + kCFStringEncodingISOLatinGreek = 0x0207, + kCFStringEncodingISOLatinHebrew = 0x0208, + kCFStringEncodingISOLatin5 = 0x0209, + kCFStringEncodingISOLatin6 = 0x020A, + kCFStringEncodingISOLatinThai = 0x020B, + kCFStringEncodingISOLatin7 = 0x020D, + kCFStringEncodingISOLatin8 = 0x020E, + kCFStringEncodingISOLatin9 = 0x020F, + kCFStringEncodingISOLatin10 = 0x0210, + + + kCFStringEncodingDOSLatinUS = 0x0400, + kCFStringEncodingDOSGreek = 0x0405, + kCFStringEncodingDOSBalticRim = 0x0406, + kCFStringEncodingDOSLatin1 = 0x0410, + kCFStringEncodingDOSGreek1 = 0x0411, + kCFStringEncodingDOSLatin2 = 0x0412, + kCFStringEncodingDOSCyrillic = 0x0413, + kCFStringEncodingDOSTurkish = 0x0414, + kCFStringEncodingDOSPortuguese = 0x0415, + kCFStringEncodingDOSIcelandic = 0x0416, + kCFStringEncodingDOSHebrew = 0x0417, + kCFStringEncodingDOSCanadianFrench = 0x0418, + kCFStringEncodingDOSArabic = 0x0419, + kCFStringEncodingDOSNordic = 0x041A, + kCFStringEncodingDOSRussian = 0x041B, + kCFStringEncodingDOSGreek2 = 0x041C, + kCFStringEncodingDOSThai = 0x041D, + kCFStringEncodingDOSJapanese = 0x0420, + kCFStringEncodingDOSChineseSimplif = 0x0421, + kCFStringEncodingDOSKorean = 0x0422, + kCFStringEncodingDOSChineseTrad = 0x0423, + + kCFStringEncodingWindowsLatin2 = 0x0501, + kCFStringEncodingWindowsCyrillic = 0x0502, + kCFStringEncodingWindowsGreek = 0x0503, + kCFStringEncodingWindowsLatin5 = 0x0504, + kCFStringEncodingWindowsHebrew = 0x0505, + kCFStringEncodingWindowsArabic = 0x0506, + kCFStringEncodingWindowsBalticRim = 0x0507, + kCFStringEncodingWindowsVietnamese = 0x0508, + kCFStringEncodingWindowsKoreanJohab = 0x0510, + + + + kCFStringEncodingANSEL = 0x0601, + kCFStringEncodingJIS_X0201_76 = 0x0620, + kCFStringEncodingJIS_X0208_83 = 0x0621, + kCFStringEncodingJIS_X0208_90 = 0x0622, + kCFStringEncodingJIS_X0212_90 = 0x0623, + kCFStringEncodingJIS_C6226_78 = 0x0624, + kCFStringEncodingShiftJIS_X0213 __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x0628, + kCFStringEncodingShiftJIS_X0213_MenKuTen = 0x0629, + kCFStringEncodingGB_2312_80 = 0x0630, + kCFStringEncodingGBK_95 = 0x0631, + kCFStringEncodingGB_18030_2000 = 0x0632, + kCFStringEncodingKSC_5601_87 = 0x0640, + kCFStringEncodingKSC_5601_92_Johab = 0x0641, + kCFStringEncodingCNS_11643_92_P1 = 0x0651, + kCFStringEncodingCNS_11643_92_P2 = 0x0652, + kCFStringEncodingCNS_11643_92_P3 = 0x0653, + + + kCFStringEncodingISO_2022_JP = 0x0820, + kCFStringEncodingISO_2022_JP_2 = 0x0821, + kCFStringEncodingISO_2022_JP_1 = 0x0822, + kCFStringEncodingISO_2022_JP_3 = 0x0823, + kCFStringEncodingISO_2022_CN = 0x0830, + kCFStringEncodingISO_2022_CN_EXT = 0x0831, + kCFStringEncodingISO_2022_KR = 0x0840, + + + kCFStringEncodingEUC_JP = 0x0920, + kCFStringEncodingEUC_CN = 0x0930, + kCFStringEncodingEUC_TW = 0x0931, + kCFStringEncodingEUC_KR = 0x0940, + + + kCFStringEncodingShiftJIS = 0x0A01, + kCFStringEncodingKOI8_R = 0x0A02, + kCFStringEncodingBig5 = 0x0A03, + kCFStringEncodingMacRomanLatin1 = 0x0A04, + kCFStringEncodingHZ_GB_2312 = 0x0A05, + kCFStringEncodingBig5_HKSCS_1999 = 0x0A06, + kCFStringEncodingVISCII = 0x0A07, + kCFStringEncodingKOI8_U = 0x0A08, + kCFStringEncodingBig5_E = 0x0A09, + + + + kCFStringEncodingNextStepJapanese = 0x0B02, + + + kCFStringEncodingEBCDIC_US = 0x0C01, + kCFStringEncodingEBCDIC_CP037 = 0x0C02, + + kCFStringEncodingUTF7 __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x04000100, + kCFStringEncodingUTF7_IMAP __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x0A10, + + + kCFStringEncodingShiftJIS_X0213_00 = 0x0628 +}; + +} + +extern "C" { +typedef const void * (*CFTreeRetainCallBack)(const void *info); + + + + + + + +typedef void (*CFTreeReleaseCallBack)(const void *info); +typedef CFStringRef (*CFTreeCopyDescriptionCallBack)(const void *info); +typedef struct { + CFIndex version; + void * info; + CFTreeRetainCallBack retain; + CFTreeReleaseCallBack release; + CFTreeCopyDescriptionCallBack copyDescription; +} CFTreeContext; +typedef void (*CFTreeApplierFunction)(const void *value, void *context); + + + + + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFTree * CFTreeRef; + + + + + +extern +CFTypeID CFTreeGetTypeID(void); +extern +CFTreeRef CFTreeCreate(CFAllocatorRef allocator, const CFTreeContext *context); +extern +CFTreeRef CFTreeGetParent(CFTreeRef tree); +extern +CFTreeRef CFTreeGetNextSibling(CFTreeRef tree); +extern +CFTreeRef CFTreeGetFirstChild(CFTreeRef tree); +extern +void CFTreeGetContext(CFTreeRef tree, CFTreeContext *context); +extern +CFIndex CFTreeGetChildCount(CFTreeRef tree); +extern +CFTreeRef CFTreeGetChildAtIndex(CFTreeRef tree, CFIndex idx); +extern +void CFTreeGetChildren(CFTreeRef tree, CFTreeRef *children); +extern +void CFTreeApplyFunctionToChildren(CFTreeRef tree, CFTreeApplierFunction __attribute__((noescape)) applier, void *context); +extern +CFTreeRef CFTreeFindRoot(CFTreeRef tree); +extern +void CFTreeSetContext(CFTreeRef tree, const CFTreeContext *context); +extern +void CFTreePrependChild(CFTreeRef tree, CFTreeRef newChild); +extern +void CFTreeAppendChild(CFTreeRef tree, CFTreeRef newChild); +extern +void CFTreeInsertSibling(CFTreeRef tree, CFTreeRef newSibling); + + + + + + + +extern +void CFTreeRemove(CFTreeRef tree); + + + + + + + +extern +void CFTreeRemoveAllChildren(CFTreeRef tree); +extern +void CFTreeSortChildren(CFTreeRef tree, CFComparatorFunction comparator, void *context); + +} + +extern "C" { +extern +Boolean CFURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef *resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="For resource data, use the CFReadStream API. For file resource properties, use CFURLCopyResourcePropertiesForKeys."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="For resource data, use the CFReadStream API. For file resource properties, use CFURLCopyResourcePropertiesForKeys."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="For resource data, use the CFReadStream API. For file resource properties, use CFURLCopyResourcePropertiesForKeys."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="For resource data, use the CFReadStream API. For file resource properties, use CFURLCopyResourcePropertiesForKeys."))); +extern +Boolean CFURLWriteDataAndPropertiesToResource(CFURLRef url, CFDataRef dataToWrite, CFDictionaryRef propertiesToWrite, SInt32 *errorCode) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="For resource data, use the CFWriteStream API. For file resource properties, use CFURLSetResourcePropertiesForKeys."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="For resource data, use the CFWriteStream API. For file resource properties, use CFURLSetResourcePropertiesForKeys."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="For resource data, use the CFWriteStream API. For file resource properties, use CFURLSetResourcePropertiesForKeys."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="For resource data, use the CFWriteStream API. For file resource properties, use CFURLSetResourcePropertiesForKeys."))); + + + + + +extern +Boolean CFURLDestroyResource(CFURLRef url, SInt32 *errorCode) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLGetFileSystemRepresentation and removefile(3) instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLGetFileSystemRepresentation and removefile(3) instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLGetFileSystemRepresentation and removefile(3) instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLGetFileSystemRepresentation and removefile(3) instead."))); + + + + + +extern +CFTypeRef CFURLCreatePropertyFromResource(CFAllocatorRef alloc, CFURLRef url, CFStringRef property, SInt32 *errorCode) __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="For file resource properties, use CFURLCopyResourcePropertyForKey."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="For file resource properties, use CFURLCopyResourcePropertyForKey."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="For file resource properties, use CFURLCopyResourcePropertyForKey."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="For file resource properties, use CFURLCopyResourcePropertyForKey."))); + + + +typedef CFIndex CFURLError; enum { + kCFURLUnknownError = -10L, + kCFURLUnknownSchemeError = -11L, + kCFURLResourceNotFoundError = -12L, + kCFURLResourceAccessViolationError = -13L, + kCFURLRemoteHostUnavailableError = -14L, + kCFURLImproperArgumentsError = -15L, + kCFURLUnknownPropertyKeyError = -16L, + kCFURLPropertyKeyUnavailableError = -17L, + kCFURLTimeoutError = -18L +} __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFError codes instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFError codes instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFError codes instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFError codes instead"))); + + + +extern +const CFStringRef kCFURLFileExists __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLResourceIsReachable instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLResourceIsReachable instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLResourceIsReachable instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLResourceIsReachable instead."))); +extern +const CFStringRef kCFURLFileDirectoryContents __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use the CFURLEnumerator API instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use the CFURLEnumerator API instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use the CFURLEnumerator API instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use the CFURLEnumerator API instead."))); +extern +const CFStringRef kCFURLFileLength __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSizeKey instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSizeKey instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSizeKey instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSizeKey instead."))); +extern +const CFStringRef kCFURLFileLastModificationTime __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLCopyResourcePropertyForKey with kCFURLContentModificationDateKey instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLContentModificationDateKey instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLContentModificationDateKey instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLContentModificationDateKey instead."))); +extern +const CFStringRef kCFURLFilePOSIXMode __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))); +extern +const CFStringRef kCFURLFileOwnerID __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use CFURLCopyResourcePropertyForKey with kCFURLFileSecurityKey and then the CFFileSecurity API instead."))); +extern +const CFStringRef kCFURLHTTPStatusCode __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSHTTPURLResponse methods instead."))); +extern +const CFStringRef kCFURLHTTPStatusLine __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSHTTPURLResponse methods instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSHTTPURLResponse methods instead."))); +} +extern "C" { + +typedef const struct __attribute__((objc_bridge(id))) __CFUUID * CFUUIDRef; + +typedef struct { + UInt8 byte0; + UInt8 byte1; + UInt8 byte2; + UInt8 byte3; + UInt8 byte4; + UInt8 byte5; + UInt8 byte6; + UInt8 byte7; + UInt8 byte8; + UInt8 byte9; + UInt8 byte10; + UInt8 byte11; + UInt8 byte12; + UInt8 byte13; + UInt8 byte14; + UInt8 byte15; +} CFUUIDBytes; + + + + + + +extern +CFTypeID CFUUIDGetTypeID(void); + +extern +CFUUIDRef CFUUIDCreate(CFAllocatorRef alloc); + + +extern +CFUUIDRef CFUUIDCreateWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15); + + +extern +CFUUIDRef CFUUIDCreateFromString(CFAllocatorRef alloc, CFStringRef uuidStr); + + +extern +CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid); + + +extern +CFUUIDRef CFUUIDGetConstantUUIDWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15); + + +extern +CFUUIDBytes CFUUIDGetUUIDBytes(CFUUIDRef uuid); + +extern +CFUUIDRef CFUUIDCreateFromUUIDBytes(CFAllocatorRef alloc, CFUUIDBytes bytes); + +} +extern "C" { + +extern +CFURLRef CFCopyHomeDirectoryURL(void) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +} +extern "C" { + +typedef struct __attribute__((objc_bridge(id))) __CFBundle *CFBundleRef; +typedef struct __attribute__((objc_bridge(id))) __CFBundle *CFPlugInRef; + + +extern +const CFStringRef kCFBundleInfoDictionaryVersionKey; + +extern +const CFStringRef kCFBundleExecutableKey; + +extern +const CFStringRef kCFBundleIdentifierKey; + +extern +const CFStringRef kCFBundleVersionKey; + + + +extern +const CFStringRef kCFBundleDevelopmentRegionKey; + +extern +const CFStringRef kCFBundleNameKey; + +extern +const CFStringRef kCFBundleLocalizationsKey; + + + + +extern +CFBundleRef CFBundleGetMainBundle(void); + +extern +CFBundleRef CFBundleGetBundleWithIdentifier(CFStringRef bundleID); + + + + + + + +extern +CFArrayRef CFBundleGetAllBundles(void); + + + + + +extern +CFTypeID CFBundleGetTypeID(void); + +extern +CFBundleRef CFBundleCreate(CFAllocatorRef allocator, CFURLRef bundleURL); + + +extern +CFArrayRef CFBundleCreateBundlesFromDirectory(CFAllocatorRef allocator, CFURLRef directoryURL, CFStringRef bundleType); + + + + + +extern +CFURLRef CFBundleCopyBundleURL(CFBundleRef bundle); + +extern +CFTypeRef CFBundleGetValueForInfoDictionaryKey(CFBundleRef bundle, CFStringRef key); + + + +extern +CFDictionaryRef CFBundleGetInfoDictionary(CFBundleRef bundle); + + + +extern +CFDictionaryRef CFBundleGetLocalInfoDictionary(CFBundleRef bundle); + + +extern +void CFBundleGetPackageInfo(CFBundleRef bundle, UInt32 *packageType, UInt32 *packageCreator); + +extern +CFStringRef CFBundleGetIdentifier(CFBundleRef bundle); + +extern +UInt32 CFBundleGetVersionNumber(CFBundleRef bundle); + +extern +CFStringRef CFBundleGetDevelopmentRegion(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopySupportFilesDirectoryURL(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopyResourcesDirectoryURL(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopyPrivateFrameworksURL(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopySharedFrameworksURL(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopySharedSupportURL(CFBundleRef bundle); + +extern +CFURLRef CFBundleCopyBuiltInPlugInsURL(CFBundleRef bundle); + + + + + + +extern +CFDictionaryRef CFBundleCopyInfoDictionaryInDirectory(CFURLRef bundleURL); + +extern +Boolean CFBundleGetPackageInfoInDirectory(CFURLRef url, UInt32 *packageType, UInt32 *packageCreator); + + + +extern +CFURLRef CFBundleCopyResourceURL(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName); + +extern +CFArrayRef CFBundleCopyResourceURLsOfType(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName); + +extern +CFStringRef CFBundleCopyLocalizedString(CFBundleRef bundle, CFStringRef key, CFStringRef value, CFStringRef tableName) __attribute__((format_arg(2))); +extern +CFURLRef CFBundleCopyResourceURLInDirectory(CFURLRef bundleURL, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName); + +extern +CFArrayRef CFBundleCopyResourceURLsOfTypeInDirectory(CFURLRef bundleURL, CFStringRef resourceType, CFStringRef subDirName); + + + + + + +extern +CFArrayRef CFBundleCopyBundleLocalizations(CFBundleRef bundle); + + +extern +CFArrayRef CFBundleCopyPreferredLocalizationsFromArray(CFArrayRef locArray); + + + + + + +extern +CFArrayRef CFBundleCopyLocalizationsForPreferences(CFArrayRef locArray, CFArrayRef prefArray); +extern +CFURLRef CFBundleCopyResourceURLForLocalization(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName); + +extern +CFArrayRef CFBundleCopyResourceURLsOfTypeForLocalization(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName); +extern +CFDictionaryRef CFBundleCopyInfoDictionaryForURL(CFURLRef url); + + + + +extern +CFArrayRef CFBundleCopyLocalizationsForURL(CFURLRef url); + + + + + +extern +CFArrayRef CFBundleCopyExecutableArchitecturesForURL(CFURLRef url) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFURLRef CFBundleCopyExecutableURL(CFBundleRef bundle); + +enum { + kCFBundleExecutableArchitectureI386 = 0x00000007, + kCFBundleExecutableArchitecturePPC = 0x00000012, + kCFBundleExecutableArchitectureX86_64 = 0x01000007, + kCFBundleExecutableArchitecturePPC64 = 0x01000012 +} __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern +CFArrayRef CFBundleCopyExecutableArchitectures(CFBundleRef bundle) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern +Boolean CFBundlePreflightExecutable(CFBundleRef bundle, CFErrorRef *error) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +Boolean CFBundleLoadExecutableAndReturnError(CFBundleRef bundle, CFErrorRef *error) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern +Boolean CFBundleLoadExecutable(CFBundleRef bundle); + +extern +Boolean CFBundleIsExecutableLoaded(CFBundleRef bundle); + +extern +void CFBundleUnloadExecutable(CFBundleRef bundle); + +extern +void *CFBundleGetFunctionPointerForName(CFBundleRef bundle, CFStringRef functionName); + +extern +void CFBundleGetFunctionPointersForNames(CFBundleRef bundle, CFArrayRef functionNames, void *ftbl[]); + +extern +void *CFBundleGetDataPointerForName(CFBundleRef bundle, CFStringRef symbolName); + +extern +void CFBundleGetDataPointersForNames(CFBundleRef bundle, CFArrayRef symbolNames, void *stbl[]); + +extern +CFURLRef CFBundleCopyAuxiliaryExecutableURL(CFBundleRef bundle, CFStringRef executableName); +extern +CFPlugInRef CFBundleGetPlugIn(CFBundleRef bundle); + + + + +typedef int CFBundleRefNum; + + + + +extern +CFBundleRefNum CFBundleOpenBundleResourceMap(CFBundleRef bundle) __attribute__((availability(macosx,introduced=10.0,deprecated=10.15,message="The Carbon Resource Manager is deprecated. This should only be used to access Resource Manager-style resources in old bundles."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + +extern +SInt32 CFBundleOpenBundleResourceFiles(CFBundleRef bundle, CFBundleRefNum *refNum, CFBundleRefNum *localizedRefNum) __attribute__((availability(macosx,introduced=10.0,deprecated=10.15,message="The Carbon Resource Manager is deprecated. This should only be used to access Resource Manager-style resources in old bundles."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern +void CFBundleCloseBundleResourceMap(CFBundleRef bundle, CFBundleRefNum refNum) __attribute__((availability(macosx,introduced=10.0,deprecated=10.15,message="The Carbon Resource Manager is deprecated. This should only be used to access Resource Manager-style resources in old bundles."))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +} + + +extern "C" { + +typedef struct __attribute__((objc_bridge_mutable(NSMessagePort))) __CFMessagePort * CFMessagePortRef; + +enum { + kCFMessagePortSuccess = 0, + kCFMessagePortSendTimeout = -1, + kCFMessagePortReceiveTimeout = -2, + kCFMessagePortIsInvalid = -3, + kCFMessagePortTransportError = -4, + kCFMessagePortBecameInvalidError = -5 +}; + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFMessagePortContext; + +typedef CFDataRef (*CFMessagePortCallBack)(CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info); + +typedef void (*CFMessagePortInvalidationCallBack)(CFMessagePortRef ms, void *info); + +extern CFTypeID CFMessagePortGetTypeID(void); + +extern CFMessagePortRef CFMessagePortCreateLocal(CFAllocatorRef allocator, CFStringRef name, CFMessagePortCallBack callout, CFMessagePortContext *context, Boolean *shouldFreeInfo); +extern CFMessagePortRef CFMessagePortCreateRemote(CFAllocatorRef allocator, CFStringRef name); + +extern Boolean CFMessagePortIsRemote(CFMessagePortRef ms); +extern CFStringRef CFMessagePortGetName(CFMessagePortRef ms); +extern Boolean CFMessagePortSetName(CFMessagePortRef ms, CFStringRef newName); +extern void CFMessagePortGetContext(CFMessagePortRef ms, CFMessagePortContext *context); +extern void CFMessagePortInvalidate(CFMessagePortRef ms); +extern Boolean CFMessagePortIsValid(CFMessagePortRef ms); +extern CFMessagePortInvalidationCallBack CFMessagePortGetInvalidationCallBack(CFMessagePortRef ms); +extern void CFMessagePortSetInvalidationCallBack(CFMessagePortRef ms, CFMessagePortInvalidationCallBack callout); + + +extern SInt32 CFMessagePortSendRequest(CFMessagePortRef remote, SInt32 msgid, CFDataRef data, CFTimeInterval sendTimeout, CFTimeInterval rcvTimeout, CFStringRef replyMode, CFDataRef *returnData); + +extern CFRunLoopSourceRef CFMessagePortCreateRunLoopSource(CFAllocatorRef allocator, CFMessagePortRef local, CFIndex order); + +extern void CFMessagePortSetDispatchQueue(CFMessagePortRef ms, dispatch_queue_t queue) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} +extern "C" { + + + +extern const CFStringRef kCFPlugInDynamicRegistrationKey; +extern const CFStringRef kCFPlugInDynamicRegisterFunctionKey; +extern const CFStringRef kCFPlugInUnloadFunctionKey; +extern const CFStringRef kCFPlugInFactoriesKey; +extern const CFStringRef kCFPlugInTypesKey; + + + + +typedef void (*CFPlugInDynamicRegisterFunction)(CFPlugInRef plugIn); +typedef void (*CFPlugInUnloadFunction)(CFPlugInRef plugIn); +typedef void *(*CFPlugInFactoryFunction)(CFAllocatorRef allocator, CFUUIDRef typeUUID); + + + +extern CFTypeID CFPlugInGetTypeID(void); + +extern CFPlugInRef CFPlugInCreate(CFAllocatorRef allocator, CFURLRef plugInURL); + + +extern CFBundleRef CFPlugInGetBundle(CFPlugInRef plugIn); + + + + + + + +extern void CFPlugInSetLoadOnDemand(CFPlugInRef plugIn, Boolean flag); + +extern Boolean CFPlugInIsLoadOnDemand(CFPlugInRef plugIn); + + + + + + +extern CFArrayRef CFPlugInFindFactoriesForPlugInType(CFUUIDRef typeUUID) __attribute__((cf_returns_retained)); + + + +extern CFArrayRef CFPlugInFindFactoriesForPlugInTypeInPlugIn(CFUUIDRef typeUUID, CFPlugInRef plugIn) __attribute__((cf_returns_retained)); + + +extern void *CFPlugInInstanceCreate(CFAllocatorRef allocator, CFUUIDRef factoryUUID, CFUUIDRef typeUUID); + + + + + +extern Boolean CFPlugInRegisterFactoryFunction(CFUUIDRef factoryUUID, CFPlugInFactoryFunction func); + +extern Boolean CFPlugInRegisterFactoryFunctionByName(CFUUIDRef factoryUUID, CFPlugInRef plugIn, CFStringRef functionName); + +extern Boolean CFPlugInUnregisterFactory(CFUUIDRef factoryUUID); + +extern Boolean CFPlugInRegisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID); + +extern Boolean CFPlugInUnregisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID); + + + + + +extern void CFPlugInAddInstanceForFactory(CFUUIDRef factoryID); + +extern void CFPlugInRemoveInstanceForFactory(CFUUIDRef factoryID); + + + + +typedef struct __attribute__((objc_bridge(id))) __CFPlugInInstance *CFPlugInInstanceRef; + +typedef Boolean (*CFPlugInInstanceGetInterfaceFunction)(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl); +typedef void (*CFPlugInInstanceDeallocateInstanceDataFunction)(void *instanceData); + +extern Boolean CFPlugInInstanceGetInterfaceFunctionTable(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl); + + +extern CFStringRef CFPlugInInstanceGetFactoryName(CFPlugInInstanceRef instance) __attribute__((cf_returns_retained)); + +extern void *CFPlugInInstanceGetInstanceData(CFPlugInInstanceRef instance); + +extern CFTypeID CFPlugInInstanceGetTypeID(void); + +extern CFPlugInInstanceRef CFPlugInInstanceCreateWithInstanceDataSize(CFAllocatorRef allocator, CFIndex instanceDataSize, CFPlugInInstanceDeallocateInstanceDataFunction deallocateInstanceFunction, CFStringRef factoryName, CFPlugInInstanceGetInterfaceFunction getInterfaceFunction); + +} + + + +extern "C" { + +typedef struct __attribute__((objc_bridge_mutable(NSMachPort))) __CFMachPort * CFMachPortRef; + +typedef struct { + CFIndex version; + void * info; + const void *(*retain)(const void *info); + void (*release)(const void *info); + CFStringRef (*copyDescription)(const void *info); +} CFMachPortContext; + +typedef void (*CFMachPortCallBack)(CFMachPortRef port, void *msg, CFIndex size, void *info); +typedef void (*CFMachPortInvalidationCallBack)(CFMachPortRef port, void *info); + +extern CFTypeID CFMachPortGetTypeID(void); + +extern CFMachPortRef CFMachPortCreate(CFAllocatorRef allocator, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo); +extern CFMachPortRef CFMachPortCreateWithPort(CFAllocatorRef allocator, mach_port_t portNum, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo); + +extern mach_port_t CFMachPortGetPort(CFMachPortRef port); +extern void CFMachPortGetContext(CFMachPortRef port, CFMachPortContext *context); +extern void CFMachPortInvalidate(CFMachPortRef port); +extern Boolean CFMachPortIsValid(CFMachPortRef port); +extern CFMachPortInvalidationCallBack CFMachPortGetInvalidationCallBack(CFMachPortRef port); +extern void CFMachPortSetInvalidationCallBack(CFMachPortRef port, CFMachPortInvalidationCallBack callout); + +extern CFRunLoopSourceRef CFMachPortCreateRunLoopSource(CFAllocatorRef allocator, CFMachPortRef port, CFIndex order); + +} + +extern "C" { + + + + +typedef const struct __attribute__((objc_bridge(NSAttributedString))) __CFAttributedString *CFAttributedStringRef; +typedef struct __attribute__((objc_bridge_mutable(NSMutableAttributedString))) __CFAttributedString *CFMutableAttributedStringRef; + + + + +extern CFTypeID CFAttributedStringGetTypeID(void); +extern CFAttributedStringRef CFAttributedStringCreate(CFAllocatorRef alloc, CFStringRef str, CFDictionaryRef attributes); + + + + +extern CFAttributedStringRef CFAttributedStringCreateWithSubstring(CFAllocatorRef alloc, CFAttributedStringRef aStr, CFRange range); + + + + +extern CFAttributedStringRef CFAttributedStringCreateCopy(CFAllocatorRef alloc, CFAttributedStringRef aStr); + + + + +extern CFStringRef CFAttributedStringGetString(CFAttributedStringRef aStr); + + + + +extern CFIndex CFAttributedStringGetLength(CFAttributedStringRef aStr); + + + + + + +extern CFDictionaryRef CFAttributedStringGetAttributes(CFAttributedStringRef aStr, CFIndex loc, CFRange *effectiveRange); + + + + +extern CFTypeRef CFAttributedStringGetAttribute(CFAttributedStringRef aStr, CFIndex loc, CFStringRef attrName, CFRange *effectiveRange); + + + + +extern CFDictionaryRef CFAttributedStringGetAttributesAndLongestEffectiveRange(CFAttributedStringRef aStr, CFIndex loc, CFRange inRange, CFRange *longestEffectiveRange); + + + + +extern CFTypeRef CFAttributedStringGetAttributeAndLongestEffectiveRange(CFAttributedStringRef aStr, CFIndex loc, CFStringRef attrName, CFRange inRange, CFRange *longestEffectiveRange); +extern CFMutableAttributedStringRef CFAttributedStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFAttributedStringRef aStr); + + + + +extern CFMutableAttributedStringRef CFAttributedStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength); + + + + + + +extern void CFAttributedStringReplaceString(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef replacement); + + + + + + +extern CFMutableStringRef CFAttributedStringGetMutableString(CFMutableAttributedStringRef aStr); + + + + +extern void CFAttributedStringSetAttributes(CFMutableAttributedStringRef aStr, CFRange range, CFDictionaryRef replacement, Boolean clearOtherAttributes); + + + + +extern void CFAttributedStringSetAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName, CFTypeRef value); + + + + +extern void CFAttributedStringRemoveAttribute(CFMutableAttributedStringRef aStr, CFRange range, CFStringRef attrName); + + + + +extern void CFAttributedStringReplaceAttributedString(CFMutableAttributedStringRef aStr, CFRange range, CFAttributedStringRef replacement); + + + + +extern void CFAttributedStringBeginEditing(CFMutableAttributedStringRef aStr); + + + + +extern void CFAttributedStringEndEditing(CFMutableAttributedStringRef aStr); + + +} + + +extern "C" { + + +typedef const struct __attribute__((objc_bridge_mutable(id))) __CFURLEnumerator *CFURLEnumeratorRef; + + +extern +CFTypeID CFURLEnumeratorGetTypeID( void ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef CFOptionFlags CFURLEnumeratorOptions; enum { + kCFURLEnumeratorDefaultBehavior = 0, + kCFURLEnumeratorDescendRecursively = 1UL << 0, + kCFURLEnumeratorSkipInvisibles = 1UL << 1, + kCFURLEnumeratorGenerateFileReferenceURLs = 1UL << 2, + kCFURLEnumeratorSkipPackageContents = 1UL << 3, + kCFURLEnumeratorIncludeDirectoriesPreOrder = 1UL << 4, + kCFURLEnumeratorIncludeDirectoriesPostOrder = 1UL << 5, + + kCFURLEnumeratorGenerateRelativePathURLs __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 1UL << 6, +}; + + + + + + + +extern +CFURLEnumeratorRef CFURLEnumeratorCreateForDirectoryURL( CFAllocatorRef alloc, CFURLRef directoryURL, CFURLEnumeratorOptions option, CFArrayRef propertyKeys ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFURLEnumeratorRef CFURLEnumeratorCreateForMountedVolumes( CFAllocatorRef alloc, CFURLEnumeratorOptions option, CFArrayRef propertyKeys ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef CFIndex CFURLEnumeratorResult; enum { + kCFURLEnumeratorSuccess = 1, + kCFURLEnumeratorEnd = 2, + kCFURLEnumeratorError = 3, + kCFURLEnumeratorDirectoryPostOrderSuccess = 4, +}; + + + + + +extern +CFURLEnumeratorResult CFURLEnumeratorGetNextURL( CFURLEnumeratorRef enumerator, CFURLRef *url, CFErrorRef *error ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +void CFURLEnumeratorSkipDescendents( CFURLEnumeratorRef enumerator ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern +CFIndex CFURLEnumeratorGetDescendentLevel( CFURLEnumeratorRef enumerator ) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern +Boolean CFURLEnumeratorGetSourceDidChange( CFURLEnumeratorRef enumerator ) __attribute__((availability(macos,introduced=10.6,deprecated=10.7,message="Use File System Events API instead"))) __attribute__((availability(ios,introduced=4.0,deprecated=5.0,message="Use File System Events API instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use File System Events API instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use File System Events API instead"))); + + +} + + + + + + +typedef union { + + unsigned char g_guid[16]; + unsigned int g_guid_asint[16 / sizeof(unsigned int)]; +} guid_t; + + +#pragma pack(1) +typedef struct { + u_int8_t sid_kind; + u_int8_t sid_authcount; + u_int8_t sid_authority[6]; + + u_int32_t sid_authorities[16]; +} ntsid_t; +#pragma pack() +struct kauth_identity_extlookup { + u_int32_t el_seqno; + u_int32_t el_result; + + + + + + u_int32_t el_flags; + __darwin_pid_t el_info_pid; + u_int64_t el_extend; + u_int32_t el_info_reserved_1; + + uid_t el_uid; + guid_t el_uguid; + u_int32_t el_uguid_valid; + ntsid_t el_usid; + u_int32_t el_usid_valid; + gid_t el_gid; + guid_t el_gguid; + u_int32_t el_gguid_valid; + ntsid_t el_gsid; + u_int32_t el_gsid_valid; + u_int32_t el_member_valid; + u_int32_t el_sup_grp_cnt; + gid_t el_sup_groups[16]; +}; + +struct kauth_cache_sizes { + u_int32_t kcs_group_size; + u_int32_t kcs_id_size; +}; +typedef u_int32_t kauth_ace_rights_t; + + +struct kauth_ace { + guid_t ace_applicable; + u_int32_t ace_flags; + kauth_ace_rights_t ace_rights; + + + + + +}; + + + +typedef struct kauth_ace *kauth_ace_t; + + + + +struct kauth_acl { + u_int32_t acl_entrycount; + u_int32_t acl_flags; + + struct kauth_ace acl_ace[1]; +}; +typedef struct kauth_acl *kauth_acl_t; +struct kauth_filesec { + u_int32_t fsec_magic; + + guid_t fsec_owner; + guid_t fsec_group; + + struct kauth_acl fsec_acl; +}; +typedef struct kauth_filesec *kauth_filesec_t; +typedef enum { + ACL_READ_DATA = (1<<1), + ACL_LIST_DIRECTORY = (1<<1), + ACL_WRITE_DATA = (1<<2), + ACL_ADD_FILE = (1<<2), + ACL_EXECUTE = (1<<3), + ACL_SEARCH = (1<<3), + ACL_DELETE = (1<<4), + ACL_APPEND_DATA = (1<<5), + ACL_ADD_SUBDIRECTORY = (1<<5), + ACL_DELETE_CHILD = (1<<6), + ACL_READ_ATTRIBUTES = (1<<7), + ACL_WRITE_ATTRIBUTES = (1<<8), + ACL_READ_EXTATTRIBUTES = (1<<9), + ACL_WRITE_EXTATTRIBUTES = (1<<10), + ACL_READ_SECURITY = (1<<11), + ACL_WRITE_SECURITY = (1<<12), + ACL_CHANGE_OWNER = (1<<13), + ACL_SYNCHRONIZE = (1<<20), +} acl_perm_t; + + +typedef enum { + ACL_UNDEFINED_TAG = 0, + ACL_EXTENDED_ALLOW = 1, + ACL_EXTENDED_DENY = 2 +} acl_tag_t; + + +typedef enum { + ACL_TYPE_EXTENDED = 0x00000100, + + ACL_TYPE_ACCESS = 0x00000000, + ACL_TYPE_DEFAULT = 0x00000001, + + ACL_TYPE_AFS = 0x00000002, + ACL_TYPE_CODA = 0x00000003, + ACL_TYPE_NTFS = 0x00000004, + ACL_TYPE_NWFS = 0x00000005 +} acl_type_t; + + + + + + +typedef enum { + ACL_FIRST_ENTRY = 0, + ACL_NEXT_ENTRY = -1, + ACL_LAST_ENTRY = -2 +} acl_entry_id_t; + + +typedef enum { + ACL_FLAG_DEFER_INHERIT = (1 << 0), + ACL_FLAG_NO_INHERIT = (1<<17), + ACL_ENTRY_INHERITED = (1<<4), + ACL_ENTRY_FILE_INHERIT = (1<<5), + ACL_ENTRY_DIRECTORY_INHERIT = (1<<6), + ACL_ENTRY_LIMIT_INHERIT = (1<<7), + ACL_ENTRY_ONLY_INHERIT = (1<<8) +} acl_flag_t; + + + +struct _acl; +struct _acl_entry; +struct _acl_permset; +struct _acl_flagset; + +typedef struct _acl *acl_t; +typedef struct _acl_entry *acl_entry_t; +typedef struct _acl_permset *acl_permset_t; +typedef struct _acl_flagset *acl_flagset_t; + +typedef u_int64_t acl_permset_mask_t; + +extern "C" { + +extern acl_t acl_dup(acl_t acl); +extern int acl_free(void *obj_p); +extern acl_t acl_init(int count); + + +extern int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d); +extern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p); +extern int acl_create_entry_np(acl_t *acl_p, acl_entry_t *entry_p, int entry_index); +extern int acl_delete_entry(acl_t acl, acl_entry_t entry_d); +extern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p); +extern int acl_valid(acl_t acl); +extern int acl_valid_fd_np(int fd, acl_type_t type, acl_t acl); +extern int acl_valid_file_np(const char *path, acl_type_t type, acl_t acl); +extern int acl_valid_link_np(const char *path, acl_type_t type, acl_t acl); + + +extern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm); +extern int acl_calc_mask(acl_t *acl_p); +extern int acl_clear_perms(acl_permset_t permset_d); +extern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm); +extern int acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm); +extern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p); +extern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d); + + +extern int acl_maximal_permset_mask_np(acl_permset_mask_t * mask_p) __attribute__((availability(ios,introduced=4.3))); +extern int acl_get_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t * mask_p) __attribute__((availability(ios,introduced=4.3))); +extern int acl_set_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t mask) __attribute__((availability(ios,introduced=4.3))); + + +extern int acl_add_flag_np(acl_flagset_t flagset_d, acl_flag_t flag); +extern int acl_clear_flags_np(acl_flagset_t flagset_d); +extern int acl_delete_flag_np(acl_flagset_t flagset_d, acl_flag_t flag); +extern int acl_get_flag_np(acl_flagset_t flagset_d, acl_flag_t flag); +extern int acl_get_flagset_np(void *obj_p, acl_flagset_t *flagset_p); +extern int acl_set_flagset_np(void *obj_p, acl_flagset_t flagset_d); + + +extern void *acl_get_qualifier(acl_entry_t entry_d); +extern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p); +extern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p); +extern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type); + + +extern int acl_delete_def_file(const char *path_p); +extern acl_t acl_get_fd(int fd); +extern acl_t acl_get_fd_np(int fd, acl_type_t type); +extern acl_t acl_get_file(const char *path_p, acl_type_t type); +extern acl_t acl_get_link_np(const char *path_p, acl_type_t type); +extern int acl_set_fd(int fd, acl_t acl); +extern int acl_set_fd_np(int fd, acl_t acl, acl_type_t acl_type); +extern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl); +extern int acl_set_link_np(const char *path_p, acl_type_t type, acl_t acl); + + +extern ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size); +extern ssize_t acl_copy_ext_native(void *buf_p, acl_t acl, ssize_t size); +extern acl_t acl_copy_int(const void *buf_p); +extern acl_t acl_copy_int_native(const void *buf_p); +extern acl_t acl_from_text(const char *buf_p); +extern ssize_t acl_size(acl_t acl); +extern char *acl_to_text(acl_t acl, ssize_t *len_p); +} + + + + +extern "C" { + + + + + +typedef struct __attribute__((objc_bridge_mutable(NSFileSecurity))) __CFFileSecurity* CFFileSecurityRef; + + + + + + + +extern +CFTypeID CFFileSecurityGetTypeID(void) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFFileSecurityRef CFFileSecurityCreate(CFAllocatorRef allocator) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFFileSecurityRef CFFileSecurityCreateCopy(CFAllocatorRef allocator, CFFileSecurityRef fileSec) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityCopyOwnerUUID(CFFileSecurityRef fileSec, CFUUIDRef *ownerUUID) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetOwnerUUID(CFFileSecurityRef fileSec, CFUUIDRef ownerUUID) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityCopyGroupUUID(CFFileSecurityRef fileSec, CFUUIDRef *groupUUID) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetGroupUUID(CFFileSecurityRef fileSec, CFUUIDRef groupUUID) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityCopyAccessControlList(CFFileSecurityRef fileSec, acl_t *accessControlList) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetAccessControlList(CFFileSecurityRef fileSec, acl_t accessControlList) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityGetOwner(CFFileSecurityRef fileSec, uid_t *owner) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetOwner(CFFileSecurityRef fileSec, uid_t owner) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityGetGroup(CFFileSecurityRef fileSec, gid_t *group) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetGroup(CFFileSecurityRef fileSec, gid_t group) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityGetMode(CFFileSecurityRef fileSec, mode_t *mode) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecuritySetMode(CFFileSecurityRef fileSec, mode_t mode) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef CFOptionFlags CFFileSecurityClearOptions; enum { + kCFFileSecurityClearOwner = 1UL << 0, + kCFFileSecurityClearGroup = 1UL << 1, + kCFFileSecurityClearMode = 1UL << 2, + kCFFileSecurityClearOwnerUUID = 1UL << 3, + kCFFileSecurityClearGroupUUID = 1UL << 4, + kCFFileSecurityClearAccessControlList = 1UL << 5 +} __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +Boolean CFFileSecurityClearProperties(CFFileSecurityRef fileSec, CFFileSecurityClearOptions clearPropertyMask) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +} +extern "C" { +extern +CFStringRef CFStringTokenizerCopyBestStringLanguage(CFStringRef string, CFRange range) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFStringTokenizer * CFStringTokenizerRef; + + + + +enum { + + + + + + + kCFStringTokenizerUnitWord = 0, + kCFStringTokenizerUnitSentence = 1, + kCFStringTokenizerUnitParagraph = 2, + kCFStringTokenizerUnitLineBreak = 3, + + + + + kCFStringTokenizerUnitWordBoundary = 4, + kCFStringTokenizerAttributeLatinTranscription = 1UL << 16, + + + kCFStringTokenizerAttributeLanguage = 1UL << 17, +}; + + + + + + +typedef CFOptionFlags CFStringTokenizerTokenType; enum { + + kCFStringTokenizerTokenNone = 0, + + + kCFStringTokenizerTokenNormal = 1UL << 0, + + + + + + kCFStringTokenizerTokenHasSubTokensMask = 1UL << 1, + + + + + + + kCFStringTokenizerTokenHasDerivedSubTokensMask = 1UL << 2, + + kCFStringTokenizerTokenHasHasNumbersMask = 1UL << 3, + kCFStringTokenizerTokenHasNonLettersMask = 1UL << 4, + kCFStringTokenizerTokenIsCJWordMask = 1UL << 5 +}; + + + + + + +extern +CFTypeID CFStringTokenizerGetTypeID(void) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringTokenizerRef CFStringTokenizerCreate(CFAllocatorRef alloc, CFStringRef string, CFRange range, CFOptionFlags options, CFLocaleRef locale) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +void CFStringTokenizerSetString(CFStringTokenizerRef tokenizer, CFStringRef string, CFRange range) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringTokenizerTokenType CFStringTokenizerGoToTokenAtIndex(CFStringTokenizerRef tokenizer, CFIndex index) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFStringTokenizerTokenType CFStringTokenizerAdvanceToNextToken(CFStringTokenizerRef tokenizer) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFRange CFStringTokenizerGetCurrentTokenRange(CFStringTokenizerRef tokenizer) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFTypeRef CFStringTokenizerCopyCurrentTokenAttribute(CFStringTokenizerRef tokenizer, CFOptionFlags attribute) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern +CFIndex CFStringTokenizerGetCurrentSubTokens(CFStringTokenizerRef tokenizer, CFRange *ranges, CFIndex maxRangeLength, CFMutableArrayRef derivedSubTokens) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} +extern "C" { + +typedef int CFFileDescriptorNativeDescriptor; + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFFileDescriptor * CFFileDescriptorRef; + + +enum { + kCFFileDescriptorReadCallBack = 1UL << 0, + kCFFileDescriptorWriteCallBack = 1UL << 1 +}; + +typedef void (*CFFileDescriptorCallBack)(CFFileDescriptorRef f, CFOptionFlags callBackTypes, void *info); + +typedef struct { + CFIndex version; + void * info; + void * (*retain)(void *info); + void (*release)(void *info); + CFStringRef (*copyDescription)(void *info); +} CFFileDescriptorContext; + +extern CFTypeID CFFileDescriptorGetTypeID(void) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern CFFileDescriptorRef CFFileDescriptorCreate(CFAllocatorRef allocator, CFFileDescriptorNativeDescriptor fd, Boolean closeOnInvalidate, CFFileDescriptorCallBack callout, const CFFileDescriptorContext *context) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern CFFileDescriptorNativeDescriptor CFFileDescriptorGetNativeDescriptor(CFFileDescriptorRef f) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern void CFFileDescriptorGetContext(CFFileDescriptorRef f, CFFileDescriptorContext *context) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern void CFFileDescriptorEnableCallBacks(CFFileDescriptorRef f, CFOptionFlags callBackTypes) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern void CFFileDescriptorDisableCallBacks(CFFileDescriptorRef f, CFOptionFlags callBackTypes) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern void CFFileDescriptorInvalidate(CFFileDescriptorRef f) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern Boolean CFFileDescriptorIsValid(CFFileDescriptorRef f) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern CFRunLoopSourceRef CFFileDescriptorCreateRunLoopSource(CFAllocatorRef allocator, CFFileDescriptorRef f, CFIndex order) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +} + + + +extern "C" { + +typedef struct __attribute__((objc_bridge_mutable(id))) __CFUserNotification * CFUserNotificationRef; +typedef void (*CFUserNotificationCallBack)(CFUserNotificationRef userNotification, CFOptionFlags responseFlags); + +extern +CFTypeID CFUserNotificationGetTypeID(void) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +CFUserNotificationRef CFUserNotificationCreate(CFAllocatorRef allocator, CFTimeInterval timeout, CFOptionFlags flags, SInt32 *error, CFDictionaryRef dictionary) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +SInt32 CFUserNotificationReceiveResponse(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags *responseFlags) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +CFStringRef CFUserNotificationGetResponseValue(CFUserNotificationRef userNotification, CFStringRef key, CFIndex idx) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +CFDictionaryRef CFUserNotificationGetResponseDictionary(CFUserNotificationRef userNotification) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +SInt32 CFUserNotificationUpdate(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags flags, CFDictionaryRef dictionary) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +SInt32 CFUserNotificationCancel(CFUserNotificationRef userNotification) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +CFRunLoopSourceRef CFUserNotificationCreateRunLoopSource(CFAllocatorRef allocator, CFUserNotificationRef userNotification, CFUserNotificationCallBack callout, CFIndex order) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +extern +SInt32 CFUserNotificationDisplayNotice(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +SInt32 CFUserNotificationDisplayAlert(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle, CFStringRef alternateButtonTitle, CFStringRef otherButtonTitle, CFOptionFlags *responseFlags) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +enum { + kCFUserNotificationStopAlertLevel __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 0, + kCFUserNotificationNoteAlertLevel __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 1, + kCFUserNotificationCautionAlertLevel __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 2, + kCFUserNotificationPlainAlertLevel __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 3 +}; + +enum { + kCFUserNotificationDefaultResponse __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 0, + kCFUserNotificationAlternateResponse __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 1, + kCFUserNotificationOtherResponse __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 2, + kCFUserNotificationCancelResponse __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 3 +}; + +enum { + kCFUserNotificationNoDefaultButtonFlag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = (1UL << 5), + kCFUserNotificationUseRadioButtonsFlag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = (1UL << 6) +}; + +static __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) {return ((CFOptionFlags)(1UL << (8 + i)));} +static __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) {return ((CFOptionFlags)(1UL << (16 + i)));} +static __inline__ __attribute__((always_inline)) CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) {return ((CFOptionFlags)(n << 24));} + + + + +extern +const CFStringRef kCFUserNotificationIconURLKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationSoundURLKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationLocalizationURLKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationAlertHeaderKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationAlertMessageKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationDefaultButtonTitleKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationAlternateButtonTitleKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationOtherButtonTitleKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationProgressIndicatorValueKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationPopUpTitlesKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationTextFieldTitlesKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationCheckBoxTitlesKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationTextFieldValuesKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationPopUpSelectionKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationAlertTopMostKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern +const CFStringRef kCFUserNotificationKeyboardTypesKey __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +} + +#pragma clang assume_nonnull begin + +extern "C" double NSFoundationVersionNumber; +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_Protocol +#define _REWRITER_typedef_Protocol +typedef struct objc_object Protocol; +typedef struct {} _objc_exc_Protocol; +#endif + + +typedef NSString * NSExceptionName __attribute__((swift_wrapper(struct))); +typedef NSString * NSRunLoopMode __attribute__((swift_wrapper(struct))); + +extern "C" NSString *NSStringFromSelector(SEL aSelector); +extern "C" SEL NSSelectorFromString(NSString *aSelectorName); + +extern "C" NSString *NSStringFromClass(Class aClass); +extern "C" Class _Nullable NSClassFromString(NSString *aClassName); + +extern "C" NSString *NSStringFromProtocol(Protocol *proto) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" Protocol * _Nullable NSProtocolFromString(NSString *namestr) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" const char *NSGetSizeAndAlignment(const char *typePtr, NSUInteger * _Nullable sizep, NSUInteger * _Nullable alignp); + +extern "C" void NSLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2))) __attribute__((not_tail_called)); +extern "C" void NSLogv(NSString *format, va_list args) __attribute__((format(__NSString__, 1, 0))) __attribute__((not_tail_called)); +typedef NSInteger NSComparisonResult; enum { + NSOrderedAscending = -1L, + NSOrderedSame, + NSOrderedDescending +}; + + +typedef NSComparisonResult (*NSComparator)(id obj1, id obj2); + + +typedef NSUInteger NSEnumerationOptions; enum { + NSEnumerationConcurrent = (1UL << 0), + NSEnumerationReverse = (1UL << 1), +}; + +typedef NSUInteger NSSortOptions; enum { + NSSortConcurrent = (1UL << 0), + NSSortStable = (1UL << 4), +}; + +typedef NSInteger NSQualityOfService; enum { + NSQualityOfServiceUserInteractive = 0x21, + NSQualityOfServiceUserInitiated = 0x19, + NSQualityOfServiceUtility = 0x11, + NSQualityOfServiceBackground = 0x09, + NSQualityOfServiceDefault = -1 +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +static const NSInteger NSNotFound = 9223372036854775807L; +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +typedef struct _NSZone NSZone; + +extern "C" NSZone *NSDefaultMallocZone(void) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" NSZone *NSCreateZone(NSUInteger startSize, NSUInteger granularity, BOOL canFree) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" void NSRecycleZone(NSZone *zone)__attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); + +extern "C" void NSSetZoneName(NSZone * _Nullable zone, NSString *name)__attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" NSString *NSZoneName(NSZone * _Nullable zone) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" NSZone * _Nullable NSZoneFromPointer(void *ptr) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); + +extern "C" void *NSZoneMalloc(NSZone * _Nullable zone, NSUInteger size) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" void *NSZoneCalloc(NSZone * _Nullable zone, NSUInteger numElems, NSUInteger byteSize) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" void *NSZoneRealloc(NSZone * _Nullable zone, void * _Nullable ptr, NSUInteger size) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +extern "C" void NSZoneFree(NSZone * _Nullable zone, void *ptr) __attribute__((availability(swift, unavailable, message="Zone-based memory management is unavailable"))); +static __inline__ __attribute__((always_inline)) __attribute__((ns_returns_retained)) id _Nullable NSMakeCollectable(CFTypeRef _Nullable __attribute__((cf_consumed)) cf) __attribute__((availability(swift, unavailable, message="Garbage Collection is not supported"))); +static __inline__ __attribute__((always_inline)) __attribute__((ns_returns_retained)) id _Nullable NSMakeCollectable(CFTypeRef _Nullable __attribute__((cf_consumed)) cf) { + + + + return (id)cf; + +} + +extern "C" NSUInteger NSPageSize(void); +extern "C" NSUInteger NSLogPageSize(void); +extern "C" NSUInteger NSRoundUpToMultipleOfPageSize(NSUInteger bytes); +extern "C" NSUInteger NSRoundDownToMultipleOfPageSize(NSUInteger bytes); +extern "C" void *NSAllocateMemoryPages(NSUInteger bytes); +extern "C" void NSDeallocateMemoryPages(void *ptr, NSUInteger bytes); +extern "C" void NSCopyMemoryPages(const void *source, void *dest, NSUInteger bytes); +extern "C" NSUInteger NSRealMemoryAvailable(void) __attribute__((availability(macos,introduced=10.0,deprecated=10.8,message="Use NSProcessInfo instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message="Use NSProcessInfo instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSProcessInfo instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSProcessInfo instead"))); +#pragma clang assume_nonnull end + +// @class NSInvocation; +#ifndef _REWRITER_typedef_NSInvocation +#define _REWRITER_typedef_NSInvocation +typedef struct objc_object NSInvocation; +typedef struct {} _objc_exc_NSInvocation; +#endif + +#ifndef _REWRITER_typedef_NSMethodSignature +#define _REWRITER_typedef_NSMethodSignature +typedef struct objc_object NSMethodSignature; +typedef struct {} _objc_exc_NSMethodSignature; +#endif + +#ifndef _REWRITER_typedef_NSCoder +#define _REWRITER_typedef_NSCoder +typedef struct objc_object NSCoder; +typedef struct {} _objc_exc_NSCoder; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSEnumerator +#define _REWRITER_typedef_NSEnumerator +typedef struct objc_object NSEnumerator; +typedef struct {} _objc_exc_NSEnumerator; +#endif + +// @class Protocol; +#ifndef _REWRITER_typedef_Protocol +#define _REWRITER_typedef_Protocol +typedef struct objc_object Protocol; +typedef struct {} _objc_exc_Protocol; +#endif + + +#pragma clang assume_nonnull begin + + + +// @protocol NSCopying + +// - (id)copyWithZone:(nullable NSZone *)zone; + +/* @end */ + + +// @protocol NSMutableCopying + +// - (id)mutableCopyWithZone:(nullable NSZone *)zone; + +/* @end */ + + +// @protocol NSCoding + +// - (void)encodeWithCoder:(NSCoder *)coder; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder; + +/* @end */ + + + + + +// @protocol NSSecureCoding +/* @required */ + + +@property (class, readonly) BOOL supportsSecureCoding; +/* @end */ + + + + +// @interface NSObject (NSCoderMethods) + +// + (NSInteger)version; +// + (void)setVersion:(NSInteger)aVersion; +// @property (readonly) Class classForCoder; +// - (nullable id)replacementObjectForCoder:(NSCoder *)coder; +// - (nullable id)awakeAfterUsingCoder:(NSCoder *)coder __attribute__((ns_consumes_self)) __attribute__((ns_returns_retained)); + +/* @end */ + +// @protocol NSDiscardableContent +/* @required */ +// - (BOOL)beginContentAccess; +// - (void)endContentAccess; +// - (void)discardContentIfPossible; +// - (BOOL)isContentDiscarded; +/* @end */ + + +// @interface NSObject (NSDiscardableContentProxy) +// @property (readonly, retain) id autoContentAccessingProxy __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + + + + +extern "C" id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone * _Nullable zone) ; + +extern "C" void NSDeallocateObject(id object) ; + +extern "C" id NSCopyObject(id object, NSUInteger extraBytes, NSZone * _Nullable zone) __attribute__((availability(macos,introduced=10.0,deprecated=10.8,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + +extern "C" BOOL NSShouldRetainWithZone(id anObject, NSZone * _Nullable requestedZone) ; + +extern "C" void NSIncrementExtraRefCount(id object) ; + +extern "C" BOOL NSDecrementExtraRefCountWasZero(id object) ; + +extern "C" NSUInteger NSExtraRefCount(id object) ; +static __inline__ __attribute__((always_inline)) __attribute__((cf_returns_retained)) CFTypeRef _Nullable CFBridgingRetain(id _Nullable X) { + return X ? CFRetain((CFTypeRef)X) : __null; +} + + +static __inline__ __attribute__((always_inline)) id _Nullable CFBridgingRelease(CFTypeRef __attribute__((cf_consumed)) _Nullable X) __attribute__((ns_returns_retained)) { + return ((id (*)(id, SEL))(void *)objc_msgSend)((id)CFMakeCollectable(X), sel_registerName("autorelease")); +} +#pragma clang assume_nonnull end + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + +#pragma clang assume_nonnull begin +typedef struct { + unsigned long state; + id __attribute__((objc_ownership(none))) _Nullable * _Nullable itemsPtr; + unsigned long * _Nullable mutationsPtr; + unsigned long extra[5]; +} NSFastEnumerationState; + +// @protocol NSFastEnumeration + +// - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __attribute__((objc_ownership(none))) _Nullable [_Nonnull])buffer count:(NSUInteger)len; + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSEnumerator +#define _REWRITER_typedef_NSEnumerator +typedef struct objc_object NSEnumerator; +typedef struct {} _objc_exc_NSEnumerator; +#endif + +struct NSEnumerator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (nullable ObjectType)nextObject; + +/* @end */ + + +// @interface NSEnumerator (NSExtendedEnumerator) + +// @property (readonly, copy) NSArray *allObjects; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSValue +#define _REWRITER_typedef_NSValue +typedef struct objc_object NSValue; +typedef struct {} _objc_exc_NSValue; +#endif + +struct NSValue_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (void)getValue:(void *)value size:(NSUInteger)size __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property (readonly) const char *objCType __attribute__((objc_returns_inner_pointer)); + +// - (instancetype)initWithBytes:(const void *)value objCType:(const char *)type __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSValue (NSValueCreation) + +// + (NSValue *)valueWithBytes:(const void *)value objCType:(const char *)type; +// + (NSValue *)value:(const void *)value withObjCType:(const char *)type; + +/* @end */ + + +// @interface NSValue (NSValueExtensionMethods) + +// + (NSValue *)valueWithNonretainedObject:(nullable id)anObject; +// @property (nullable, readonly) id nonretainedObjectValue; + +// + (NSValue *)valueWithPointer:(nullable const void *)pointer; +// @property (nullable, readonly) void *pointerValue; + +// - (BOOL)isEqualToValue:(NSValue *)value; + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +struct NSNumber_IMPL { + struct NSValue_IMPL NSValue_IVARS; +}; + + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithChar:(char)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedChar:(unsigned char)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithShort:(short)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedShort:(unsigned short)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithInt:(int)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedInt:(unsigned int)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithLong:(long)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedLong:(unsigned long)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithLongLong:(long long)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedLongLong:(unsigned long long)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithFloat:(float)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithDouble:(double)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithBool:(BOOL)value __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithInteger:(NSInteger)value __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); +// - (NSNumber *)initWithUnsignedInteger:(NSUInteger)value __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + +// @property (readonly) char charValue; +// @property (readonly) unsigned char unsignedCharValue; +// @property (readonly) short shortValue; +// @property (readonly) unsigned short unsignedShortValue; +// @property (readonly) int intValue; +// @property (readonly) unsigned int unsignedIntValue; +// @property (readonly) long longValue; +// @property (readonly) unsigned long unsignedLongValue; +// @property (readonly) long long longLongValue; +// @property (readonly) unsigned long long unsignedLongLongValue; +// @property (readonly) float floatValue; +// @property (readonly) double doubleValue; +// @property (readonly) BOOL boolValue; +// @property (readonly) NSInteger integerValue __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSUInteger unsignedIntegerValue __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSString *stringValue; + +// - (NSComparisonResult)compare:(NSNumber *)otherNumber; + +// - (BOOL)isEqualToNumber:(NSNumber *)number; + +// - (NSString *)descriptionWithLocale:(nullable id)locale; + +/* @end */ + + +// @interface NSNumber (NSNumberCreation) + +// + (NSNumber *)numberWithChar:(char)value; +// + (NSNumber *)numberWithUnsignedChar:(unsigned char)value; +// + (NSNumber *)numberWithShort:(short)value; +// + (NSNumber *)numberWithUnsignedShort:(unsigned short)value; +// + (NSNumber *)numberWithInt:(int)value; +// + (NSNumber *)numberWithUnsignedInt:(unsigned int)value; +// + (NSNumber *)numberWithLong:(long)value; +// + (NSNumber *)numberWithUnsignedLong:(unsigned long)value; +// + (NSNumber *)numberWithLongLong:(long long)value; +// + (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value; +// + (NSNumber *)numberWithFloat:(float)value; +// + (NSNumber *)numberWithDouble:(double)value; +// + (NSNumber *)numberWithBool:(BOOL)value; +// + (NSNumber *)numberWithInteger:(NSInteger)value __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSValue (NSDeprecated) + + +// - (void)getValue:(void *)value __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="getValue:size:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="getValue:size:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="getValue:size:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="getValue:size:"))); +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +typedef struct _NSRange { + NSUInteger location; + NSUInteger length; +} NSRange; + +typedef NSRange *NSRangePointer; + +static __inline__ __attribute__((always_inline)) NSRange NSMakeRange(NSUInteger loc, NSUInteger len) { + NSRange r; + r.location = loc; + r.length = len; + return r; +} + +static __inline__ __attribute__((always_inline)) NSUInteger NSMaxRange(NSRange range) { + return (range.location + range.length); +} + +static __inline__ __attribute__((always_inline)) BOOL NSLocationInRange(NSUInteger loc, NSRange range) { + return (!(loc < range.location) && (loc - range.location) < range.length) ? ((bool)1) : ((bool)0); +} + +static __inline__ __attribute__((always_inline)) BOOL NSEqualRanges(NSRange range1, NSRange range2) { + return (range1.location == range2.location && range1.length == range2.length); +} + +extern "C" NSRange NSUnionRange(NSRange range1, NSRange range2); +extern "C" NSRange NSIntersectionRange(NSRange range1, NSRange range2); +extern "C" NSString *NSStringFromRange(NSRange range); +extern "C" NSRange NSRangeFromString(NSString *aString); + +// @interface NSValue (NSValueRangeExtensions) + +// + (NSValue *)valueWithRange:(NSRange)range; +// @property (readonly) NSRange rangeValue; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSCollectionChangeType; enum { + NSCollectionChangeInsert, + NSCollectionChangeRemove +} __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSOrderedCollectionChange +#define _REWRITER_typedef_NSOrderedCollectionChange +typedef struct objc_object NSOrderedCollectionChange; +typedef struct {} _objc_exc_NSOrderedCollectionChange; +#endif + +struct NSOrderedCollectionChange_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +#if 0 ++ (NSOrderedCollectionChange *)changeWithObject:(nullable ObjectType)anObject + type:(NSCollectionChangeType)type + index:(NSUInteger)index; +#endif + + +#if 0 ++ (NSOrderedCollectionChange *)changeWithObject:(nullable ObjectType)anObject + type:(NSCollectionChangeType)type + index:(NSUInteger)index + associatedIndex:(NSUInteger)associatedIndex; +#endif + + + +// @property (readonly, strong, nullable) ObjectType object; + + +// @property (readonly) NSCollectionChangeType changeType; + + + +// @property (readonly) NSUInteger index; + + + + + +// @property (readonly) NSUInteger associatedIndex; + +// - (id)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +#if 0 +- (instancetype)initWithObject:(nullable ObjectType)anObject + type:(NSCollectionChangeType)type + index:(NSUInteger)index; +#endif + + +#if 0 +- (instancetype)initWithObject:(nullable ObjectType)anObject + type:(NSCollectionChangeType)type + index:(NSUInteger)index + associatedIndex:(NSUInteger)associatedIndex __attribute__((objc_designated_initializer)); +#endif + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSIndexSet +#define _REWRITER_typedef_NSIndexSet +typedef struct objc_object NSIndexSet; +typedef struct {} _objc_exc_NSIndexSet; +#endif + +struct NSIndexSet_IMPL { + struct NSObject_IMPL NSObject_IVARS; + + struct { + NSUInteger _isEmpty : 1; + NSUInteger _hasSingleRange : 1; + NSUInteger _cacheValid : 1; + NSUInteger _reservedArrayBinderController : 29; + } _indexSetFlags; + + union { + + struct { + NSRange _range; + } _singleRange; + + struct { + void * _Nonnull _data; + void * _Nonnull _reserved; + } _multipleRanges; + } _internal; +}; + + +// + (instancetype)indexSet; +// + (instancetype)indexSetWithIndex:(NSUInteger)value; +// + (instancetype)indexSetWithIndexesInRange:(NSRange)range; + +// - (instancetype)initWithIndexesInRange:(NSRange)range __attribute__((objc_designated_initializer)); +// - (instancetype)initWithIndexSet:(NSIndexSet *)indexSet __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithIndex:(NSUInteger)value; + +// - (BOOL)isEqualToIndexSet:(NSIndexSet *)indexSet; + +// @property (readonly) NSUInteger count; + + + +// @property (readonly) NSUInteger firstIndex; +// @property (readonly) NSUInteger lastIndex; +// - (NSUInteger)indexGreaterThanIndex:(NSUInteger)value; +// - (NSUInteger)indexLessThanIndex:(NSUInteger)value; +// - (NSUInteger)indexGreaterThanOrEqualToIndex:(NSUInteger)value; +// - (NSUInteger)indexLessThanOrEqualToIndex:(NSUInteger)value; + + + +// - (NSUInteger)getIndexes:(NSUInteger *)indexBuffer maxCount:(NSUInteger)bufferSize inIndexRange:(nullable NSRangePointer)range; + +// - (NSUInteger)countOfIndexesInRange:(NSRange)range __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (BOOL)containsIndex:(NSUInteger)value; +// - (BOOL)containsIndexesInRange:(NSRange)range; +// - (BOOL)containsIndexes:(NSIndexSet *)indexSet; + +// - (BOOL)intersectsIndexesInRange:(NSRange)range; + +// - (void)enumerateIndexesUsingBlock:(void (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateIndexesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateIndexesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSUInteger)indexPassingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSUInteger)indexWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSUInteger)indexInRange:(NSRange)range options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSIndexSet *)indexesPassingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSIndexSet *)indexesWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSIndexSet *)indexesInRange:(NSRange)range options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)enumerateRangesUsingBlock:(void (__attribute__((noescape)) ^)(NSRange range, BOOL *stop))block __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateRangesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSRange range, BOOL *stop))block __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateRangesInRange:(NSRange)range options:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSRange range, BOOL *stop))block __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSMutableIndexSet +#define _REWRITER_typedef_NSMutableIndexSet +typedef struct objc_object NSMutableIndexSet; +typedef struct {} _objc_exc_NSMutableIndexSet; +#endif + +struct NSMutableIndexSet_IMPL { + struct NSIndexSet_IMPL NSIndexSet_IVARS; + void *_reserved; +}; + + +// - (void)addIndexes:(NSIndexSet *)indexSet; +// - (void)removeIndexes:(NSIndexSet *)indexSet; +// - (void)removeAllIndexes; +// - (void)addIndex:(NSUInteger)value; +// - (void)removeIndex:(NSUInteger)value; +// - (void)addIndexesInRange:(NSRange)range; +// - (void)removeIndexesInRange:(NSRange)range; + + + +// - (void)shiftIndexesStartingAtIndex:(NSUInteger)index by:(NSInteger)delta; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + +typedef NSUInteger NSOrderedCollectionDifferenceCalculationOptions; enum { + + NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = (1 << 0UL), + + NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = (1 << 1UL), + + + NSOrderedCollectionDifferenceCalculationInferMoves = (1 << 2UL) +} __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSOrderedCollectionDifference +#define _REWRITER_typedef_NSOrderedCollectionDifference +typedef struct objc_object NSOrderedCollectionDifference; +typedef struct {} _objc_exc_NSOrderedCollectionDifference; +#endif + +struct NSOrderedCollectionDifference_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (instancetype)initWithChanges:(NSArray *> *)changes; + +#if 0 +- (instancetype)initWithInsertIndexes:(NSIndexSet *)inserts + insertedObjects:(nullable NSArray *)insertedObjects + removeIndexes:(NSIndexSet *)removes + removedObjects:(nullable NSArray *)removedObjects + additionalChanges:(NSArray *> *)changes __attribute__((objc_designated_initializer)); +#endif + + +#if 0 +- (instancetype)initWithInsertIndexes:(NSIndexSet *)inserts + insertedObjects:(nullable NSArray *)insertedObjects + removeIndexes:(NSIndexSet *)removes + removedObjects:(nullable NSArray *)removedObjects; +#endif + + +// @property (strong, readonly) NSArray *> *insertions __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (strong, readonly) NSArray *> *removals __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @property (assign, readonly) BOOL hasChanges; + + +// - (NSOrderedCollectionDifference *)differenceByTransformingChangesWithBlock:(NSOrderedCollectionChange *(__attribute__((noescape)) ^)(NSOrderedCollectionChange *))block; + + + + + + + +// - (instancetype)inverseDifference __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSIndexSet +#define _REWRITER_typedef_NSIndexSet +typedef struct objc_object NSIndexSet; +typedef struct {} _objc_exc_NSIndexSet; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +struct NSArray_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger count; +// - (ObjectType)objectAtIndex:(NSUInteger)index; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)cnt __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSArray (NSExtendedArray) + +// - (NSArray *)arrayByAddingObject:(ObjectType)anObject; +// - (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray; +// - (NSString *)componentsJoinedByString:(NSString *)separator; +// - (BOOL)containsObject:(ObjectType)anObject; +// @property (readonly, copy) NSString *description; +// - (NSString *)descriptionWithLocale:(nullable id)locale; +// - (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level; +// - (nullable ObjectType)firstObjectCommonWithArray:(NSArray *)otherArray; +// - (void)getObjects:(ObjectType _Nonnull __attribute__((objc_ownership(none))) [_Nonnull])objects range:(NSRange)range __attribute__((availability(swift, unavailable, message="Use 'subarrayWithRange()' instead"))); +// - (NSUInteger)indexOfObject:(ObjectType)anObject; +// - (NSUInteger)indexOfObject:(ObjectType)anObject inRange:(NSRange)range; +// - (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject; +// - (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range; +// - (BOOL)isEqualToArray:(NSArray *)otherArray; +// @property (nullable, nonatomic, readonly) ObjectType firstObject __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, nonatomic, readonly) ObjectType lastObject; +// - (NSEnumerator *)objectEnumerator; +// - (NSEnumerator *)reverseObjectEnumerator; +// @property (readonly, copy) NSData *sortedArrayHint; +// - (NSArray *)sortedArrayUsingFunction:(NSInteger (__attribute__((noescape)) *)(ObjectType, ObjectType, void * _Nullable))comparator context:(nullable void *)context; +// - (NSArray *)sortedArrayUsingFunction:(NSInteger (__attribute__((noescape)) *)(ObjectType, ObjectType, void * _Nullable))comparator context:(nullable void *)context hint:(nullable NSData *)hint; +// - (NSArray *)sortedArrayUsingSelector:(SEL)comparator; +// - (NSArray *)subarrayWithRange:(NSRange)range; + +// - (BOOL)writeToURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (void)makeObjectsPerformSelector:(SEL)aSelector __attribute__((availability(swift, unavailable, message="Use enumerateObjectsUsingBlock: or a for loop instead"))); +// - (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument __attribute__((availability(swift, unavailable, message="Use enumerateObjectsUsingBlock: or a for loop instead"))); + +// - (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; + +// - (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)enumerateObjectsUsingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSUInteger)indexOfObjectPassingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape))^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSArray *)sortedArrayUsingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSBinarySearchingOptions; enum { + NSBinarySearchingFirstEqual = (1UL << 8), + NSBinarySearchingLastEqual = (1UL << 9), + NSBinarySearchingInsertionIndex = (1UL << 10), +}; + +// - (NSUInteger)indexOfObject:(ObjectType)obj inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmp __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSArray (NSArrayCreation) + +// + (instancetype)array; +// + (instancetype)arrayWithObject:(ObjectType)anObject; +// + (instancetype)arrayWithObjects:(const ObjectType _Nonnull [_Nonnull])objects count:(NSUInteger)cnt; +// + (instancetype)arrayWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// + (instancetype)arrayWithArray:(NSArray *)array; + +// - (instancetype)initWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// - (instancetype)initWithArray:(NSArray *)array; +// - (instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag; + + +// - (nullable NSArray *)initWithContentsOfURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +// + (nullable NSArray *)arrayWithContentsOfURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(swift, unavailable, message="Use initializer instead"))); + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +__attribute__((availability(swift, unavailable, message="NSArray diffing methods are not available in Swift, use Collection.difference(from:) instead"))) +// @interface NSArray (NSArrayDiffing) + +// - (NSOrderedCollectionDifference *)differenceFromArray:(NSArray *)other withOptions:(NSOrderedCollectionDifferenceCalculationOptions)options usingEquivalenceTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj1, ObjectType obj2))block; + +// - (NSOrderedCollectionDifference *)differenceFromArray:(NSArray *)other withOptions:(NSOrderedCollectionDifferenceCalculationOptions)options; + + +// - (NSOrderedCollectionDifference *)differenceFromArray:(NSArray *)other; + +// - (nullable NSArray *)arrayByApplyingDifference:(NSOrderedCollectionDifference *)difference; + +/* @end */ + + +// @interface NSArray (NSDeprecated) + + + + +// - (void)getObjects:(ObjectType _Nonnull __attribute__((objc_ownership(none))) [_Nonnull])objects __attribute__((availability(swift, unavailable, message="Use 'as [AnyObject]' instead"))) __attribute__((availability(macos,introduced=10.0,deprecated=10.13,message="Use -getObjects:range: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=11.0,message="Use -getObjects:range: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=4.0,message="Use -getObjects:range: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=11.0,message="Use -getObjects:range: instead"))); + + +// + (nullable NSArray *)arrayWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))); +// + (nullable NSArray *)arrayWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="arrayWithContentsOfURL:error:"))); +// - (nullable NSArray *)initWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))); +// - (nullable NSArray *)initWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))); +// - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="writeToURL:error:"))); +// - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="writeToURL:error:"))); + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSMutableArray +#define _REWRITER_typedef_NSMutableArray +typedef struct objc_object NSMutableArray; +typedef struct {} _objc_exc_NSMutableArray; +#endif + +struct NSMutableArray_IMPL { + struct NSArray_IMPL NSArray_IVARS; +}; + + +// - (void)addObject:(ObjectType)anObject; +// - (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index; +// - (void)removeLastObject; +// - (void)removeObjectAtIndex:(NSUInteger)index; +// - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(ObjectType)anObject; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCapacity:(NSUInteger)numItems __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSMutableArray (NSExtendedMutableArray) + +// - (void)addObjectsFromArray:(NSArray *)otherArray; +// - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2; +// - (void)removeAllObjects; +// - (void)removeObject:(ObjectType)anObject inRange:(NSRange)range; +// - (void)removeObject:(ObjectType)anObject; +// - (void)removeObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)range; +// - (void)removeObjectIdenticalTo:(ObjectType)anObject; +// - (void)removeObjectsFromIndices:(NSUInteger *)indices numIndices:(NSUInteger)cnt __attribute__((availability(macos,introduced=10.0,deprecated=10.6,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=4.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); +// - (void)removeObjectsInArray:(NSArray *)otherArray; +// - (void)removeObjectsInRange:(NSRange)range; +// - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray range:(NSRange)otherRange; +// - (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray; +// - (void)setArray:(NSArray *)otherArray; +// - (void)sortUsingFunction:(NSInteger (__attribute__((noescape)) *)(ObjectType, ObjectType, void * _Nullable))compare context:(nullable void *)context; +// - (void)sortUsingSelector:(SEL)comparator; + +// - (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes; +// - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes; +// - (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects; + +// - (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idx __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)sortUsingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSMutableArray (NSMutableArrayCreation) + +// + (instancetype)arrayWithCapacity:(NSUInteger)numItems; + +// + (nullable NSMutableArray *)arrayWithContentsOfFile:(NSString *)path; +// + (nullable NSMutableArray *)arrayWithContentsOfURL:(NSURL *)url; +// - (nullable NSMutableArray *)initWithContentsOfFile:(NSString *)path; +// - (nullable NSMutableArray *)initWithContentsOfURL:(NSURL *)url; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +__attribute__((availability(swift, unavailable, message="NSMutableArray diffing methods are not available in Swift"))) +// @interface NSMutableArray (NSMutableArrayDiffing) + +// - (void)applyDifference:(NSOrderedCollectionDifference *)difference; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + + + +#ifndef _REWRITER_typedef_NSAutoreleasePool +#define _REWRITER_typedef_NSAutoreleasePool +typedef struct objc_object NSAutoreleasePool; +typedef struct {} _objc_exc_NSAutoreleasePool; +#endif + +struct NSAutoreleasePool_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_token; + void *_reserved3; + void *_reserved2; + void *_reserved; +}; + + +// + (void)addObject:(id)anObject; + +// - (void)addObject:(id)anObject; + +// - (void)drain; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + +typedef unsigned short unichar; + + + + + +#pragma clang assume_nonnull begin + +// @class NSItemProvider; +#ifndef _REWRITER_typedef_NSItemProvider +#define _REWRITER_typedef_NSItemProvider +typedef struct objc_object NSItemProvider; +typedef struct {} _objc_exc_NSItemProvider; +#endif + +#ifndef _REWRITER_typedef_NSProgress +#define _REWRITER_typedef_NSProgress +typedef struct objc_object NSProgress; +typedef struct {} _objc_exc_NSProgress; +#endif + + + +typedef NSInteger NSItemProviderRepresentationVisibility; enum { + NSItemProviderRepresentationVisibilityAll = 0, + NSItemProviderRepresentationVisibilityTeam + __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(macos,unavailable))) = 1, + NSItemProviderRepresentationVisibilityGroup + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 2 , + NSItemProviderRepresentationVisibilityOwnProcess = 3, +} __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +typedef NSInteger NSItemProviderFileOptions; enum { + NSItemProviderFileOptionOpenInPlace = 1, +} __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +__attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) +// @protocol NSItemProviderWriting + +@property (class, nonatomic, readonly, copy) NSArray *writableTypeIdentifiersForItemProvider; + +/* @optional */ + + +// @property (nonatomic, readonly, copy) NSArray *writableTypeIdentifiersForItemProvider; + +// + (NSItemProviderRepresentationVisibility)itemProviderVisibilityForRepresentationWithTypeIdentifier:(NSString *)typeIdentifier; + + +// - (NSItemProviderRepresentationVisibility)itemProviderVisibilityForRepresentationWithTypeIdentifier:(NSString *)typeIdentifier; + +/* @required */ + +#if 0 +- (nullable NSProgress *)loadDataWithTypeIdentifier:(NSString *)typeIdentifier + forItemProviderCompletionHandler:(void (^)(NSData * _Nullable data, NSError * _Nullable error))completionHandler; +#endif + + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) +// @protocol NSItemProviderReading + +@property (class, nonatomic, readonly, copy) NSArray *readableTypeIdentifiersForItemProvider; + +#if 0 ++ (nullable instancetype)objectWithItemProviderData:(NSData *)data + typeIdentifier:(NSString *)typeIdentifier + error:(NSError **)outError; +#endif + + +/* @end */ + + + +typedef void (*NSItemProviderCompletionHandler)(_Nullable id /**/ item, NSError * _Null_unspecified error); +typedef void (*NSItemProviderLoadHandler)(_Null_unspecified NSItemProviderCompletionHandler completionHandler, _Null_unspecified Class expectedValueClass, NSDictionary * _Null_unspecified options); + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSItemProvider +#define _REWRITER_typedef_NSItemProvider +typedef struct objc_object NSItemProvider; +typedef struct {} _objc_exc_NSItemProvider; +#endif + +struct NSItemProvider_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + + + +// - (instancetype)init __attribute__((objc_designated_initializer)); + + + + +#if 0 +- (void)registerDataRepresentationForTypeIdentifier:(NSString *)typeIdentifier + visibility:(NSItemProviderRepresentationVisibility)visibility + loadHandler:(NSProgress * _Nullable (^)(void (^completionHandler)(NSData * _Nullable data, NSError * _Nullable error)))loadHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + + + +#if 0 +- (void)registerFileRepresentationForTypeIdentifier:(NSString *)typeIdentifier + fileOptions:(NSItemProviderFileOptions)fileOptions + visibility:(NSItemProviderRepresentationVisibility)visibility + loadHandler:(NSProgress * _Nullable (^)(void (^completionHandler)(NSURL * _Nullable url, BOOL coordinated, NSError * _Nullable error)))loadHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + + + + + +// @property (copy, readonly, atomic) NSArray *registeredTypeIdentifiers; + +// - (NSArray *)registeredTypeIdentifiersWithFileOptions:(NSItemProviderFileOptions)fileOptions __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (BOOL)hasItemConformingToTypeIdentifier:(NSString *)typeIdentifier; + +#if 0 +- (BOOL)hasRepresentationConformingToTypeIdentifier:(NSString *)typeIdentifier + fileOptions:(NSItemProviderFileOptions)fileOptions __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + +#if 0 +- (NSProgress *)loadDataRepresentationForTypeIdentifier:(NSString *)typeIdentifier + completionHandler:(void(^)(NSData * _Nullable data, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + +#if 0 +- (NSProgress *)loadFileRepresentationForTypeIdentifier:(NSString *)typeIdentifier + completionHandler:(void(^)(NSURL * _Nullable url, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + + +#if 0 +- (NSProgress *)loadInPlaceFileRepresentationForTypeIdentifier:(NSString *)typeIdentifier + completionHandler:(void (^)(NSURL * _Nullable url, BOOL isInPlace, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + + + + + +// @property (atomic, copy, nullable) NSString *suggestedName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + +// - (instancetype)initWithObject:(id)object __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (void)registerObject:(id)object visibility:(NSItemProviderRepresentationVisibility)visibility __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +#if 0 +- (void)registerObjectOfClass:(Class)aClass + visibility:(NSItemProviderRepresentationVisibility)visibility + loadHandler:(NSProgress * _Nullable (^)(void (^completionHandler)(id _Nullable object, NSError * _Nullable error)))loadHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + + +// - (BOOL)canLoadObjectOfClass:(Class)aClass __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +#if 0 +- (NSProgress *)loadObjectOfClass:(Class)aClass + completionHandler:(void (^)(id _Nullable object, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + +// - (instancetype)initWithItem:(nullable id)item typeIdentifier:(nullable NSString *)typeIdentifier __attribute__((objc_designated_initializer)); + + +// - (nullable instancetype)initWithContentsOfURL:(null_unspecified NSURL *)fileURL; + + +// - (void)registerItemForTypeIdentifier:(NSString *)typeIdentifier loadHandler:(NSItemProviderLoadHandler)loadHandler; + + + + + + + +// - (void)loadItemForTypeIdentifier:(NSString *)typeIdentifier options:(nullable NSDictionary *)options completionHandler:(nullable NSItemProviderCompletionHandler)completionHandler; + + +/* @end */ + + + + +extern "C" NSString * const NSItemProviderPreferredImageSizeKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @interface NSItemProvider(NSPreviewSupport) + + +// @property (nullable, copy, atomic) NSItemProviderLoadHandler previewImageHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (void)loadPreviewImageWithOptions:(null_unspecified NSDictionary *)options completionHandler:(null_unspecified NSItemProviderCompletionHandler)completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + + + +extern "C" NSString * _Null_unspecified const NSExtensionJavaScriptPreprocessingResultsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSString * _Null_unspecified const NSExtensionJavaScriptFinalizeArgumentKey __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + + + +extern "C" NSString * const NSItemProviderErrorDomain __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSInteger NSItemProviderErrorCode; enum { + NSItemProviderUnknownError = -1, + NSItemProviderItemUnavailableError = -1000, + NSItemProviderUnexpectedValueClassError = -1100, + NSItemProviderUnavailableCoercionError __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1200 +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSCharacterSet +#define _REWRITER_typedef_NSCharacterSet +typedef struct objc_object NSCharacterSet; +typedef struct {} _objc_exc_NSCharacterSet; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef NSUInteger NSStringCompareOptions; enum { + NSCaseInsensitiveSearch = 1, + NSLiteralSearch = 2, + NSBackwardsSearch = 4, + NSAnchoredSearch = 8, + NSNumericSearch = 64, + NSDiacriticInsensitiveSearch __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 128, + NSWidthInsensitiveSearch __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 256, + NSForcedOrderingSearch __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 512, + NSRegularExpressionSearch __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1024 +}; + + + + + +typedef NSUInteger NSStringEncoding; +enum { + NSASCIIStringEncoding = 1, + NSNEXTSTEPStringEncoding = 2, + NSJapaneseEUCStringEncoding = 3, + NSUTF8StringEncoding = 4, + NSISOLatin1StringEncoding = 5, + NSSymbolStringEncoding = 6, + NSNonLossyASCIIStringEncoding = 7, + NSShiftJISStringEncoding = 8, + NSISOLatin2StringEncoding = 9, + NSUnicodeStringEncoding = 10, + NSWindowsCP1251StringEncoding = 11, + NSWindowsCP1252StringEncoding = 12, + NSWindowsCP1253StringEncoding = 13, + NSWindowsCP1254StringEncoding = 14, + NSWindowsCP1250StringEncoding = 15, + NSISO2022JPStringEncoding = 21, + NSMacOSRomanStringEncoding = 30, + + NSUTF16StringEncoding = NSUnicodeStringEncoding, + + NSUTF16BigEndianStringEncoding = 0x90000100, + NSUTF16LittleEndianStringEncoding = 0x94000100, + + NSUTF32StringEncoding = 0x8c000100, + NSUTF32BigEndianStringEncoding = 0x98000100, + NSUTF32LittleEndianStringEncoding = 0x9c000100 +}; + +typedef NSUInteger NSStringEncodingConversionOptions; enum { + NSStringEncodingConversionAllowLossy = 1, + NSStringEncodingConversionExternalRepresentation = 2 +}; + + + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +struct NSString_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + +// @property (readonly) NSUInteger length; +// - (unichar)characterAtIndex:(NSUInteger)index; + + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSString (NSStringExtensionMethods) +// - (NSString *)substringFromIndex:(NSUInteger)from; +// - (NSString *)substringToIndex:(NSUInteger)to; +// - (NSString *)substringWithRange:(NSRange)range; + +// - (void)getCharacters:(unichar *)buffer range:(NSRange)range; + + + + + + +// - (NSComparisonResult)compare:(NSString *)string; +// - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; +// - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare; +// - (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToCompare locale:(nullable id)locale; +// - (NSComparisonResult)caseInsensitiveCompare:(NSString *)string; +// - (NSComparisonResult)localizedCompare:(NSString *)string; +// - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string; + + + +// - (NSComparisonResult)localizedStandardCompare:(NSString *)string __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (BOOL)isEqualToString:(NSString *)aString; + + + + + + +// - (BOOL)hasPrefix:(NSString *)str; +// - (BOOL)hasSuffix:(NSString *)str; + +// - (NSString *)commonPrefixWithString:(NSString *)str options:(NSStringCompareOptions)mask; + + + +// - (BOOL)containsString:(NSString *)str __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)localizedStandardContainsString:(NSString *)str __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSRange)localizedStandardRangeOfString:(NSString *)str __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (NSRange)rangeOfString:(NSString *)searchString; +// - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask; +// - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch; +// - (NSRange)rangeOfString:(NSString *)searchString options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch locale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet; +// - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask; +// - (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)searchSet options:(NSStringCompareOptions)mask range:(NSRange)rangeOfReceiverToSearch; + +// - (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index; +// - (NSRange)rangeOfComposedCharacterSequencesForRange:(NSRange)range __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSString *)stringByAppendingString:(NSString *)aString; +// - (NSString *)stringByAppendingFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); + + + + + + +// @property (readonly) double doubleValue; +// @property (readonly) float floatValue; +// @property (readonly) int intValue; +// @property (readonly) NSInteger integerValue __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) long long longLongValue __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) BOOL boolValue __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// @property (readonly, copy) NSString *uppercaseString; +// @property (readonly, copy) NSString *lowercaseString; +// @property (readonly, copy) NSString *capitalizedString; + + + +// @property (readonly, copy) NSString *localizedUppercaseString __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSString *localizedLowercaseString __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSString *localizedCapitalizedString __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSString *)uppercaseStringWithLocale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSString *)lowercaseStringWithLocale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSString *)capitalizedStringWithLocale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void)getLineStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)lineEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range; +// - (NSRange)lineRangeForRange:(NSRange)range; + +// - (void)getParagraphStart:(nullable NSUInteger *)startPtr end:(nullable NSUInteger *)parEndPtr contentsEnd:(nullable NSUInteger *)contentsEndPtr forRange:(NSRange)range; +// - (NSRange)paragraphRangeForRange:(NSRange)range; + +typedef NSUInteger NSStringEnumerationOptions; enum { + + NSStringEnumerationByLines = 0, + NSStringEnumerationByParagraphs = 1, + NSStringEnumerationByComposedCharacterSequences = 2, + NSStringEnumerationByWords = 3, + NSStringEnumerationBySentences = 4, + + NSStringEnumerationReverse = 1UL << 8, + NSStringEnumerationSubstringNotRequired = 1UL << 9, + NSStringEnumerationLocalized = 1UL << 10 +}; + + + +// - (void)enumerateSubstringsInRange:(NSRange)range options:(NSStringEnumerationOptions)opts usingBlock:(void (^)(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// @property (nullable, readonly) const char *UTF8String __attribute__((objc_returns_inner_pointer)); + +// @property (readonly) NSStringEncoding fastestEncoding; +// @property (readonly) NSStringEncoding smallestEncoding; + +// - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)lossy; +// - (nullable NSData *)dataUsingEncoding:(NSStringEncoding)encoding; + +// - (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding; + + + +// - (nullable const char *)cStringUsingEncoding:(NSStringEncoding)encoding __attribute__((objc_returns_inner_pointer)); +// - (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding; +// - (BOOL)getBytes:(nullable void *)buffer maxLength:(NSUInteger)maxBufferCount usedLength:(nullable NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(nullable NSRangePointer)leftover; + + + +// - (NSUInteger)maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc; +// - (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc; + +@property (class, readonly) const NSStringEncoding *availableStringEncodings; + +// + (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding; + + + +@property (class, readonly) NSStringEncoding defaultCStringEncoding; + + + +// @property (readonly, copy) NSString *decomposedStringWithCanonicalMapping; +// @property (readonly, copy) NSString *precomposedStringWithCanonicalMapping; +// @property (readonly, copy) NSString *decomposedStringWithCompatibilityMapping; +// @property (readonly, copy) NSString *precomposedStringWithCompatibilityMapping; + +// - (NSArray *)componentsSeparatedByString:(NSString *)separator; +// - (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set; +// - (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex; + + + +// - (NSString *)stringByFoldingWithOptions:(NSStringCompareOptions)options locale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString *NSStringTransform __attribute__((swift_wrapper(struct))); + + + +// - (nullable NSString *)stringByApplyingTransform:(NSStringTransform)transform reverse:(BOOL)reverse __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStringTransform const NSStringTransformLatinToKatakana __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToHiragana __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToHangul __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToArabic __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToHebrew __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToThai __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToCyrillic __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformLatinToGreek __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformToLatin __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformMandarinToLatin __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformHiraganaToKatakana __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformFullwidthToHalfwidth __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformToXMLHex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformToUnicodeName __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformStripCombiningMarks __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringTransform const NSStringTransformStripDiacritics __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error; +// - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error; + +// @property (readonly, copy) NSString *description; + +// @property (readonly) NSUInteger hash; + + + + + + +// - (instancetype)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer; +// - (instancetype)initWithCharacters:(const unichar *)characters length:(NSUInteger)length; +// - (nullable instancetype)initWithUTF8String:(const char *)nullTerminatedCString; +// - (instancetype)initWithString:(NSString *)aString; +// - (instancetype)initWithFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); +// - (instancetype)initWithFormat:(NSString *)format arguments:(va_list)argList __attribute__((format(__NSString__, 1, 0))); +// - (instancetype)initWithFormat:(NSString *)format locale:(nullable id)locale, ... __attribute__((format(__NSString__, 1, 3))); +// - (instancetype)initWithFormat:(NSString *)format locale:(nullable id)locale arguments:(va_list)argList __attribute__((format(__NSString__, 1, 0))); +// - (nullable instancetype)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding; +// - (nullable instancetype)initWithBytes:(const void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding; +// - (nullable instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)len encoding:(NSStringEncoding)encoding freeWhenDone:(BOOL)freeBuffer; + +// + (instancetype)string; +// + (instancetype)stringWithString:(NSString *)string; +// + (instancetype)stringWithCharacters:(const unichar *)characters length:(NSUInteger)length; +// + (nullable instancetype)stringWithUTF8String:(const char *)nullTerminatedCString; +// + (instancetype)stringWithFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); +// + (instancetype)localizedStringWithFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); + +// - (nullable instancetype)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding; +// + (nullable instancetype)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc; + + + +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; +// - (nullable instancetype)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; +// + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error; +// + (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error; + + + +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url usedEncoding:(nullable NSStringEncoding *)enc error:(NSError **)error; +// - (nullable instancetype)initWithContentsOfFile:(NSString *)path usedEncoding:(nullable NSStringEncoding *)enc error:(NSError **)error; +// + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url usedEncoding:(nullable NSStringEncoding *)enc error:(NSError **)error; +// + (nullable instancetype)stringWithContentsOfFile:(NSString *)path usedEncoding:(nullable NSStringEncoding *)enc error:(NSError **)error; + +/* @end */ + + +typedef NSString * NSStringEncodingDetectionOptionsKey __attribute__((swift_wrapper(enum))); + +// @interface NSString (NSStringEncodingDetection) +#if 0 ++ (NSStringEncoding)stringEncodingForData:(NSData *)data + encodingOptions:(nullable NSDictionary *)opts + convertedString:(NSString * _Nullable * _Nullable)string + usedLossyConversion:(nullable BOOL *)usedLossyConversion __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#endif + + + + +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionSuggestedEncodingsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionDisallowedEncodingsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionUseOnlySuggestedEncodingsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionAllowLossyKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionFromWindowsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionLossySubstitutionKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStringEncodingDetectionOptionsKey const NSStringEncodingDetectionLikelyLanguageKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +// @interface NSString (NSItemProvider) +/* @end */ + + + + +#ifndef _REWRITER_typedef_NSMutableString +#define _REWRITER_typedef_NSMutableString +typedef struct objc_object NSMutableString; +typedef struct {} _objc_exc_NSMutableString; +#endif + +struct NSMutableString_IMPL { + struct NSString_IMPL NSString_IVARS; +}; + + + + + + +// - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString; + +/* @end */ + + +// @interface NSMutableString (NSMutableStringExtensionMethods) + + + +// - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc; +// - (void)deleteCharactersInRange:(NSRange)range; +// - (void)appendString:(NSString *)aString; +// - (void)appendFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); +// - (void)setString:(NSString *)aString; + + + +// - (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange; + + + +// - (BOOL)applyTransform:(NSStringTransform)transform reverse:(BOOL)reverse range:(NSRange)range updatedRange:(nullable NSRangePointer)resultingRange __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSMutableString *)initWithCapacity:(NSUInteger)capacity; +// + (NSMutableString *)stringWithCapacity:(NSUInteger)capacity; + +/* @end */ + + + + +extern "C" NSExceptionName const NSCharacterConversionException; +extern "C" NSExceptionName const NSParseErrorException; + + + + +// @interface NSString (NSExtendedStringPropertyListParsing) + + + +// - (id)propertyList; +// - (nullable NSDictionary *)propertyListFromStringsFileFormat; + +/* @end */ + + +// @interface NSString (NSStringDeprecated) + + + +// - (nullable const char *)cString __attribute__((objc_returns_inner_pointer)) __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -cStringUsingEncoding: instead"))); +// - (nullable const char *)lossyCString __attribute__((objc_returns_inner_pointer)) __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -cStringUsingEncoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -cStringUsingEncoding: instead"))); +// - (NSUInteger)cStringLength __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -lengthOfBytesUsingEncoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -lengthOfBytesUsingEncoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -lengthOfBytesUsingEncoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -lengthOfBytesUsingEncoding: instead"))); +// - (void)getCString:(char *)bytes __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -getCString:maxLength:encoding: instead"))); +// - (void)getCString:(char *)bytes maxLength:(NSUInteger)maxLength __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -getCString:maxLength:encoding: instead"))); +// - (void)getCString:(char *)bytes maxLength:(NSUInteger)maxLength range:(NSRange)aRange remainingRange:(nullable NSRangePointer)leftoverRange __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -getCString:maxLength:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -getCString:maxLength:encoding: instead"))); + +// - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -writeToFile:atomically:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -writeToFile:atomically:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -writeToFile:atomically:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -writeToFile:atomically:error: instead"))); +// - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -writeToURL:atomically:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -writeToURL:atomically:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -writeToURL:atomically:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -writeToURL:atomically:error: instead"))); + +// - (nullable id)initWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -initWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -initWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithContentsOfFile:encoding:error: instead"))); +// - (nullable id)initWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -initWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -initWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithContentsOfURL:encoding:error: instead"))); +// + (nullable id)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use +stringWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use +stringWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use +stringWithContentsOfFile:encoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use +stringWithContentsOfFile:encoding:error: instead"))); +// + (nullable id)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use +stringWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use +stringWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use +stringWithContentsOfURL:encoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use +stringWithContentsOfURL:encoding:error: instead"))); + +// - (nullable id)initWithCStringNoCopy:(char *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)freeBuffer __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithCString:encoding: instead"))); +// - (nullable id)initWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithCString:encoding: instead"))); +// - (nullable id)initWithCString:(const char *)bytes __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithCString:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithCString:encoding: instead"))); +// + (nullable id)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use +stringWithCString:encoding:"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use +stringWithCString:encoding:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use +stringWithCString:encoding:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use +stringWithCString:encoding:"))); +// + (nullable id)stringWithCString:(const char *)bytes __attribute__((availability(macos,introduced=10.0,deprecated=10.4,message="Use +stringWithCString:encoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use +stringWithCString:encoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use +stringWithCString:encoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use +stringWithCString:encoding: instead"))); + + + +// - (void)getCharacters:(unichar *)buffer; + +/* @end */ + + +enum { + NSProprietaryStringEncoding = 65536 +}; +__attribute__((availability(swift, unavailable, message="Use String or NSString instead."))) + +#ifndef _REWRITER_typedef_NSSimpleCString +#define _REWRITER_typedef_NSSimpleCString +typedef struct objc_object NSSimpleCString; +typedef struct {} _objc_exc_NSSimpleCString; +#endif + +struct NSSimpleCString_IMPL { + struct NSString_IMPL NSString_IVARS; + char *bytes; + int numBytes; + int _unused; +}; + +/* @end */ + + +__attribute__((availability(swift, unavailable, message="Use String or NSString instead."))) + +#ifndef _REWRITER_typedef_NSConstantString +#define _REWRITER_typedef_NSConstantString +typedef struct objc_object NSConstantString; +typedef struct {} _objc_exc_NSConstantString; +#endif + +struct NSConstantString_IMPL { + struct NSSimpleCString_IMPL NSSimpleCString_IVARS; +}; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +struct NSDictionary_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger count; +// - (nullable ObjectType)objectForKey:(KeyType)aKey; +// - (NSEnumerator *)keyEnumerator; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType _Nonnull [_Nullable])keys count:(NSUInteger)cnt __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSDictionary (NSExtendedDictionary) + +// @property (readonly, copy) NSArray *allKeys; +// - (NSArray *)allKeysForObject:(ObjectType)anObject; +// @property (readonly, copy) NSArray *allValues; +// @property (readonly, copy) NSString *description; +// @property (readonly, copy) NSString *descriptionInStringsFileFormat; +// - (NSString *)descriptionWithLocale:(nullable id)locale; +// - (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level; +// - (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary; +// - (NSEnumerator *)objectEnumerator; +// - (NSArray *)objectsForKeys:(NSArray *)keys notFoundMarker:(ObjectType)marker; + + +// - (BOOL)writeToURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (NSArray *)keysSortedByValueUsingSelector:(SEL)comparator; + +// - (void)getObjects:(ObjectType _Nonnull __attribute__((objc_ownership(none))) [_Nullable])objects andKeys:(KeyType _Nonnull __attribute__((objc_ownership(none))) [_Nullable])keys count:(NSUInteger)count __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(swift, unavailable, message="Use 'allKeys' and/or 'allValues' instead"))); + +// - (nullable ObjectType)objectForKeyedSubscript:(KeyType)key __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)enumerateKeysAndObjectsUsingBlock:(void (__attribute__((noescape)) ^)(KeyType key, ObjectType obj, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(KeyType key, ObjectType obj, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSArray *)keysSortedByValueUsingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSArray *)keysSortedByValueWithOptions:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSSet *)keysOfEntriesPassingTest:(BOOL (__attribute__((noescape)) ^)(KeyType key, ObjectType obj, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSSet *)keysOfEntriesWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(KeyType key, ObjectType obj, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSDictionary (NSDeprecated) + +// - (void)getObjects:(ObjectType _Nonnull __attribute__((objc_ownership(none))) [_Nullable])objects andKeys:(KeyType _Nonnull __attribute__((objc_ownership(none))) [_Nullable])keys __attribute__((availability(swift, unavailable, message="Use 'allKeys' and/or 'allValues' instead"))) __attribute__((availability(macos,introduced=10.0,deprecated=10.13,message="Use -getObjects:andKeys:count: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=11.0,message="Use -getObjects:andKeys:count: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=4.0,message="Use -getObjects:andKeys:count: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=11.0,message="Use -getObjects:andKeys:count: instead"))); + + +// + (nullable NSDictionary *)dictionaryWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))); +// + (nullable NSDictionary *)dictionaryWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="dictionaryWithContentsOfURL:error:"))); +// - (nullable NSDictionary *)initWithContentsOfFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))); +// - (nullable NSDictionary *)initWithContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="initWithContentsOfURL:error:"))); + +// - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="writeToURL:error:"))); +// - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="writeToURL:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="writeToURL:error:"))); +/* @end */ + + +// @interface NSDictionary (NSDictionaryCreation) + +// + (instancetype)dictionary; +// + (instancetype)dictionaryWithObject:(ObjectType)object forKey:(KeyType )key; +// + (instancetype)dictionaryWithObjects:(const ObjectType _Nonnull [_Nullable])objects forKeys:(const KeyType _Nonnull [_Nullable])keys count:(NSUInteger)cnt; + +// + (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1))) __attribute__((availability(swift, unavailable, message="Use dictionary literals instead"))); + +// + (instancetype)dictionaryWithDictionary:(NSDictionary *)dict; +// + (instancetype)dictionaryWithObjects:(NSArray *)objects forKeys:(NSArray> *)keys; + +// - (instancetype)initWithObjectsAndKeys:(id)firstObject, ... __attribute__((sentinel(0,1))); +// - (instancetype)initWithDictionary:(NSDictionary *)otherDictionary; +// - (instancetype)initWithDictionary:(NSDictionary *)otherDictionary copyItems:(BOOL)flag; +// - (instancetype)initWithObjects:(NSArray *)objects forKeys:(NSArray> *)keys; + + +// - (nullable NSDictionary *)initWithContentsOfURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// + (nullable NSDictionary *)dictionaryWithContentsOfURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(swift, unavailable, message="Use initializer instead"))); + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +struct NSMutableDictionary_IMPL { + struct NSDictionary_IMPL NSDictionary_IVARS; +}; + + +// - (void)removeObjectForKey:(KeyType)aKey; +// - (void)setObject:(ObjectType)anObject forKey:(KeyType )aKey; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCapacity:(NSUInteger)numItems __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSMutableDictionary (NSExtendedMutableDictionary) + +// - (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary; +// - (void)removeAllObjects; +// - (void)removeObjectsForKeys:(NSArray *)keyArray; +// - (void)setDictionary:(NSDictionary *)otherDictionary; +// - (void)setObject:(nullable ObjectType)obj forKeyedSubscript:(KeyType )key __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSMutableDictionary (NSMutableDictionaryCreation) + +// + (instancetype)dictionaryWithCapacity:(NSUInteger)numItems; + +// + (nullable NSMutableDictionary *)dictionaryWithContentsOfFile:(NSString *)path; +// + (nullable NSMutableDictionary *)dictionaryWithContentsOfURL:(NSURL *)url; +// - (nullable NSMutableDictionary *)initWithContentsOfFile:(NSString *)path; +// - (nullable NSMutableDictionary *)initWithContentsOfURL:(NSURL *)url; + +/* @end */ + + +// @interface NSDictionary (NSSharedKeySetDictionary) +// + (id)sharedKeySetForKeys:(NSArray> *)keys __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSMutableDictionary (NSSharedKeySetDictionary) + + + + + + + +// + (NSMutableDictionary *)dictionaryWithSharedKeySet:(id)keyset __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSDictionary (NSGenericFastEnumeraiton) +// - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(K __attribute__((objc_ownership(none))) _Nullable [_Nonnull])buffer count:(NSUInteger)len; +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +struct NSSet_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger count; +// - (nullable ObjectType)member:(ObjectType)object; +// - (NSEnumerator *)objectEnumerator; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)cnt __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSSet (NSExtendedSet) + +// @property (readonly, copy) NSArray *allObjects; +// - (nullable ObjectType)anyObject; +// - (BOOL)containsObject:(ObjectType)anObject; +// @property (readonly, copy) NSString *description; +// - (NSString *)descriptionWithLocale:(nullable id)locale; +// - (BOOL)intersectsSet:(NSSet *)otherSet; +// - (BOOL)isEqualToSet:(NSSet *)otherSet; +// - (BOOL)isSubsetOfSet:(NSSet *)otherSet; + +// - (void)makeObjectsPerformSelector:(SEL)aSelector __attribute__((availability(swift, unavailable, message="Use enumerateObjectsUsingBlock: or a for loop instead"))); +// - (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument __attribute__((availability(swift, unavailable, message="Use enumerateObjectsUsingBlock: or a for loop instead"))); + +// - (NSSet *)setByAddingObject:(ObjectType)anObject __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSSet *)setByAddingObjectsFromSet:(NSSet *)other __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSSet *)setByAddingObjectsFromArray:(NSArray *)other __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)enumerateObjectsUsingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSSet *)objectsPassingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSSet *)objectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, BOOL *stop))predicate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSSet (NSSetCreation) + +// + (instancetype)set; +// + (instancetype)setWithObject:(ObjectType)object; +// + (instancetype)setWithObjects:(const ObjectType _Nonnull [_Nonnull])objects count:(NSUInteger)cnt; +// + (instancetype)setWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// + (instancetype)setWithSet:(NSSet *)set; +// + (instancetype)setWithArray:(NSArray *)array; + +// - (instancetype)initWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// - (instancetype)initWithSet:(NSSet *)set; +// - (instancetype)initWithSet:(NSSet *)set copyItems:(BOOL)flag; +// - (instancetype)initWithArray:(NSArray *)array; + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSMutableSet +#define _REWRITER_typedef_NSMutableSet +typedef struct objc_object NSMutableSet; +typedef struct {} _objc_exc_NSMutableSet; +#endif + +struct NSMutableSet_IMPL { + struct NSSet_IMPL NSSet_IVARS; +}; + + +// - (void)addObject:(ObjectType)object; +// - (void)removeObject:(ObjectType)object; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCapacity:(NSUInteger)numItems __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSMutableSet (NSExtendedMutableSet) + +// - (void)addObjectsFromArray:(NSArray *)array; +// - (void)intersectSet:(NSSet *)otherSet; +// - (void)minusSet:(NSSet *)otherSet; +// - (void)removeAllObjects; +// - (void)unionSet:(NSSet *)otherSet; + +// - (void)setSet:(NSSet *)otherSet; + +/* @end */ + + +// @interface NSMutableSet (NSMutableSetCreation) + +// + (instancetype)setWithCapacity:(NSUInteger)numItems; + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSCountedSet +#define _REWRITER_typedef_NSCountedSet +typedef struct objc_object NSCountedSet; +typedef struct {} _objc_exc_NSCountedSet; +#endif + +struct NSCountedSet_IMPL { + struct NSMutableSet_IMPL NSMutableSet_IVARS; + id _table; + void *_reserved; +}; + + +// - (instancetype)initWithCapacity:(NSUInteger)numItems __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithArray:(NSArray *)array; +// - (instancetype)initWithSet:(NSSet *)set; + +// - (NSUInteger)countForObject:(ObjectType)object; + +// - (NSEnumerator *)objectEnumerator; +// - (void)addObject:(ObjectType)object; +// - (void)removeObject:(ObjectType)object; + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSMutableSet +#define _REWRITER_typedef_NSMutableSet +typedef struct objc_object NSMutableSet; +typedef struct {} _objc_exc_NSMutableSet; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSUUID +#define _REWRITER_typedef_NSUUID +typedef struct objc_object NSUUID; +typedef struct {} _objc_exc_NSUUID; +#endif + +#ifndef _REWRITER_typedef_NSXPCConnection +#define _REWRITER_typedef_NSXPCConnection +typedef struct objc_object NSXPCConnection; +typedef struct {} _objc_exc_NSXPCConnection; +#endif + +#ifndef _REWRITER_typedef_NSLock +#define _REWRITER_typedef_NSLock +typedef struct objc_object NSLock; +typedef struct {} _objc_exc_NSLock; +#endif + + +typedef NSString * NSProgressKind __attribute__((swift_wrapper(struct))); +typedef NSString * NSProgressUserInfoKey __attribute__((swift_wrapper(struct))); +typedef NSString * NSProgressFileOperationKind __attribute__((swift_wrapper(struct))); + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSProgress +#define _REWRITER_typedef_NSProgress +typedef struct objc_object NSProgress; +typedef struct {} _objc_exc_NSProgress; +#endif + +struct NSProgress_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// + (nullable NSProgress *)currentProgress; + + + + + +// + (NSProgress *)progressWithTotalUnitCount:(int64_t)unitCount; + + + +// + (NSProgress *)discreteProgressWithTotalUnitCount:(int64_t)unitCount __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (NSProgress *)progressWithTotalUnitCount:(int64_t)unitCount parent:(NSProgress *)parent pendingUnitCount:(int64_t)portionOfParentTotalUnitCount __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (instancetype)initWithParent:(nullable NSProgress *)parentProgressOrNil userInfo:(nullable NSDictionary *)userInfoOrNil __attribute__((objc_designated_initializer)); + + + + + +// - (void)becomeCurrentWithPendingUnitCount:(int64_t)unitCount; + + + +// - (void)performAsCurrentWithPendingUnitCount:(int64_t)unitCount usingBlock:(void (__attribute__((noescape)) ^)(void))work __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); + + + +// - (void)resignCurrent; + + + +// - (void)addChild:(NSProgress *)child withPendingUnitCount:(int64_t)inUnitCount __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// @property int64_t totalUnitCount; +// @property int64_t completedUnitCount; +// @property (null_resettable, copy) NSString *localizedDescription; +// @property (null_resettable, copy) NSString *localizedAdditionalDescription; + + + +// @property (getter=isCancellable) BOOL cancellable; +// @property (getter=isPausable) BOOL pausable; + + + +// @property (readonly, getter=isCancelled) BOOL cancelled; +// @property (readonly, getter=isPaused) BOOL paused; + + + +// @property (nullable, copy) void (^cancellationHandler)(void); + + + +// @property (nullable, copy) void (^pausingHandler)(void); + + + +// @property (nullable, copy) void (^resumingHandler)(void) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)setUserInfoObject:(nullable id)objectOrNil forKey:(NSProgressUserInfoKey)key; + + + + + +// @property (readonly, getter=isIndeterminate) BOOL indeterminate; + + + +// @property (readonly) double fractionCompleted; + + + +// @property (readonly, getter=isFinished) BOOL finished; + + + + +// - (void)cancel; + + + +// - (void)pause; + + + +// - (void)resume __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly, copy) NSDictionary *userInfo; + + + +// @property (nullable, copy) NSProgressKind kind; + + + + + +// @property (nullable, copy) NSNumber *estimatedTimeRemaining __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); + + + + + +// @property (nullable, copy) NSNumber *throughput __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); + + + + + + +// @property (nullable, copy) NSProgressFileOperationKind fileOperationKind __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + + +// @property (nullable, copy) NSURL *fileURL __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + + +// @property (nullable, copy) NSNumber *fileTotalCount __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); + + + + + + +// @property (nullable, copy) NSNumber *fileCompletedCount __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); +// - (void)publish __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// - (void)unpublish __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +typedef void (*NSProgressUnpublishingHandler)(void); +typedef _Nullable NSProgressUnpublishingHandler (*NSProgressPublishingHandler)(NSProgress *progress); + + + +// + (id)addSubscriberForFileURL:(NSURL *)url withPublishingHandler:(NSProgressPublishingHandler)publishingHandler __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// + (void)removeSubscriber:(id)subscriber __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + +// @property (readonly, getter=isOld) BOOL old __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +// @protocol NSProgressReporting +// @property (readonly) NSProgress *progress; +/* @end */ + + + + + + +extern "C" NSProgressUserInfoKey const NSProgressEstimatedTimeRemainingKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressUserInfoKey const NSProgressThroughputKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSProgressKind const NSProgressKindFile __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressUserInfoKey const NSProgressFileOperationKindKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressFileOperationKind const NSProgressFileOperationKindDownloading __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSProgressFileOperationKind const NSProgressFileOperationKindDecompressingAfterDownloading __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSProgressFileOperationKind const NSProgressFileOperationKindReceiving __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSProgressFileOperationKind const NSProgressFileOperationKindCopying __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressUserInfoKey const NSProgressFileURLKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressUserInfoKey const NSProgressFileTotalCountKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSProgressUserInfoKey const NSProgressFileCompletedCountKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSProgressUserInfoKey const NSProgressFileAnimationImageKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSProgressUserInfoKey const NSProgressFileAnimationImageOriginalRectKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" NSProgressUserInfoKey const NSProgressFileIconKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + + + + + +typedef NSString *NSNotificationName __attribute__((swift_wrapper(struct))); + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + + +#pragma clang assume_nonnull begin + + + + +#ifndef _REWRITER_typedef_NSNotification +#define _REWRITER_typedef_NSNotification +typedef struct objc_object NSNotification; +typedef struct {} _objc_exc_NSNotification; +#endif + +struct NSNotification_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, copy) NSNotificationName name; +// @property (nullable, readonly, retain) id object; +// @property (nullable, readonly, copy) NSDictionary *userInfo; + +// - (instancetype)initWithName:(NSNotificationName)name object:(nullable id)object userInfo:(nullable NSDictionary *)userInfo __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSNotification (NSNotificationCreation) + +// + (instancetype)notificationWithName:(NSNotificationName)aName object:(nullable id)anObject; +// + (instancetype)notificationWithName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo; + +// - (instancetype)init ; + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSNotificationCenter +#define _REWRITER_typedef_NSNotificationCenter +typedef struct objc_object NSNotificationCenter; +typedef struct {} _objc_exc_NSNotificationCenter; +#endif + +struct NSNotificationCenter_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_impl; + void *_callback; + void *_pad[11]; +}; + + +@property (class, readonly, strong) NSNotificationCenter *defaultCenter; + +// - (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullable NSNotificationName)aName object:(nullable id)anObject; + +// - (void)postNotification:(NSNotification *)notification; +// - (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject; +// - (void)postNotificationName:(NSNotificationName)aName object:(nullable id)anObject userInfo:(nullable NSDictionary *)aUserInfo; + +// - (void)removeObserver:(id)observer; +// - (void)removeObserver:(id)observer name:(nullable NSNotificationName)aName object:(nullable id)anObject; + +// - (id )addObserverForName:(nullable NSNotificationName)name object:(nullable id)obj queue:(nullable NSOperationQueue *)queue usingBlock:(void (^)(NSNotification *note))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSUUID +#define _REWRITER_typedef_NSUUID +typedef struct objc_object NSUUID; +typedef struct {} _objc_exc_NSUUID; +#endif + +#ifndef _REWRITER_typedef_NSLock +#define _REWRITER_typedef_NSLock +typedef struct objc_object NSLock; +typedef struct {} _objc_exc_NSLock; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + + +#pragma clang assume_nonnull begin + + + + +#ifndef _REWRITER_typedef_NSBundle +#define _REWRITER_typedef_NSBundle +typedef struct objc_object NSBundle; +typedef struct {} _objc_exc_NSBundle; +#endif + +struct NSBundle_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSUInteger _flags; + id _cfBundle; + NSUInteger _reserved2; + Class _principalClass; + id _initialPath; + id _resolvedPath; + NSString *_firstClassName; +}; + + + +@property (class, readonly, strong) NSBundle *mainBundle; + +// + (nullable instancetype)bundleWithPath:(NSString *)path; +// - (nullable instancetype)initWithPath:(NSString *)path __attribute__((objc_designated_initializer)); + +// + (nullable instancetype)bundleWithURL:(NSURL *)url __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable instancetype)initWithURL:(NSURL *)url __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSBundle *)bundleForClass:(Class)aClass; +// + (nullable NSBundle *)bundleWithIdentifier:(NSString *)identifier; + +@property (class, readonly, copy) NSArray *allBundles; +@property (class, readonly, copy) NSArray *allFrameworks; + + +// - (BOOL)load; +// @property (readonly, getter=isLoaded) BOOL loaded; +// - (BOOL)unload; + +// - (BOOL)preflightAndReturnError:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)loadAndReturnError:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (readonly, copy) NSURL *bundleURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *resourceURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *executableURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSURL *)URLForAuxiliaryExecutable:(NSString *)executableName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, readonly, copy) NSURL *privateFrameworksURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *sharedFrameworksURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *sharedSupportURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *builtInPlugInsURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, readonly, copy) NSURL *appStoreReceiptURL __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSString *bundlePath; +// @property (nullable, readonly, copy) NSString *resourcePath; +// @property (nullable, readonly, copy) NSString *executablePath; +// - (nullable NSString *)pathForAuxiliaryExecutable:(NSString *)executableName; + +// @property (nullable, readonly, copy) NSString *privateFrameworksPath; +// @property (nullable, readonly, copy) NSString *sharedFrameworksPath; +// @property (nullable, readonly, copy) NSString *sharedSupportPath; +// @property (nullable, readonly, copy) NSString *builtInPlugInsPath; + + + +// + (nullable NSURL *)URLForResource:(nullable NSString *)name withExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath inBundleWithURL:(NSURL *)bundleURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (nullable NSArray *)URLsForResourcesWithExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath inBundleWithURL:(NSURL *)bundleURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (nullable NSURL *)URLForResource:(nullable NSString *)name withExtension:(nullable NSString *)ext __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSURL *)URLForResource:(nullable NSString *)name withExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSURL *)URLForResource:(nullable NSString *)name withExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath localization:(nullable NSString *)localizationName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (nullable NSArray *)URLsForResourcesWithExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSArray *)URLsForResourcesWithExtension:(nullable NSString *)ext subdirectory:(nullable NSString *)subpath localization:(nullable NSString *)localizationName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext inDirectory:(NSString *)bundlePath; +// + (NSArray *)pathsForResourcesOfType:(nullable NSString *)ext inDirectory:(NSString *)bundlePath; + +// - (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext; +// - (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext inDirectory:(nullable NSString *)subpath; +// - (nullable NSString *)pathForResource:(nullable NSString *)name ofType:(nullable NSString *)ext inDirectory:(nullable NSString *)subpath forLocalization:(nullable NSString *)localizationName; + +// - (NSArray *)pathsForResourcesOfType:(nullable NSString *)ext inDirectory:(nullable NSString *)subpath; +// - (NSArray *)pathsForResourcesOfType:(nullable NSString *)ext inDirectory:(nullable NSString *)subpath forLocalization:(nullable NSString *)localizationName; + + +// - (NSString *)localizedStringForKey:(NSString *)key value:(nullable NSString *)value table:(nullable NSString *)tableName __attribute__ ((format_arg(1))); + + +// @property (nullable, readonly, copy) NSString *bundleIdentifier; +// @property (nullable, readonly, copy) NSDictionary *infoDictionary; +// @property (nullable, readonly, copy) NSDictionary *localizedInfoDictionary; +// - (nullable id)objectForInfoDictionaryKey:(NSString *)key; +// - (nullable Class)classNamed:(NSString *)className; +// @property (nullable, readonly) Class principalClass; + + +// @property (readonly, copy) NSArray *preferredLocalizations; + +// @property (readonly, copy) NSArray *localizations; +// @property (nullable, readonly, copy) NSString *developmentLocalization; + +// + (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray; +// + (NSArray *)preferredLocalizationsFromArray:(NSArray *)localizationsArray forPreferences:(nullable NSArray *)preferencesArray; + + +enum { + NSBundleExecutableArchitectureI386 = 0x00000007, + NSBundleExecutableArchitecturePPC = 0x00000012, + NSBundleExecutableArchitectureX86_64 = 0x01000007, + NSBundleExecutableArchitecturePPC64 = 0x01000012 +}; + +// @property (nullable, readonly, copy) NSArray *executableArchitectures __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +// @interface NSString (NSBundleExtensionMethods) + + + +// - (NSString *)variantFittingPresentationWidth:(NSInteger)width __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +extern "C" NSNotificationName const NSBundleDidLoadNotification; +extern "C" NSString * const NSLoadedClasses; +__attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) + +#ifndef _REWRITER_typedef_NSBundleResourceRequest +#define _REWRITER_typedef_NSBundleResourceRequest +typedef struct objc_object NSBundleResourceRequest; +typedef struct {} _objc_exc_NSBundleResourceRequest; +#endif + +struct NSBundleResourceRequest_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +// - (instancetype)initWithTags:(NSSet *)tags; +// - (instancetype)initWithTags:(NSSet *)tags bundle:(NSBundle *)bundle __attribute__((objc_designated_initializer)); + + + + + + +// @property double loadingPriority; + + + + +// @property (readonly, copy) NSSet *tags; + + + + +// @property (readonly, strong) NSBundle *bundle; +// - (void)beginAccessingResourcesWithCompletionHandler:(void (^)(NSError * _Nullable error))completionHandler; + + + + + + +// - (void)conditionallyBeginAccessingResourcesWithCompletionHandler:(void (^)(BOOL resourcesAvailable))completionHandler; + + + + +// - (void)endAccessingResources; + + + + +// @property (readonly, strong) NSProgress *progress; + +/* @end */ + + +// @interface NSBundle (NSBundleResourceRequestAdditions) + + + + + + + +// - (void)setPreservationPriority:(double)priority forTags:(NSSet *)tags __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +// - (double)preservationPriorityForTag:(NSString *)tag __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +/* @end */ + +extern "C" NSNotificationName const NSBundleResourceRequestLowDiskSpaceNotification __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + +extern "C" double const NSBundleResourceRequestLoadingPriorityUrgent __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +#pragma clang assume_nonnull end + + + + + + + +enum { + NS_UnknownByteOrder = CFByteOrderUnknown, + NS_LittleEndian = CFByteOrderLittleEndian, + NS_BigEndian = CFByteOrderBigEndian +}; + +static __inline__ __attribute__((always_inline)) long NSHostByteOrder(void) { + return CFByteOrderGetCurrent(); +} + +static __inline__ __attribute__((always_inline)) unsigned short NSSwapShort(unsigned short inv) { + return CFSwapInt16(inv); +} + +static __inline__ __attribute__((always_inline)) unsigned int NSSwapInt(unsigned int inv) { + return CFSwapInt32(inv); +} + +static __inline__ __attribute__((always_inline)) unsigned long NSSwapLong(unsigned long inv) { + + return CFSwapInt64(inv); + + + +} + +static __inline__ __attribute__((always_inline)) unsigned long long NSSwapLongLong(unsigned long long inv) { + return CFSwapInt64(inv); +} + +static __inline__ __attribute__((always_inline)) unsigned short NSSwapBigShortToHost(unsigned short x) { + return CFSwapInt16BigToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned int NSSwapBigIntToHost(unsigned int x) { + return CFSwapInt32BigToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned long NSSwapBigLongToHost(unsigned long x) { + + return CFSwapInt64BigToHost(x); + + + +} + +static __inline__ __attribute__((always_inline)) unsigned long long NSSwapBigLongLongToHost(unsigned long long x) { + return CFSwapInt64BigToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned short NSSwapHostShortToBig(unsigned short x) { + return CFSwapInt16HostToBig(x); +} + +static __inline__ __attribute__((always_inline)) unsigned int NSSwapHostIntToBig(unsigned int x) { + return CFSwapInt32HostToBig(x); +} + +static __inline__ __attribute__((always_inline)) unsigned long NSSwapHostLongToBig(unsigned long x) { + + return CFSwapInt64HostToBig(x); + + + +} + +static __inline__ __attribute__((always_inline)) unsigned long long NSSwapHostLongLongToBig(unsigned long long x) { + return CFSwapInt64HostToBig(x); +} + +static __inline__ __attribute__((always_inline)) unsigned short NSSwapLittleShortToHost(unsigned short x) { + return CFSwapInt16LittleToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned int NSSwapLittleIntToHost(unsigned int x) { + return CFSwapInt32LittleToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned long NSSwapLittleLongToHost(unsigned long x) { + + return CFSwapInt64LittleToHost(x); + + + +} + +static __inline__ __attribute__((always_inline)) unsigned long long NSSwapLittleLongLongToHost(unsigned long long x) { + return CFSwapInt64LittleToHost(x); +} + +static __inline__ __attribute__((always_inline)) unsigned short NSSwapHostShortToLittle(unsigned short x) { + return CFSwapInt16HostToLittle(x); +} + +static __inline__ __attribute__((always_inline)) unsigned int NSSwapHostIntToLittle(unsigned int x) { + return CFSwapInt32HostToLittle(x); +} + +static __inline__ __attribute__((always_inline)) unsigned long NSSwapHostLongToLittle(unsigned long x) { + + return CFSwapInt64HostToLittle(x); + + + +} + +static __inline__ __attribute__((always_inline)) unsigned long long NSSwapHostLongLongToLittle(unsigned long long x) { + return CFSwapInt64HostToLittle(x); +} + + +typedef struct {unsigned int v;} NSSwappedFloat; +typedef struct {unsigned long long v;} NSSwappedDouble; + +static __inline__ __attribute__((always_inline)) NSSwappedFloat NSConvertHostFloatToSwapped(float x) { + union fconv { + float number; + NSSwappedFloat sf; + }; + return ((union fconv *)&x)->sf; +} + +static __inline__ __attribute__((always_inline)) float NSConvertSwappedFloatToHost(NSSwappedFloat x) { + union fconv { + float number; + NSSwappedFloat sf; + }; + return ((union fconv *)&x)->number; +} + +static __inline__ __attribute__((always_inline)) NSSwappedDouble NSConvertHostDoubleToSwapped(double x) { + union dconv { + double number; + NSSwappedDouble sd; + }; + return ((union dconv *)&x)->sd; +} + +static __inline__ __attribute__((always_inline)) double NSConvertSwappedDoubleToHost(NSSwappedDouble x) { + union dconv { + double number; + NSSwappedDouble sd; + }; + return ((union dconv *)&x)->number; +} + +static __inline__ __attribute__((always_inline)) NSSwappedFloat NSSwapFloat(NSSwappedFloat x) { + x.v = NSSwapInt(x.v); + return x; +} + +static __inline__ __attribute__((always_inline)) NSSwappedDouble NSSwapDouble(NSSwappedDouble x) { + x.v = NSSwapLongLong(x.v); + return x; +} +static __inline__ __attribute__((always_inline)) double NSSwapBigDoubleToHost(NSSwappedDouble x) { + return NSConvertSwappedDoubleToHost(NSSwapDouble(x)); +} + +static __inline__ __attribute__((always_inline)) float NSSwapBigFloatToHost(NSSwappedFloat x) { + return NSConvertSwappedFloatToHost(NSSwapFloat(x)); +} + +static __inline__ __attribute__((always_inline)) NSSwappedDouble NSSwapHostDoubleToBig(double x) { + return NSSwapDouble(NSConvertHostDoubleToSwapped(x)); +} + +static __inline__ __attribute__((always_inline)) NSSwappedFloat NSSwapHostFloatToBig(float x) { + return NSSwapFloat(NSConvertHostFloatToSwapped(x)); +} + +static __inline__ __attribute__((always_inline)) double NSSwapLittleDoubleToHost(NSSwappedDouble x) { + return NSConvertSwappedDoubleToHost(x); +} + +static __inline__ __attribute__((always_inline)) float NSSwapLittleFloatToHost(NSSwappedFloat x) { + return NSConvertSwappedFloatToHost(x); +} + +static __inline__ __attribute__((always_inline)) NSSwappedDouble NSSwapHostDoubleToLittle(double x) { + return NSConvertHostDoubleToSwapped(x); +} + +static __inline__ __attribute__((always_inline)) NSSwappedFloat NSSwapHostFloatToLittle(float x) { + return NSConvertHostFloatToSwapped(x); +} + + + + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" NSNotificationName const NSSystemClockDidChangeNotification __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef double NSTimeInterval; + + + + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +struct NSDate_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSTimeInterval timeIntervalSinceReferenceDate; + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSDate (NSExtendedDate) + +// - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate; +// @property (readonly) NSTimeInterval timeIntervalSinceNow; +// @property (readonly) NSTimeInterval timeIntervalSince1970; + +// - (id)addTimeInterval:(NSTimeInterval)seconds __attribute__((availability(macos,introduced=10.0,deprecated=10.6,message="Use dateByAddingTimeInterval instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=4.0,message="Use dateByAddingTimeInterval instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use dateByAddingTimeInterval instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use dateByAddingTimeInterval instead"))); +// - (instancetype)dateByAddingTimeInterval:(NSTimeInterval)ti __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSDate *)earlierDate:(NSDate *)anotherDate; +// - (NSDate *)laterDate:(NSDate *)anotherDate; +// - (NSComparisonResult)compare:(NSDate *)other; +// - (BOOL)isEqualToDate:(NSDate *)otherDate; + +// @property (readonly, copy) NSString *description; +// - (NSString *)descriptionWithLocale:(nullable id)locale; + +@property (class, readonly) NSTimeInterval timeIntervalSinceReferenceDate; + +/* @end */ + + +// @interface NSDate (NSDateCreation) + +// + (instancetype)date; +// + (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs; +// + (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti; +// + (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs; +// + (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date; + +@property (class, readonly, copy) NSDate *distantFuture; +@property (class, readonly, copy) NSDate *distantPast; + +@property (class, readonly, copy) NSDate *now __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +// - (instancetype)initWithTimeIntervalSinceNow:(NSTimeInterval)secs; +// - (instancetype)initWithTimeIntervalSince1970:(NSTimeInterval)secs; +// - (instancetype)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date; + +/* @end */ + +#pragma clang assume_nonnull end + + + +// @class NSDateComponents; +#ifndef _REWRITER_typedef_NSDateComponents +#define _REWRITER_typedef_NSDateComponents +typedef struct objc_object NSDateComponents; +typedef struct {} _objc_exc_NSDateComponents; +#endif + +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + +typedef NSString * NSCalendarIdentifier __attribute__((swift_wrapper(struct))); + +extern "C" NSCalendarIdentifier const NSCalendarIdentifierGregorian __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierBuddhist __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierChinese __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierCoptic __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierEthiopicAmeteMihret __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierEthiopicAmeteAlem __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierHebrew __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierISO8601 __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierIndian __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierIslamic __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierIslamicCivil __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierJapanese __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierPersian __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSCalendarIdentifier const NSCalendarIdentifierRepublicOfChina __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSCalendarIdentifier const NSCalendarIdentifierIslamicTabular __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSCalendarIdentifier const NSCalendarIdentifierIslamicUmmAlQura __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSUInteger NSCalendarUnit; enum { + NSCalendarUnitEra = kCFCalendarUnitEra, + NSCalendarUnitYear = kCFCalendarUnitYear, + NSCalendarUnitMonth = kCFCalendarUnitMonth, + NSCalendarUnitDay = kCFCalendarUnitDay, + NSCalendarUnitHour = kCFCalendarUnitHour, + NSCalendarUnitMinute = kCFCalendarUnitMinute, + NSCalendarUnitSecond = kCFCalendarUnitSecond, + NSCalendarUnitWeekday = kCFCalendarUnitWeekday, + NSCalendarUnitWeekdayOrdinal = kCFCalendarUnitWeekdayOrdinal, + NSCalendarUnitQuarter __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFCalendarUnitQuarter, + NSCalendarUnitWeekOfMonth __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFCalendarUnitWeekOfMonth, + NSCalendarUnitWeekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFCalendarUnitWeekOfYear, + NSCalendarUnitYearForWeekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFCalendarUnitYearForWeekOfYear, + NSCalendarUnitNanosecond __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1 << 15), + NSCalendarUnitCalendar __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1 << 20), + NSCalendarUnitTimeZone __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1 << 21), + + NSEraCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitEra"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitEra"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitEra"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitEra"))) = NSCalendarUnitEra, + NSYearCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitYear"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitYear"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitYear"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitYear"))) = NSCalendarUnitYear, + NSMonthCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitMonth"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitMonth"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitMonth"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitMonth"))) = NSCalendarUnitMonth, + NSDayCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitDay"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitDay"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitDay"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitDay"))) = NSCalendarUnitDay, + NSHourCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitHour"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitHour"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitHour"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitHour"))) = NSCalendarUnitHour, + NSMinuteCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitMinute"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitMinute"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitMinute"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitMinute"))) = NSCalendarUnitMinute, + NSSecondCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitSecond"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitSecond"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitSecond"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitSecond"))) = NSCalendarUnitSecond, + NSWeekCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,message="NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="NSCalendarUnitWeekOfMonth or NSCalendarUnitWeekOfYear, depending on which you mean"))) = kCFCalendarUnitWeek, + NSWeekdayCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitWeekday"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitWeekday"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitWeekday"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitWeekday"))) = NSCalendarUnitWeekday, + NSWeekdayOrdinalCalendarUnit __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarUnitWeekdayOrdinal"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarUnitWeekdayOrdinal"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitWeekdayOrdinal"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitWeekdayOrdinal"))) = NSCalendarUnitWeekdayOrdinal, + NSQuarterCalendarUnit __attribute__((availability(macos,introduced=10.6,deprecated=10.10,replacement="NSCalendarUnitQuarter"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarUnitQuarter"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitQuarter"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitQuarter"))) = NSCalendarUnitQuarter, + NSWeekOfMonthCalendarUnit __attribute__((availability(macos,introduced=10.7,deprecated=10.10,replacement="NSCalendarUnitWeekOfMonth"))) __attribute__((availability(ios,introduced=5.0,deprecated=8.0,replacement="NSCalendarUnitWeekOfMonth"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitWeekOfMonth"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitWeekOfMonth"))) = NSCalendarUnitWeekOfMonth, + NSWeekOfYearCalendarUnit __attribute__((availability(macos,introduced=10.7,deprecated=10.10,replacement="NSCalendarUnitWeekOfYear"))) __attribute__((availability(ios,introduced=5.0,deprecated=8.0,replacement="NSCalendarUnitWeekOfYear"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitWeekOfYear"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitWeekOfYear"))) = NSCalendarUnitWeekOfYear, + NSYearForWeekOfYearCalendarUnit __attribute__((availability(macos,introduced=10.7,deprecated=10.10,replacement="NSCalendarUnitYearForWeekOfYear"))) __attribute__((availability(ios,introduced=5.0,deprecated=8.0,replacement="NSCalendarUnitYearForWeekOfYear"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitYearForWeekOfYear"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitYearForWeekOfYear"))) = NSCalendarUnitYearForWeekOfYear, + NSCalendarCalendarUnit __attribute__((availability(macos,introduced=10.7,deprecated=10.10,replacement="NSCalendarUnitCalendar"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarUnitCalendar"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitCalendar"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitCalendar"))) = NSCalendarUnitCalendar, + NSTimeZoneCalendarUnit __attribute__((availability(macos,introduced=10.7,deprecated=10.10,replacement="NSCalendarUnitTimeZone"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarUnitTimeZone"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarUnitTimeZone"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarUnitTimeZone"))) = NSCalendarUnitTimeZone, +}; + +typedef NSUInteger NSCalendarOptions; enum { + NSCalendarWrapComponents = (1UL << 0), + + NSCalendarMatchStrictly __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 1), + NSCalendarSearchBackwards __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 2), + + NSCalendarMatchPreviousTimePreservingSmallerUnits __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 8), + NSCalendarMatchNextTimePreservingSmallerUnits __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 9), + NSCalendarMatchNextTime __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 10), + + NSCalendarMatchFirst __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 12), + NSCalendarMatchLast __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1ULL << 13) +}; + +enum { + NSWrapCalendarComponents __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarWrapComponents"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarWrapComponents"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarWrapComponents"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarWrapComponents"))) = NSCalendarWrapComponents, +}; + + + +#ifndef _REWRITER_typedef_NSCalendar +#define _REWRITER_typedef_NSCalendar +typedef struct objc_object NSCalendar; +typedef struct {} _objc_exc_NSCalendar; +#endif + +struct NSCalendar_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (class, readonly, copy) NSCalendar *currentCalendar; +@property (class, readonly, strong) NSCalendar *autoupdatingCurrentCalendar __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// + (nullable NSCalendar *)calendarWithIdentifier:(NSCalendarIdentifier)calendarIdentifierConstant __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (instancetype)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// - (nullable id)initWithCalendarIdentifier:(NSCalendarIdentifier)ident __attribute__((objc_designated_initializer)); + +// @property (readonly, copy) NSCalendarIdentifier calendarIdentifier; +// @property (nullable, copy) NSLocale *locale; +// @property (copy) NSTimeZone *timeZone; +// @property NSUInteger firstWeekday; +// @property NSUInteger minimumDaysInFirstWeek; + + + +// @property (readonly, copy) NSArray *eraSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *longEraSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *monthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortMonthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *veryShortMonthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *standaloneMonthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *veryShortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *weekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortWeekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *veryShortWeekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *standaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *veryShortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *quarterSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortQuarterSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *standaloneQuarterSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *shortStandaloneQuarterSymbols __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSString *AMSymbol __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSString *PMSymbol __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (NSRange)minimumRangeOfUnit:(NSCalendarUnit)unit; +// - (NSRange)maximumRangeOfUnit:(NSCalendarUnit)unit; + +// - (NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date; +// - (NSUInteger)ordinalityOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date; + +// - (BOOL)rangeOfUnit:(NSCalendarUnit)unit startDate:(NSDate * _Nullable * _Nullable)datep interval:(nullable NSTimeInterval *)tip forDate:(NSDate *)date __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (nullable NSDate *)dateFromComponents:(NSDateComponents *)comps; +// - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)date; + +// - (nullable NSDate *)dateByAddingComponents:(NSDateComponents *)comps toDate:(NSDate *)date options:(NSCalendarOptions)opts; + +// - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSCalendarOptions)opts; + + + + + + +// - (void)getEra:(out nullable NSInteger *)eraValuePointer year:(out nullable NSInteger *)yearValuePointer month:(out nullable NSInteger *)monthValuePointer day:(out nullable NSInteger *)dayValuePointer fromDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)getEra:(out nullable NSInteger *)eraValuePointer yearForWeekOfYear:(out nullable NSInteger *)yearValuePointer weekOfYear:(out nullable NSInteger *)weekValuePointer weekday:(out nullable NSInteger *)weekdayValuePointer fromDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)getHour:(out nullable NSInteger *)hourValuePointer minute:(out nullable NSInteger *)minuteValuePointer second:(out nullable NSInteger *)secondValuePointer nanosecond:(out nullable NSInteger *)nanosecondValuePointer fromDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (NSInteger)component:(NSCalendarUnit)unit fromDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (nullable NSDate *)dateWithEra:(NSInteger)eraValue year:(NSInteger)yearValue month:(NSInteger)monthValue day:(NSInteger)dayValue hour:(NSInteger)hourValue minute:(NSInteger)minuteValue second:(NSInteger)secondValue nanosecond:(NSInteger)nanosecondValue __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (nullable NSDate *)dateWithEra:(NSInteger)eraValue yearForWeekOfYear:(NSInteger)yearValue weekOfYear:(NSInteger)weekValue weekday:(NSInteger)weekdayValue hour:(NSInteger)hourValue minute:(NSInteger)minuteValue second:(NSInteger)secondValue nanosecond:(NSInteger)nanosecondValue __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (NSDate *)startOfDayForDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (NSDateComponents *)componentsInTimeZone:(NSTimeZone *)timezone fromDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (NSComparisonResult)compareDate:(NSDate *)date1 toDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDate:(NSDate *)date1 equalToDate:(NSDate *)date2 toUnitGranularity:(NSCalendarUnit)unit __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDate:(NSDate *)date1 inSameDayAsDate:(NSDate *)date2 __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDateInToday:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDateInYesterday:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDateInTomorrow:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)isDateInWeekend:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (BOOL)rangeOfWeekendStartDate:(out NSDate * _Nullable * _Nullable)datep interval:(out nullable NSTimeInterval *)tip containingDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)nextWeekendStartDate:(out NSDate * _Nullable * _Nullable)datep interval:(out nullable NSTimeInterval *)tip options:(NSCalendarOptions)options afterDate:(NSDate *)date __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSDateComponents *)components:(NSCalendarUnit)unitFlags fromDateComponents:(NSDateComponents *)startingDateComp toDateComponents:(NSDateComponents *)resultDateComp options:(NSCalendarOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (nullable NSDate *)dateByAddingUnit:(NSCalendarUnit)unit value:(NSInteger)value toDate:(NSDate *)date options:(NSCalendarOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateDatesStartingAfterDate:(NSDate *)start matchingComponents:(NSDateComponents *)comps options:(NSCalendarOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSDate * _Nullable date, BOOL exactMatch, BOOL *stop))block __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (nullable NSDate *)nextDateAfterDate:(NSDate *)date matchingComponents:(NSDateComponents *)comps options:(NSCalendarOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (nullable NSDate *)nextDateAfterDate:(NSDate *)date matchingUnit:(NSCalendarUnit)unit value:(NSInteger)value options:(NSCalendarOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (nullable NSDate *)nextDateAfterDate:(NSDate *)date matchingHour:(NSInteger)hourValue minute:(NSInteger)minuteValue second:(NSInteger)secondValue options:(NSCalendarOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSDate *)dateBySettingUnit:(NSCalendarUnit)unit value:(NSInteger)v ofDate:(NSDate *)date options:(NSCalendarOptions)opts __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (nullable NSDate *)dateBySettingHour:(NSInteger)h minute:(NSInteger)m second:(NSInteger)s ofDate:(NSDate *)date options:(NSCalendarOptions)opts __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (BOOL)date:(NSDate *)date matchesComponents:(NSDateComponents *)components __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +extern "C" NSNotificationName const NSCalendarDayChangedNotification __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +enum { + NSDateComponentUndefined = 9223372036854775807L, + + NSUndefinedDateComponent __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSDateComponentUndefined"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSDateComponentUndefined"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSDateComponentUndefined"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSDateComponentUndefined"))) = NSDateComponentUndefined +}; + + + +#ifndef _REWRITER_typedef_NSDateComponents +#define _REWRITER_typedef_NSDateComponents +typedef struct objc_object NSDateComponents; +typedef struct {} _objc_exc_NSDateComponents; +#endif + +struct NSDateComponents_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nullable, copy) NSCalendar *calendar __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, copy) NSTimeZone *timeZone __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSInteger era; +// @property NSInteger year; +// @property NSInteger month; +// @property NSInteger day; +// @property NSInteger hour; +// @property NSInteger minute; +// @property NSInteger second; +// @property NSInteger nanosecond __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSInteger weekday; +// @property NSInteger weekdayOrdinal; +// @property NSInteger quarter __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSInteger weekOfMonth __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSInteger weekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSInteger yearForWeekOfYear __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (getter=isLeapMonth) BOOL leapMonth __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSDate *date __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSInteger)week __attribute__((availability(macos,introduced=10.4,deprecated=10.9,message="Use -weekOfMonth or -weekOfYear, depending on which you mean"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use -weekOfMonth or -weekOfYear, depending on which you mean"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -weekOfMonth or -weekOfYear, depending on which you mean"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -weekOfMonth or -weekOfYear, depending on which you mean"))); +// - (void)setWeek:(NSInteger)v __attribute__((availability(macos,introduced=10.4,deprecated=10.9,message="Use -setWeekOfMonth: or -setWeekOfYear:, depending on which you mean"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use -setWeekOfMonth: or -setWeekOfYear:, depending on which you mean"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -setWeekOfMonth: or -setWeekOfYear:, depending on which you mean"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -setWeekOfMonth: or -setWeekOfYear:, depending on which you mean"))); + + + + + +// - (void)setValue:(NSInteger)value forComponent:(NSCalendarUnit)unit __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (NSInteger)valueForComponent:(NSCalendarUnit)unit __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (getter=isValidDate, readonly) BOOL validDate __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)isValidDateInCalendar:(NSCalendar *)calendar __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + + +#pragma clang assume_nonnull begin + +enum { + NSOpenStepUnicodeReservedBase = 0xF400 +}; + + +#ifndef _REWRITER_typedef_NSCharacterSet +#define _REWRITER_typedef_NSCharacterSet +typedef struct objc_object NSCharacterSet; +typedef struct {} _objc_exc_NSCharacterSet; +#endif + +struct NSCharacterSet_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (readonly, class, copy) NSCharacterSet *controlCharacterSet; +@property (readonly, class, copy) NSCharacterSet *whitespaceCharacterSet; +@property (readonly, class, copy) NSCharacterSet *whitespaceAndNewlineCharacterSet; +@property (readonly, class, copy) NSCharacterSet *decimalDigitCharacterSet; +@property (readonly, class, copy) NSCharacterSet *letterCharacterSet; +@property (readonly, class, copy) NSCharacterSet *lowercaseLetterCharacterSet; +@property (readonly, class, copy) NSCharacterSet *uppercaseLetterCharacterSet; +@property (readonly, class, copy) NSCharacterSet *nonBaseCharacterSet; +@property (readonly, class, copy) NSCharacterSet *alphanumericCharacterSet; +@property (readonly, class, copy) NSCharacterSet *decomposableCharacterSet; +@property (readonly, class, copy) NSCharacterSet *illegalCharacterSet; +@property (readonly, class, copy) NSCharacterSet *punctuationCharacterSet; +@property (readonly, class, copy) NSCharacterSet *capitalizedLetterCharacterSet; +@property (readonly, class, copy) NSCharacterSet *symbolCharacterSet; +@property (readonly, class, copy) NSCharacterSet *newlineCharacterSet __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSCharacterSet *)characterSetWithRange:(NSRange)aRange; +// + (NSCharacterSet *)characterSetWithCharactersInString:(NSString *)aString; +// + (NSCharacterSet *)characterSetWithBitmapRepresentation:(NSData *)data; +// + (nullable NSCharacterSet *)characterSetWithContentsOfFile:(NSString *)fName; + +// - (instancetype) initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (BOOL)characterIsMember:(unichar)aCharacter; +// @property (readonly, copy) NSData *bitmapRepresentation; +// @property (readonly, copy) NSCharacterSet *invertedSet; + + +// - (BOOL)longCharacterIsMember:(UTF32Char)theLongChar; + +// - (BOOL)isSupersetOfSet:(NSCharacterSet *)theOtherSet; +// - (BOOL)hasMemberInPlane:(uint8_t)thePlane; +/* @end */ + + + +#ifndef _REWRITER_typedef_NSMutableCharacterSet +#define _REWRITER_typedef_NSMutableCharacterSet +typedef struct objc_object NSMutableCharacterSet; +typedef struct {} _objc_exc_NSMutableCharacterSet; +#endif + +struct NSMutableCharacterSet_IMPL { + struct NSCharacterSet_IMPL NSCharacterSet_IVARS; +}; + + +// - (void)addCharactersInRange:(NSRange)aRange; +// - (void)removeCharactersInRange:(NSRange)aRange; +// - (void)addCharactersInString:(NSString *)aString; +// - (void)removeCharactersInString:(NSString *)aString; +// - (void)formUnionWithCharacterSet:(NSCharacterSet *)otherSet; +// - (void)formIntersectionWithCharacterSet:(NSCharacterSet *)otherSet; +// - (void)invert; + +// + (NSMutableCharacterSet *)controlCharacterSet; +// + (NSMutableCharacterSet *)whitespaceCharacterSet; +// + (NSMutableCharacterSet *)whitespaceAndNewlineCharacterSet; +// + (NSMutableCharacterSet *)decimalDigitCharacterSet; +// + (NSMutableCharacterSet *)letterCharacterSet; +// + (NSMutableCharacterSet *)lowercaseLetterCharacterSet; +// + (NSMutableCharacterSet *)uppercaseLetterCharacterSet; +// + (NSMutableCharacterSet *)nonBaseCharacterSet; +// + (NSMutableCharacterSet *)alphanumericCharacterSet; +// + (NSMutableCharacterSet *)decomposableCharacterSet; +// + (NSMutableCharacterSet *)illegalCharacterSet; +// + (NSMutableCharacterSet *)punctuationCharacterSet; +// + (NSMutableCharacterSet *)capitalizedLetterCharacterSet; +// + (NSMutableCharacterSet *)symbolCharacterSet; +// + (NSMutableCharacterSet *)newlineCharacterSet __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSMutableCharacterSet *)characterSetWithRange:(NSRange)aRange; +// + (NSMutableCharacterSet *)characterSetWithCharactersInString:(NSString *)aString; +// + (NSMutableCharacterSet *)characterSetWithBitmapRepresentation:(NSData *)data; +// + (nullable NSMutableCharacterSet *)characterSetWithContentsOfFile:(NSString *)fName; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + + +#pragma clang assume_nonnull begin + + + + +typedef NSInteger NSDecodingFailurePolicy; enum { + + NSDecodingFailurePolicyRaiseException, + + + NSDecodingFailurePolicySetErrorAndReturn, +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSCoder +#define _REWRITER_typedef_NSCoder +typedef struct objc_object NSCoder; +typedef struct {} _objc_exc_NSCoder; +#endif + +struct NSCoder_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (void)encodeValueOfObjCType:(const char *)type at:(const void *)addr; +// - (void)encodeDataObject:(NSData *)data; +// - (nullable NSData *)decodeDataObject; +// - (void)decodeValueOfObjCType:(const char *)type at:(void *)data size:(NSUInteger)size __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSInteger)versionForClassName:(NSString *)className; + +/* @end */ + + +// @interface NSCoder (NSExtendedCoder) + +// - (void)encodeObject:(nullable id)object; +// - (void)encodeRootObject:(id)rootObject; +// - (void)encodeBycopyObject:(nullable id)anObject; +// - (void)encodeByrefObject:(nullable id)anObject; +// - (void)encodeConditionalObject:(nullable id)object; +// - (void)encodeValuesOfObjCTypes:(const char *)types, ...; +// - (void)encodeArrayOfObjCType:(const char *)type count:(NSUInteger)count at:(const void *)array; +// - (void)encodeBytes:(nullable const void *)byteaddr length:(NSUInteger)length; + +// - (nullable id)decodeObject; +// - (nullable id)decodeTopLevelObjectAndReturnError:(NSError **)error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(swift, unavailable, message="Use 'decodeTopLevelObject() throws' instead"))); +// - (void)decodeValuesOfObjCTypes:(const char *)types, ...; +// - (void)decodeArrayOfObjCType:(const char *)itemType count:(NSUInteger)count at:(void *)array; +// - (nullable void *)decodeBytesWithReturnedLength:(NSUInteger *)lengthp __attribute__((objc_returns_inner_pointer)); + + + + + + +// - (void)setObjectZone:(nullable NSZone *)zone ; +// - (nullable NSZone *)objectZone ; + +// @property (readonly) unsigned int systemVersion; + +// @property (readonly) BOOL allowsKeyedCoding; + +// - (void)encodeObject:(nullable id)object forKey:(NSString *)key; +// - (void)encodeConditionalObject:(nullable id)object forKey:(NSString *)key; +// - (void)encodeBool:(BOOL)value forKey:(NSString *)key; +// - (void)encodeInt:(int)value forKey:(NSString *)key; +// - (void)encodeInt32:(int32_t)value forKey:(NSString *)key; +// - (void)encodeInt64:(int64_t)value forKey:(NSString *)key; +// - (void)encodeFloat:(float)value forKey:(NSString *)key; +// - (void)encodeDouble:(double)value forKey:(NSString *)key; +// - (void)encodeBytes:(nullable const uint8_t *)bytes length:(NSUInteger)length forKey:(NSString *)key; + +// - (BOOL)containsValueForKey:(NSString *)key; +// - (nullable id)decodeObjectForKey:(NSString *)key; +// - (nullable id)decodeTopLevelObjectForKey:(NSString *)key error:(NSError **)error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(swift, unavailable, message="Use 'decodeObjectForKey(_:) throws' instead"))); +// - (BOOL)decodeBoolForKey:(NSString *)key; +// - (int)decodeIntForKey:(NSString *)key; +// - (int32_t)decodeInt32ForKey:(NSString *)key; +// - (int64_t)decodeInt64ForKey:(NSString *)key; +// - (float)decodeFloatForKey:(NSString *)key; +// - (double)decodeDoubleForKey:(NSString *)key; +// - (nullable const uint8_t *)decodeBytesForKey:(NSString *)key returnedLength:(nullable NSUInteger *)lengthp __attribute__((objc_returns_inner_pointer)); + +// - (void)encodeInteger:(NSInteger)value forKey:(NSString *)key __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSInteger)decodeIntegerForKey:(NSString *)key __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (readonly) BOOL requiresSecureCoding __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (nullable id)decodeObjectOfClass:(Class)aClass forKey:(NSString *)key __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable id)decodeTopLevelObjectOfClass:(Class)aClass forKey:(NSString *)key error:(NSError **)error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(swift, unavailable, message="Use 'decodeTopLevelObjectOfClass(_:,forKey:) throws' instead"))); + + +// - (nullable id)decodeObjectOfClasses:(nullable NSSet *)classes forKey:(NSString *)key __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((swift_private)); +// - (nullable id)decodeTopLevelObjectOfClasses:(nullable NSSet *)classes forKey:(NSString *)key error:(NSError **)error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(swift, unavailable, message="Use 'decodeObjectOfClasses(_:,forKey:) throws' instead"))); + + +// - (nullable id)decodePropertyListForKey:(NSString *)key __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (nullable, readonly, copy) NSSet *allowedClasses __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)failWithError:(NSError *)error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// @property (readonly) NSDecodingFailurePolicy decodingFailurePolicy __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSError *error __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +// @interface NSCoder(NSDeprecated) + + +// - (void)decodeValueOfObjCType:(const char *)type at:(void *)data __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="decodeValueOfObjCType:at:size:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="decodeValueOfObjCType:at:size:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="decodeValueOfObjCType:at:size:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="decodeValueOfObjCType:at:size:"))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef NSUInteger NSDataReadingOptions; enum { + NSDataReadingMappedIfSafe = 1UL << 0, + NSDataReadingUncached = 1UL << 1, + NSDataReadingMappedAlways __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1UL << 3, + + + NSDataReadingMapped __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="NSDataReadingMappedIfSafe"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="NSDataReadingMappedIfSafe"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="NSDataReadingMappedIfSafe"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="NSDataReadingMappedIfSafe"))) = NSDataReadingMappedIfSafe, + NSMappedRead __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="NSDataReadingMapped"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="NSDataReadingMapped"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="NSDataReadingMapped"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="NSDataReadingMapped"))) = NSDataReadingMapped, + NSUncachedRead __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="NSDataReadingUncached"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="NSDataReadingUncached"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="NSDataReadingUncached"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="NSDataReadingUncached"))) = NSDataReadingUncached +}; + +typedef NSUInteger NSDataWritingOptions; enum { + NSDataWritingAtomic = 1UL << 0, + NSDataWritingWithoutOverwriting __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1UL << 1, + + NSDataWritingFileProtectionNone __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 0x10000000, + NSDataWritingFileProtectionComplete __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 0x20000000, + NSDataWritingFileProtectionCompleteUnlessOpen __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 0x30000000, + NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 0x40000000, + NSDataWritingFileProtectionMask __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 0xf0000000, + + + NSAtomicWrite __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="NSDataWritingAtomic"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="NSDataWritingAtomic"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="NSDataWritingAtomic"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="NSDataWritingAtomic"))) = NSDataWritingAtomic +}; + + + + +typedef NSUInteger NSDataSearchOptions; enum { + NSDataSearchBackwards = 1UL << 0, + NSDataSearchAnchored = 1UL << 1 +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +typedef NSUInteger NSDataBase64EncodingOptions; enum { + + NSDataBase64Encoding64CharacterLineLength = 1UL << 0, + NSDataBase64Encoding76CharacterLineLength = 1UL << 1, + + + NSDataBase64EncodingEndLineWithCarriageReturn = 1UL << 4, + NSDataBase64EncodingEndLineWithLineFeed = 1UL << 5, + +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSUInteger NSDataBase64DecodingOptions; enum { + + NSDataBase64DecodingIgnoreUnknownCharacters = 1UL << 0 +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +struct NSData_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger length; + + + + + +// @property (readonly) const void *bytes __attribute__((objc_returns_inner_pointer)); + +/* @end */ + + +// @interface NSData (NSExtendedData) + +// @property (readonly, copy) NSString *description; +// - (void)getBytes:(void *)buffer length:(NSUInteger)length; +// - (void)getBytes:(void *)buffer range:(NSRange)range; +// - (BOOL)isEqualToData:(NSData *)other; +// - (NSData *)subdataWithRange:(NSRange)range; +// - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; +// - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically; +// - (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)writeOptionsMask error:(NSError **)errorPtr; +// - (BOOL)writeToURL:(NSURL *)url options:(NSDataWritingOptions)writeOptionsMask error:(NSError **)errorPtr; +// - (NSRange)rangeOfData:(NSData *)dataToFind options:(NSDataSearchOptions)mask range:(NSRange)searchRange __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void) enumerateByteRangesUsingBlock:(void (__attribute__((noescape)) ^)(const void *bytes, NSRange byteRange, BOOL *stop))block __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSData (NSDataCreation) + +// + (instancetype)data; +// + (instancetype)dataWithBytes:(nullable const void *)bytes length:(NSUInteger)length; +// + (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length; +// + (instancetype)dataWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b; +// + (nullable instancetype)dataWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr; +// + (nullable instancetype)dataWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr; +// + (nullable instancetype)dataWithContentsOfFile:(NSString *)path; +// + (nullable instancetype)dataWithContentsOfURL:(NSURL *)url; +// - (instancetype)initWithBytes:(nullable const void *)bytes length:(NSUInteger)length; +// - (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length; +// - (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length freeWhenDone:(BOOL)b; +// - (instancetype)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length deallocator:(nullable void (^)(void *bytes, NSUInteger length))deallocator __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable instancetype)initWithContentsOfFile:(NSString *)path options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr; +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url options:(NSDataReadingOptions)readOptionsMask error:(NSError **)errorPtr; +// - (nullable instancetype)initWithContentsOfFile:(NSString *)path; +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url; +// - (instancetype)initWithData:(NSData *)data; +// + (instancetype)dataWithData:(NSData *)data; + +/* @end */ + + +// @interface NSData (NSDataBase64Encoding) + + + +// - (nullable instancetype)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable instancetype)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + +typedef NSInteger NSDataCompressionAlgorithm; enum { + + + NSDataCompressionAlgorithmLZFSE = 0, + + + + NSDataCompressionAlgorithmLZ4, + + + + NSDataCompressionAlgorithmLZMA, + + + + NSDataCompressionAlgorithmZlib, + +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @interface NSData (NSDataCompression) + + + +// - (nullable instancetype)decompressedDataUsingAlgorithm:(NSDataCompressionAlgorithm)algorithm error:(NSError **)error __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (nullable instancetype)compressedDataUsingAlgorithm:(NSDataCompressionAlgorithm)algorithm error:(NSError **)error __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + + +// @interface NSData (NSDeprecated) + +// - (void)getBytes:(void *)buffer __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="This method is unsafe because it could potentially cause buffer overruns. Use -getBytes:length: instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="This method is unsafe because it could potentially cause buffer overruns. Use -getBytes:length: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="This method is unsafe because it could potentially cause buffer overruns. Use -getBytes:length: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="This method is unsafe because it could potentially cause buffer overruns. Use -getBytes:length: instead."))); +// + (nullable id)dataWithContentsOfMappedFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))); +// - (nullable id)initWithContentsOfMappedFile:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use -initWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use -initWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -initWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -initWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead."))); + + + +// - (nullable id)initWithBase64Encoding:(NSString *)base64String __attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="Use initWithBase64EncodedString instead"))) __attribute__((availability(ios,introduced=4.0,deprecated=7.0,message="Use initWithBase64EncodedString instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use initWithBase64EncodedString instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use initWithBase64EncodedString instead"))); +// - (NSString *)base64Encoding __attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="Use base64EncodedStringWithOptions instead"))) __attribute__((availability(ios,introduced=4.0,deprecated=7.0,message="Use base64EncodedStringWithOptions instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use base64EncodedStringWithOptions instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use base64EncodedStringWithOptions instead"))); + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSMutableData +#define _REWRITER_typedef_NSMutableData +typedef struct objc_object NSMutableData; +typedef struct {} _objc_exc_NSMutableData; +#endif + +struct NSMutableData_IMPL { + struct NSData_IMPL NSData_IVARS; +}; + + +// @property (readonly) void *mutableBytes __attribute__((objc_returns_inner_pointer)); +// @property NSUInteger length; + +/* @end */ + + +// @interface NSMutableData (NSExtendedMutableData) + +// - (void)appendBytes:(const void *)bytes length:(NSUInteger)length; +// - (void)appendData:(NSData *)other; +// - (void)increaseLengthBy:(NSUInteger)extraLength; +// - (void)replaceBytesInRange:(NSRange)range withBytes:(const void *)bytes; +// - (void)resetBytesInRange:(NSRange)range; +// - (void)setData:(NSData *)data; +// - (void)replaceBytesInRange:(NSRange)range withBytes:(nullable const void *)replacementBytes length:(NSUInteger)replacementLength; + +/* @end */ + + +// @interface NSMutableData (NSMutableDataCreation) + +// + (nullable instancetype)dataWithCapacity:(NSUInteger)aNumItems; +// + (nullable instancetype)dataWithLength:(NSUInteger)length; +// - (nullable instancetype)initWithCapacity:(NSUInteger)capacity; +// - (nullable instancetype)initWithLength:(NSUInteger)length; + +/* @end */ + + +// @interface NSMutableData (NSMutableDataCompression) + + + +// - (BOOL)decompressUsingAlgorithm:(NSDataCompressionAlgorithm)algorithm error:(NSError **)error __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (BOOL)compressUsingAlgorithm:(NSDataCompressionAlgorithm)algorithm error:(NSError **)error __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPurgeableData +#define _REWRITER_typedef_NSPurgeableData +typedef struct objc_object NSPurgeableData; +typedef struct {} _objc_exc_NSPurgeableData; +#endif + +struct NSPurgeableData_IMPL { + struct NSMutableData_IMPL NSMutableData_IVARS; + NSUInteger _length; + int32_t _accessCount; + uint8_t _private[32]; + void *_reserved; +}; + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSDateInterval +#define _REWRITER_typedef_NSDateInterval +typedef struct objc_object NSDateInterval; +typedef struct {} _objc_exc_NSDateInterval; +#endif + +struct NSDateInterval_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + +// @property (readonly, copy) NSDate *startDate; +// @property (readonly, copy) NSDate *endDate; +// @property (readonly) NSTimeInterval duration; + + +// - (instancetype)init; + +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithStartDate:(NSDate *)startDate duration:(NSTimeInterval)duration __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate; +// - (NSComparisonResult)compare:(NSDateInterval *)dateInterval; + +// - (BOOL)isEqualToDateInterval:(NSDateInterval *)dateInterval; +// - (BOOL)intersectsDateInterval:(NSDateInterval *)dateInterval; + + + + +// - (nullable NSDateInterval *)intersectionWithDateInterval:(NSDateInterval *)dateInterval; + +// - (BOOL)containsDate:(NSDate *)date; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSString * NSAttributedStringKey __attribute__((swift_wrapper(struct))); + +__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSAttributedString +#define _REWRITER_typedef_NSAttributedString +typedef struct objc_object NSAttributedString; +typedef struct {} _objc_exc_NSAttributedString; +#endif + +struct NSAttributedString_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, copy) NSString *string; +// - (NSDictionary *)attributesAtIndex:(NSUInteger)location effectiveRange:(nullable NSRangePointer)range; + +/* @end */ + + +// @interface NSAttributedString (NSExtendedAttributedString) + +// @property (readonly) NSUInteger length; +// - (nullable id)attribute:(NSAttributedStringKey)attrName atIndex:(NSUInteger)location effectiveRange:(nullable NSRangePointer)range; +// - (NSAttributedString *)attributedSubstringFromRange:(NSRange)range; + +// - (NSDictionary *)attributesAtIndex:(NSUInteger)location longestEffectiveRange:(nullable NSRangePointer)range inRange:(NSRange)rangeLimit; +// - (nullable id)attribute:(NSAttributedStringKey)attrName atIndex:(NSUInteger)location longestEffectiveRange:(nullable NSRangePointer)range inRange:(NSRange)rangeLimit; + +// - (BOOL)isEqualToAttributedString:(NSAttributedString *)other; + +// - (instancetype)initWithString:(NSString *)str; +// - (instancetype)initWithString:(NSString *)str attributes:(nullable NSDictionary *)attrs; +// - (instancetype)initWithAttributedString:(NSAttributedString *)attrStr; + +typedef NSUInteger NSAttributedStringEnumerationOptions; enum { + NSAttributedStringEnumerationReverse = (1UL << 1), + NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = (1UL << 20) +}; + +// - (void)enumerateAttributesInRange:(NSRange)enumerationRange options:(NSAttributedStringEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSDictionary *attrs, NSRange range, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateAttribute:(NSAttributedStringKey)attrName inRange:(NSRange)enumerationRange options:(NSAttributedStringEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(id _Nullable value, NSRange range, BOOL *stop))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMutableAttributedString +#define _REWRITER_typedef_NSMutableAttributedString +typedef struct objc_object NSMutableAttributedString; +typedef struct {} _objc_exc_NSMutableAttributedString; +#endif + +struct NSMutableAttributedString_IMPL { + struct NSAttributedString_IMPL NSAttributedString_IVARS; +}; + + +// - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)str; +// - (void)setAttributes:(nullable NSDictionary *)attrs range:(NSRange)range; + +/* @end */ + + +// @interface NSMutableAttributedString (NSExtendedMutableAttributedString) + +// @property (readonly, retain) NSMutableString *mutableString; + +// - (void)addAttribute:(NSAttributedStringKey)name value:(id)value range:(NSRange)range; +// - (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range; +// - (void)removeAttribute:(NSAttributedStringKey)name range:(NSRange)range; + +// - (void)replaceCharactersInRange:(NSRange)range withAttributedString:(NSAttributedString *)attrString; +// - (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc; +// - (void)appendAttributedString:(NSAttributedString *)attrString; +// - (void)deleteCharactersInRange:(NSRange)range; +// - (void)setAttributedString:(NSAttributedString *)attrString; + +// - (void)beginEditing; +// - (void)endEditing; + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSAttributedString; +#ifndef _REWRITER_typedef_NSAttributedString +#define _REWRITER_typedef_NSAttributedString +typedef struct objc_object NSAttributedString; +typedef struct {} _objc_exc_NSAttributedString; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSFormattingContext; enum { + + + NSFormattingContextUnknown = 0, + + + NSFormattingContextDynamic = 1, + + + NSFormattingContextStandalone = 2, + + + NSFormattingContextListItem = 3, + + + NSFormattingContextBeginningOfSentence = 4, + + + NSFormattingContextMiddleOfSentence = 5, + +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +typedef NSInteger NSFormattingUnitStyle; enum { + NSFormattingUnitStyleShort = 1, + NSFormattingUnitStyleMedium, + NSFormattingUnitStyleLong, +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSFormatter +#define _REWRITER_typedef_NSFormatter +typedef struct objc_object NSFormatter; +typedef struct {} _objc_exc_NSFormatter; +#endif + +struct NSFormatter_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (nullable NSString *)stringForObjectValue:(nullable id)obj; + +// - (nullable NSAttributedString *)attributedStringForObjectValue:(id)obj withDefaultAttributes:(nullable NSDictionary *)attrs; + +// - (nullable NSString *)editingStringForObjectValue:(id)obj; + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; + +// - (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString * _Nullable * _Nullable)newString errorDescription:(NSString * _Nullable * _Nullable)error; + + +// - (BOOL)isPartialStringValid:(NSString * _Nonnull * _Nonnull)partialStringPtr proposedSelectedRange:(nullable NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString * _Nullable * _Nullable)error; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSLocale; +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSCalendar +#define _REWRITER_typedef_NSCalendar +typedef struct objc_object NSCalendar; +typedef struct {} _objc_exc_NSCalendar; +#endif + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + + + +#ifndef _REWRITER_typedef_NSDateFormatter +#define _REWRITER_typedef_NSDateFormatter +typedef struct objc_object NSDateFormatter; +typedef struct {} _objc_exc_NSDateFormatter; +#endif + +struct NSDateFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + NSMutableDictionary *_attributes; + CFDateFormatterRef _formatter; + NSUInteger _counter; +}; + + +// @property NSFormattingContext formattingContext __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string range:(inout nullable NSRange *)rangep error:(out NSError **)error; + + + + +// - (NSString *)stringFromDate:(NSDate *)date; +// - (nullable NSDate *)dateFromString:(NSString *)string; + +typedef NSUInteger NSDateFormatterStyle; enum { + NSDateFormatterNoStyle = kCFDateFormatterNoStyle, + NSDateFormatterShortStyle = kCFDateFormatterShortStyle, + NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle, + NSDateFormatterLongStyle = kCFDateFormatterLongStyle, + NSDateFormatterFullStyle = kCFDateFormatterFullStyle +}; + +typedef NSUInteger NSDateFormatterBehavior; enum { + NSDateFormatterBehaviorDefault = 0, + + + + NSDateFormatterBehavior10_4 = 1040, +}; + + +// + (NSString *)localizedStringFromDate:(NSDate *)date dateStyle:(NSDateFormatterStyle)dstyle timeStyle:(NSDateFormatterStyle)tstyle __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (nullable NSString *)dateFormatFromTemplate:(NSString *)tmplate options:(NSUInteger)opts locale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +@property (class) NSDateFormatterBehavior defaultFormatterBehavior; +// - (void) setLocalizedDateFormatFromTemplate:(NSString *)dateFormatTemplate __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (null_resettable, copy) NSString *dateFormat; +// @property NSDateFormatterStyle dateStyle; +// @property NSDateFormatterStyle timeStyle; +// @property (null_resettable, copy) NSLocale *locale; +// @property BOOL generatesCalendarDates; +// @property NSDateFormatterBehavior formatterBehavior; +// @property (null_resettable, copy) NSTimeZone *timeZone; +// @property (null_resettable, copy) NSCalendar *calendar; +// @property (getter=isLenient) BOOL lenient; +// @property (nullable, copy) NSDate *twoDigitStartDate; +// @property (nullable, copy) NSDate *defaultDate; +// @property (null_resettable, copy) NSArray *eraSymbols; +// @property (null_resettable, copy) NSArray *monthSymbols; +// @property (null_resettable, copy) NSArray *shortMonthSymbols; +// @property (null_resettable, copy) NSArray *weekdaySymbols; +// @property (null_resettable, copy) NSArray *shortWeekdaySymbols; +// @property (null_resettable, copy) NSString *AMSymbol; +// @property (null_resettable, copy) NSString *PMSymbol; +// @property (null_resettable, copy) NSArray *longEraSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *veryShortMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *standaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *shortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *veryShortStandaloneMonthSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *veryShortWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *standaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *shortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *veryShortStandaloneWeekdaySymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *quarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *shortQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *standaloneQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (null_resettable, copy) NSArray *shortStandaloneQuarterSymbols __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, copy) NSDate *gregorianStartDate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property BOOL doesRelativeDateFormatting __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSLocale; +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +#ifndef _REWRITER_typedef_NSCalendar +#define _REWRITER_typedef_NSCalendar +typedef struct objc_object NSCalendar; +typedef struct {} _objc_exc_NSCalendar; +#endif + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSDateIntervalFormatterStyle; enum { + NSDateIntervalFormatterNoStyle = 0, + NSDateIntervalFormatterShortStyle = 1, + NSDateIntervalFormatterMediumStyle = 2, + NSDateIntervalFormatterLongStyle = 3, + NSDateIntervalFormatterFullStyle = 4 +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSDateIntervalFormatter +#define _REWRITER_typedef_NSDateIntervalFormatter +typedef struct objc_object NSDateIntervalFormatter; +typedef struct {} _objc_exc_NSDateIntervalFormatter; +#endif + +struct NSDateIntervalFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + NSLocale *_locale; + NSCalendar *_calendar; + NSTimeZone *_timeZone; + NSString *_dateTemplate; + NSString *_dateTemplateFromStyles; + void *_formatter; + NSDateIntervalFormatterStyle _dateStyle; + NSDateIntervalFormatterStyle _timeStyle; + BOOL _modified; + BOOL _useTemplate; + dispatch_semaphore_t _lock; + void *_reserved[4]; +}; + + +// @property (null_resettable, copy) NSLocale *locale; +// @property (null_resettable, copy) NSCalendar *calendar; +// @property (null_resettable, copy) NSTimeZone *timeZone; +// @property (null_resettable, copy) NSString *dateTemplate; +// @property NSDateIntervalFormatterStyle dateStyle; +// @property NSDateIntervalFormatterStyle timeStyle; +// - (NSString *)stringFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate; + +// - (nullable NSString *)stringFromDateInterval:(NSDateInterval *)dateInterval __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + + +typedef NSUInteger NSISO8601DateFormatOptions; enum { + + + + + NSISO8601DateFormatWithYear __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithYear, + NSISO8601DateFormatWithMonth __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithMonth, + + NSISO8601DateFormatWithWeekOfYear __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithWeekOfYear, + + + + + + + NSISO8601DateFormatWithDay __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithDay, + + NSISO8601DateFormatWithTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithTime, + NSISO8601DateFormatWithTimeZone __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithTimeZone, + + NSISO8601DateFormatWithSpaceBetweenDateAndTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithSpaceBetweenDateAndTime, + NSISO8601DateFormatWithDashSeparatorInDate __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithDashSeparatorInDate, + NSISO8601DateFormatWithColonSeparatorInTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithColonSeparatorInTime, + NSISO8601DateFormatWithColonSeparatorInTimeZone __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithColonSeparatorInTimeZone, + NSISO8601DateFormatWithFractionalSeconds __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) = kCFISO8601DateFormatWithFractionalSeconds, + + NSISO8601DateFormatWithFullDate __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithFullDate, + NSISO8601DateFormatWithFullTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithFullTime, + + NSISO8601DateFormatWithInternetDateTime __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = kCFISO8601DateFormatWithInternetDateTime, +}; + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSISO8601DateFormatter +#define _REWRITER_typedef_NSISO8601DateFormatter +typedef struct objc_object NSISO8601DateFormatter; +typedef struct {} _objc_exc_NSISO8601DateFormatter; +#endif + +struct NSISO8601DateFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + CFDateFormatterRef _formatter; + NSTimeZone *_timeZone; + NSISO8601DateFormatOptions _formatOptions; +}; + + + +// @property (null_resettable, copy) NSTimeZone *timeZone; + +// @property NSISO8601DateFormatOptions formatOptions; + + + + +// - (instancetype)init __attribute__((objc_designated_initializer)); + +// - (NSString *)stringFromDate:(NSDate *)date; +// - (nullable NSDate *)dateFromString:(NSString *)string; + +// + (NSString *)stringFromDate:(NSDate *)date timeZone:(NSTimeZone *)timeZone formatOptions:(NSISO8601DateFormatOptions)formatOptions; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSNumberFormatter; +#ifndef _REWRITER_typedef_NSNumberFormatter +#define _REWRITER_typedef_NSNumberFormatter +typedef struct objc_object NSNumberFormatter; +typedef struct {} _objc_exc_NSNumberFormatter; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSMassFormatterUnit; enum { + NSMassFormatterUnitGram = 11, + NSMassFormatterUnitKilogram = 14, + NSMassFormatterUnitOunce = (6 << 8) + 1, + NSMassFormatterUnitPound = (6 << 8) + 2, + NSMassFormatterUnitStone = (6 << 8) + 3, +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMassFormatter +#define _REWRITER_typedef_NSMassFormatter +typedef struct objc_object NSMassFormatter; +typedef struct {} _objc_exc_NSMassFormatter; +#endif + +struct NSMassFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + void *_formatter; + BOOL _isForPersonMassUse; + void *_reserved[2]; +}; + + +// @property (null_resettable, copy) NSNumberFormatter *numberFormatter; +// @property NSFormattingUnitStyle unitStyle; +// @property (getter = isForPersonMassUse) BOOL forPersonMassUse; + + +// - (NSString *)stringFromValue:(double)value unit:(NSMassFormatterUnit)unit; + + +// - (NSString *)stringFromKilograms:(double)numberInKilograms; + + +// - (NSString *)unitStringFromValue:(double)value unit:(NSMassFormatterUnit)unit; + + +// - (NSString *)unitStringFromKilograms:(double)numberInKilograms usedUnit:(nullable NSMassFormatterUnit *)unitp; + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSLengthFormatterUnit; enum { + NSLengthFormatterUnitMillimeter = 8, + NSLengthFormatterUnitCentimeter = 9, + NSLengthFormatterUnitMeter = 11, + NSLengthFormatterUnitKilometer = 14, + NSLengthFormatterUnitInch = (5 << 8) + 1, + NSLengthFormatterUnitFoot = (5 << 8) + 2, + NSLengthFormatterUnitYard = (5 << 8) + 3, + NSLengthFormatterUnitMile = (5 << 8) + 4, +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLengthFormatter +#define _REWRITER_typedef_NSLengthFormatter +typedef struct objc_object NSLengthFormatter; +typedef struct {} _objc_exc_NSLengthFormatter; +#endif + +struct NSLengthFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + void *_formatter; + BOOL _isForPersonHeight; + void *_reserved[2]; +}; + +// @property (null_resettable, copy) NSNumberFormatter *numberFormatter; +// @property NSFormattingUnitStyle unitStyle; + +// @property (getter = isForPersonHeightUse) BOOL forPersonHeightUse; + + +// - (NSString *)stringFromValue:(double)value unit:(NSLengthFormatterUnit)unit; + + +// - (NSString *)stringFromMeters:(double)numberInMeters; + + +// - (NSString *)unitStringFromValue:(double)value unit:(NSLengthFormatterUnit)unit; + + +// - (NSString *)unitStringFromMeters:(double)numberInMeters usedUnit:(nullable NSLengthFormatterUnit *)unitp; + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSEnergyFormatterUnit; enum { + NSEnergyFormatterUnitJoule = 11, + NSEnergyFormatterUnitKilojoule = 14, + NSEnergyFormatterUnitCalorie = (7 << 8) + 1, + NSEnergyFormatterUnitKilocalorie = (7 << 8) + 2, +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSEnergyFormatter +#define _REWRITER_typedef_NSEnergyFormatter +typedef struct objc_object NSEnergyFormatter; +typedef struct {} _objc_exc_NSEnergyFormatter; +#endif + +struct NSEnergyFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + void *_formatter; + BOOL _isForFoodEnergyUse; + void *_reserved[2]; +}; + +// @property (null_resettable, copy) NSNumberFormatter *numberFormatter; +// @property NSFormattingUnitStyle unitStyle; +// @property (getter = isForFoodEnergyUse) BOOL forFoodEnergyUse; + + +// - (NSString *)stringFromValue:(double)value unit:(NSEnergyFormatterUnit)unit; + + +// - (NSString *)stringFromJoules:(double)numberInJoules; + + +// - (NSString *)unitStringFromValue:(double)value unit:(NSEnergyFormatterUnit)unit; + + +// - (NSString *)unitStringFromJoules:(double)numberInJoules usedUnit:(nullable NSEnergyFormatterUnit *)unitp; + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + +#pragma clang assume_nonnull begin + + + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitConverter +#define _REWRITER_typedef_NSUnitConverter +typedef struct objc_object NSUnitConverter; +typedef struct {} _objc_exc_NSUnitConverter; +#endif + +struct NSUnitConverter_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (double)baseUnitValueFromValue:(double)value; + + + + + + +// - (double)valueFromBaseUnitValue:(double)baseUnitValue; + +/* @end */ + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitConverterLinear +#define _REWRITER_typedef_NSUnitConverterLinear +typedef struct objc_object NSUnitConverterLinear; +typedef struct {} _objc_exc_NSUnitConverterLinear; +#endif + +struct NSUnitConverterLinear_IMPL { + struct NSUnitConverter_IMPL NSUnitConverter_IVARS; + double _coefficient; + double _constant; +}; + +// @property (readonly) double coefficient; +// @property (readonly) double constant; + +// - (instancetype)initWithCoefficient:(double)coefficient; + +// - (instancetype)initWithCoefficient:(double)coefficient constant:(double)constant __attribute__((objc_designated_initializer)); + +/* @end */ + + + + + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnit +#define _REWRITER_typedef_NSUnit +typedef struct objc_object NSUnit; +typedef struct {} _objc_exc_NSUnit; +#endif + +struct NSUnit_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_symbol; +}; + + +// @property (readonly, copy) NSString *symbol; + +// - (instancetype)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// + (instancetype)new __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// - (instancetype)initWithSymbol:(NSString *)symbol __attribute__((objc_designated_initializer)); + +/* @end */ + + + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSDimension +#define _REWRITER_typedef_NSDimension +typedef struct objc_object NSDimension; +typedef struct {} _objc_exc_NSDimension; +#endif + +struct NSDimension_IMPL { + struct NSUnit_IMPL NSUnit_IVARS; + NSUInteger _reserved; + NSUnitConverter *_converter; +}; + + +// @property (readonly, copy) NSUnitConverter *converter; + +// - (instancetype)initWithSymbol:(NSString *)symbol converter:(NSUnitConverter *)converter __attribute__((objc_designated_initializer)); + + + + + + +// + (instancetype)baseUnit; + +/* @end */ + + + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitAcceleration +#define _REWRITER_typedef_NSUnitAcceleration +typedef struct objc_object NSUnitAcceleration; +typedef struct {} _objc_exc_NSUnitAcceleration; +#endif + +struct NSUnitAcceleration_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitAcceleration *metersPerSecondSquared; +@property (class, readonly, copy) NSUnitAcceleration *gravity; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitAngle +#define _REWRITER_typedef_NSUnitAngle +typedef struct objc_object NSUnitAngle; +typedef struct {} _objc_exc_NSUnitAngle; +#endif + +struct NSUnitAngle_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitAngle *degrees; +@property (class, readonly, copy) NSUnitAngle *arcMinutes; +@property (class, readonly, copy) NSUnitAngle *arcSeconds; +@property (class, readonly, copy) NSUnitAngle *radians; +@property (class, readonly, copy) NSUnitAngle *gradians; +@property (class, readonly, copy) NSUnitAngle *revolutions; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitArea +#define _REWRITER_typedef_NSUnitArea +typedef struct objc_object NSUnitArea; +typedef struct {} _objc_exc_NSUnitArea; +#endif + +struct NSUnitArea_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitArea *squareMegameters; +@property (class, readonly, copy) NSUnitArea *squareKilometers; +@property (class, readonly, copy) NSUnitArea *squareMeters; +@property (class, readonly, copy) NSUnitArea *squareCentimeters; +@property (class, readonly, copy) NSUnitArea *squareMillimeters; +@property (class, readonly, copy) NSUnitArea *squareMicrometers; +@property (class, readonly, copy) NSUnitArea *squareNanometers; +@property (class, readonly, copy) NSUnitArea *squareInches; +@property (class, readonly, copy) NSUnitArea *squareFeet; +@property (class, readonly, copy) NSUnitArea *squareYards; +@property (class, readonly, copy) NSUnitArea *squareMiles; +@property (class, readonly, copy) NSUnitArea *acres; +@property (class, readonly, copy) NSUnitArea *ares; +@property (class, readonly, copy) NSUnitArea *hectares; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitConcentrationMass +#define _REWRITER_typedef_NSUnitConcentrationMass +typedef struct objc_object NSUnitConcentrationMass; +typedef struct {} _objc_exc_NSUnitConcentrationMass; +#endif + +struct NSUnitConcentrationMass_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitConcentrationMass *gramsPerLiter; +@property (class, readonly, copy) NSUnitConcentrationMass *milligramsPerDeciliter; + +// + (NSUnitConcentrationMass *)millimolesPerLiterWithGramsPerMole:(double)gramsPerMole; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitDispersion +#define _REWRITER_typedef_NSUnitDispersion +typedef struct objc_object NSUnitDispersion; +typedef struct {} _objc_exc_NSUnitDispersion; +#endif + +struct NSUnitDispersion_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + +@property (class, readonly, copy) NSUnitDispersion *partsPerMillion; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitDuration +#define _REWRITER_typedef_NSUnitDuration +typedef struct objc_object NSUnitDuration; +typedef struct {} _objc_exc_NSUnitDuration; +#endif + +struct NSUnitDuration_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitDuration *hours; +@property (class, readonly, copy) NSUnitDuration *minutes; +@property (class, readonly, copy) NSUnitDuration *seconds; +@property (class, readonly, copy) NSUnitDuration *milliseconds __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, copy) NSUnitDuration *microseconds __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, copy) NSUnitDuration *nanoseconds __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, copy) NSUnitDuration *picoseconds __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitElectricCharge +#define _REWRITER_typedef_NSUnitElectricCharge +typedef struct objc_object NSUnitElectricCharge; +typedef struct {} _objc_exc_NSUnitElectricCharge; +#endif + +struct NSUnitElectricCharge_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitElectricCharge *coulombs; +@property (class, readonly, copy) NSUnitElectricCharge *megaampereHours; +@property (class, readonly, copy) NSUnitElectricCharge *kiloampereHours; +@property (class, readonly, copy) NSUnitElectricCharge *ampereHours; +@property (class, readonly, copy) NSUnitElectricCharge *milliampereHours; +@property (class, readonly, copy) NSUnitElectricCharge *microampereHours; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitElectricCurrent +#define _REWRITER_typedef_NSUnitElectricCurrent +typedef struct objc_object NSUnitElectricCurrent; +typedef struct {} _objc_exc_NSUnitElectricCurrent; +#endif + +struct NSUnitElectricCurrent_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitElectricCurrent *megaamperes; +@property (class, readonly, copy) NSUnitElectricCurrent *kiloamperes; +@property (class, readonly, copy) NSUnitElectricCurrent *amperes; +@property (class, readonly, copy) NSUnitElectricCurrent *milliamperes; +@property (class, readonly, copy) NSUnitElectricCurrent *microamperes; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitElectricPotentialDifference +#define _REWRITER_typedef_NSUnitElectricPotentialDifference +typedef struct objc_object NSUnitElectricPotentialDifference; +typedef struct {} _objc_exc_NSUnitElectricPotentialDifference; +#endif + +struct NSUnitElectricPotentialDifference_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitElectricPotentialDifference *megavolts; +@property (class, readonly, copy) NSUnitElectricPotentialDifference *kilovolts; +@property (class, readonly, copy) NSUnitElectricPotentialDifference *volts; +@property (class, readonly, copy) NSUnitElectricPotentialDifference *millivolts; +@property (class, readonly, copy) NSUnitElectricPotentialDifference *microvolts; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitElectricResistance +#define _REWRITER_typedef_NSUnitElectricResistance +typedef struct objc_object NSUnitElectricResistance; +typedef struct {} _objc_exc_NSUnitElectricResistance; +#endif + +struct NSUnitElectricResistance_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitElectricResistance *megaohms; +@property (class, readonly, copy) NSUnitElectricResistance *kiloohms; +@property (class, readonly, copy) NSUnitElectricResistance *ohms; +@property (class, readonly, copy) NSUnitElectricResistance *milliohms; +@property (class, readonly, copy) NSUnitElectricResistance *microohms; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitEnergy +#define _REWRITER_typedef_NSUnitEnergy +typedef struct objc_object NSUnitEnergy; +typedef struct {} _objc_exc_NSUnitEnergy; +#endif + +struct NSUnitEnergy_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitEnergy *kilojoules; +@property (class, readonly, copy) NSUnitEnergy *joules; +@property (class, readonly, copy) NSUnitEnergy *kilocalories; +@property (class, readonly, copy) NSUnitEnergy *calories; +@property (class, readonly, copy) NSUnitEnergy *kilowattHours; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitFrequency +#define _REWRITER_typedef_NSUnitFrequency +typedef struct objc_object NSUnitFrequency; +typedef struct {} _objc_exc_NSUnitFrequency; +#endif + +struct NSUnitFrequency_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitFrequency *terahertz; +@property (class, readonly, copy) NSUnitFrequency *gigahertz; +@property (class, readonly, copy) NSUnitFrequency *megahertz; +@property (class, readonly, copy) NSUnitFrequency *kilohertz; +@property (class, readonly, copy) NSUnitFrequency *hertz; +@property (class, readonly, copy) NSUnitFrequency *millihertz; +@property (class, readonly, copy) NSUnitFrequency *microhertz; +@property (class, readonly, copy) NSUnitFrequency *nanohertz; + + +@property (class, readonly, copy) NSUnitFrequency *framesPerSecond __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitFuelEfficiency +#define _REWRITER_typedef_NSUnitFuelEfficiency +typedef struct objc_object NSUnitFuelEfficiency; +typedef struct {} _objc_exc_NSUnitFuelEfficiency; +#endif + +struct NSUnitFuelEfficiency_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitFuelEfficiency *litersPer100Kilometers; +@property (class, readonly, copy) NSUnitFuelEfficiency *milesPerImperialGallon; +@property (class, readonly, copy) NSUnitFuelEfficiency *milesPerGallon; + +/* @end */ + + + + + + + + +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) +__attribute__((swift_name("UnitInformationStorage"))) + +#ifndef _REWRITER_typedef_NSUnitInformationStorage +#define _REWRITER_typedef_NSUnitInformationStorage +typedef struct objc_object NSUnitInformationStorage; +typedef struct {} _objc_exc_NSUnitInformationStorage; +#endif + +struct NSUnitInformationStorage_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + +@property (readonly, class, copy) NSUnitInformationStorage *bytes; + + +@property (readonly, class, copy) NSUnitInformationStorage *bits; +@property (readonly, class, copy) NSUnitInformationStorage *nibbles; + + + +@property (readonly, class, copy) NSUnitInformationStorage *yottabytes; +@property (readonly, class, copy) NSUnitInformationStorage *zettabytes; +@property (readonly, class, copy) NSUnitInformationStorage *exabytes; +@property (readonly, class, copy) NSUnitInformationStorage *petabytes; +@property (readonly, class, copy) NSUnitInformationStorage *terabytes; +@property (readonly, class, copy) NSUnitInformationStorage *gigabytes; +@property (readonly, class, copy) NSUnitInformationStorage *megabytes; +@property (readonly, class, copy) NSUnitInformationStorage *kilobytes; + +@property (readonly, class, copy) NSUnitInformationStorage *yottabits; +@property (readonly, class, copy) NSUnitInformationStorage *zettabits; +@property (readonly, class, copy) NSUnitInformationStorage *exabits; +@property (readonly, class, copy) NSUnitInformationStorage *petabits; +@property (readonly, class, copy) NSUnitInformationStorage *terabits; +@property (readonly, class, copy) NSUnitInformationStorage *gigabits; +@property (readonly, class, copy) NSUnitInformationStorage *megabits; +@property (readonly, class, copy) NSUnitInformationStorage *kilobits; + + + +@property (readonly, class, copy) NSUnitInformationStorage *yobibytes; +@property (readonly, class, copy) NSUnitInformationStorage *zebibytes; +@property (readonly, class, copy) NSUnitInformationStorage *exbibytes; +@property (readonly, class, copy) NSUnitInformationStorage *pebibytes; +@property (readonly, class, copy) NSUnitInformationStorage *tebibytes; +@property (readonly, class, copy) NSUnitInformationStorage *gibibytes; +@property (readonly, class, copy) NSUnitInformationStorage *mebibytes; +@property (readonly, class, copy) NSUnitInformationStorage *kibibytes; + +@property (readonly, class, copy) NSUnitInformationStorage *yobibits; +@property (readonly, class, copy) NSUnitInformationStorage *zebibits; +@property (readonly, class, copy) NSUnitInformationStorage *exbibits; +@property (readonly, class, copy) NSUnitInformationStorage *pebibits; +@property (readonly, class, copy) NSUnitInformationStorage *tebibits; +@property (readonly, class, copy) NSUnitInformationStorage *gibibits; +@property (readonly, class, copy) NSUnitInformationStorage *mebibits; +@property (readonly, class, copy) NSUnitInformationStorage *kibibits; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitLength +#define _REWRITER_typedef_NSUnitLength +typedef struct objc_object NSUnitLength; +typedef struct {} _objc_exc_NSUnitLength; +#endif + +struct NSUnitLength_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitLength *megameters; +@property (class, readonly, copy) NSUnitLength *kilometers; +@property (class, readonly, copy) NSUnitLength *hectometers; +@property (class, readonly, copy) NSUnitLength *decameters; +@property (class, readonly, copy) NSUnitLength *meters; +@property (class, readonly, copy) NSUnitLength *decimeters; +@property (class, readonly, copy) NSUnitLength *centimeters; +@property (class, readonly, copy) NSUnitLength *millimeters; +@property (class, readonly, copy) NSUnitLength *micrometers; +@property (class, readonly, copy) NSUnitLength *nanometers; +@property (class, readonly, copy) NSUnitLength *picometers; +@property (class, readonly, copy) NSUnitLength *inches; +@property (class, readonly, copy) NSUnitLength *feet; +@property (class, readonly, copy) NSUnitLength *yards; +@property (class, readonly, copy) NSUnitLength *miles; +@property (class, readonly, copy) NSUnitLength *scandinavianMiles; +@property (class, readonly, copy) NSUnitLength *lightyears; +@property (class, readonly, copy) NSUnitLength *nauticalMiles; +@property (class, readonly, copy) NSUnitLength *fathoms; +@property (class, readonly, copy) NSUnitLength *furlongs; +@property (class, readonly, copy) NSUnitLength *astronomicalUnits; +@property (class, readonly, copy) NSUnitLength *parsecs; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitIlluminance +#define _REWRITER_typedef_NSUnitIlluminance +typedef struct objc_object NSUnitIlluminance; +typedef struct {} _objc_exc_NSUnitIlluminance; +#endif + +struct NSUnitIlluminance_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitIlluminance *lux; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitMass +#define _REWRITER_typedef_NSUnitMass +typedef struct objc_object NSUnitMass; +typedef struct {} _objc_exc_NSUnitMass; +#endif + +struct NSUnitMass_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitMass *kilograms; +@property (class, readonly, copy) NSUnitMass *grams; +@property (class, readonly, copy) NSUnitMass *decigrams; +@property (class, readonly, copy) NSUnitMass *centigrams; +@property (class, readonly, copy) NSUnitMass *milligrams; +@property (class, readonly, copy) NSUnitMass *micrograms; +@property (class, readonly, copy) NSUnitMass *nanograms; +@property (class, readonly, copy) NSUnitMass *picograms; +@property (class, readonly, copy) NSUnitMass *ounces; +@property (class, readonly, copy) NSUnitMass *poundsMass; +@property (class, readonly, copy) NSUnitMass *stones; +@property (class, readonly, copy) NSUnitMass *metricTons; +@property (class, readonly, copy) NSUnitMass *shortTons; +@property (class, readonly, copy) NSUnitMass *carats; +@property (class, readonly, copy) NSUnitMass *ouncesTroy; +@property (class, readonly, copy) NSUnitMass *slugs; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitPower +#define _REWRITER_typedef_NSUnitPower +typedef struct objc_object NSUnitPower; +typedef struct {} _objc_exc_NSUnitPower; +#endif + +struct NSUnitPower_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitPower *terawatts; +@property (class, readonly, copy) NSUnitPower *gigawatts; +@property (class, readonly, copy) NSUnitPower *megawatts; +@property (class, readonly, copy) NSUnitPower *kilowatts; +@property (class, readonly, copy) NSUnitPower *watts; +@property (class, readonly, copy) NSUnitPower *milliwatts; +@property (class, readonly, copy) NSUnitPower *microwatts; +@property (class, readonly, copy) NSUnitPower *nanowatts; +@property (class, readonly, copy) NSUnitPower *picowatts; +@property (class, readonly, copy) NSUnitPower *femtowatts; +@property (class, readonly, copy) NSUnitPower *horsepower; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitPressure +#define _REWRITER_typedef_NSUnitPressure +typedef struct objc_object NSUnitPressure; +typedef struct {} _objc_exc_NSUnitPressure; +#endif + +struct NSUnitPressure_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitPressure *newtonsPerMetersSquared; +@property (class, readonly, copy) NSUnitPressure *gigapascals; +@property (class, readonly, copy) NSUnitPressure *megapascals; +@property (class, readonly, copy) NSUnitPressure *kilopascals; +@property (class, readonly, copy) NSUnitPressure *hectopascals; +@property (class, readonly, copy) NSUnitPressure *inchesOfMercury; +@property (class, readonly, copy) NSUnitPressure *bars; +@property (class, readonly, copy) NSUnitPressure *millibars; +@property (class, readonly, copy) NSUnitPressure *millimetersOfMercury; +@property (class, readonly, copy) NSUnitPressure *poundsForcePerSquareInch; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitSpeed +#define _REWRITER_typedef_NSUnitSpeed +typedef struct objc_object NSUnitSpeed; +typedef struct {} _objc_exc_NSUnitSpeed; +#endif + +struct NSUnitSpeed_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitSpeed *metersPerSecond; +@property (class, readonly, copy) NSUnitSpeed *kilometersPerHour; +@property (class, readonly, copy) NSUnitSpeed *milesPerHour; +@property (class, readonly, copy) NSUnitSpeed *knots; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitTemperature +#define _REWRITER_typedef_NSUnitTemperature +typedef struct objc_object NSUnitTemperature; +typedef struct {} _objc_exc_NSUnitTemperature; +#endif + +struct NSUnitTemperature_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + +@property (class, readonly, copy) NSUnitTemperature *kelvin; +@property (class, readonly, copy) NSUnitTemperature *celsius; +@property (class, readonly, copy) NSUnitTemperature *fahrenheit; + + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSUnitVolume +#define _REWRITER_typedef_NSUnitVolume +typedef struct objc_object NSUnitVolume; +typedef struct {} _objc_exc_NSUnitVolume; +#endif + +struct NSUnitVolume_IMPL { + struct NSDimension_IMPL NSDimension_IVARS; +}; + + + + + +@property (class, readonly, copy) NSUnitVolume *megaliters; +@property (class, readonly, copy) NSUnitVolume *kiloliters; +@property (class, readonly, copy) NSUnitVolume *liters; +@property (class, readonly, copy) NSUnitVolume *deciliters; +@property (class, readonly, copy) NSUnitVolume *centiliters; +@property (class, readonly, copy) NSUnitVolume *milliliters; +@property (class, readonly, copy) NSUnitVolume *cubicKilometers; +@property (class, readonly, copy) NSUnitVolume *cubicMeters; +@property (class, readonly, copy) NSUnitVolume *cubicDecimeters; +@property (class, readonly, copy) NSUnitVolume *cubicCentimeters; +@property (class, readonly, copy) NSUnitVolume *cubicMillimeters; +@property (class, readonly, copy) NSUnitVolume *cubicInches; +@property (class, readonly, copy) NSUnitVolume *cubicFeet; +@property (class, readonly, copy) NSUnitVolume *cubicYards; +@property (class, readonly, copy) NSUnitVolume *cubicMiles; +@property (class, readonly, copy) NSUnitVolume *acreFeet; +@property (class, readonly, copy) NSUnitVolume *bushels; +@property (class, readonly, copy) NSUnitVolume *teaspoons; +@property (class, readonly, copy) NSUnitVolume *tablespoons; +@property (class, readonly, copy) NSUnitVolume *fluidOunces; +@property (class, readonly, copy) NSUnitVolume *cups; +@property (class, readonly, copy) NSUnitVolume *pints; +@property (class, readonly, copy) NSUnitVolume *quarts; +@property (class, readonly, copy) NSUnitVolume *gallons; +@property (class, readonly, copy) NSUnitVolume *imperialTeaspoons; +@property (class, readonly, copy) NSUnitVolume *imperialTablespoons; +@property (class, readonly, copy) NSUnitVolume *imperialFluidOunces; +@property (class, readonly, copy) NSUnitVolume *imperialPints; +@property (class, readonly, copy) NSUnitVolume *imperialQuarts; +@property (class, readonly, copy) NSUnitVolume *imperialGallons; +@property (class, readonly, copy) NSUnitVolume *metricCups; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSMeasurement +#define _REWRITER_typedef_NSMeasurement +typedef struct objc_object NSMeasurement; +typedef struct {} _objc_exc_NSMeasurement; +#endif + +struct NSMeasurement_IMPL { + struct NSObject_IMPL NSObject_IVARS; + UnitType _unit; + double _doubleValue; +}; + + +// @property (readonly, copy) UnitType unit; +// @property (readonly) double doubleValue; + +// - (instancetype)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (instancetype)initWithDoubleValue:(double)doubleValue unit:(UnitType)unit __attribute__((objc_designated_initializer)); + + + + + +// - (BOOL)canBeConvertedToUnit:(NSUnit *)unit; + + + + + + +// - (NSMeasurement *)measurementByConvertingToUnit:(NSUnit *)unit; + + + + + + +// - (NSMeasurement *)measurementByAddingMeasurement:(NSMeasurement *)measurement; +// - (NSMeasurement *)measurementBySubtractingMeasurement:(NSMeasurement *)measurement; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + +// @class NSLocale; +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSRecursiveLock +#define _REWRITER_typedef_NSRecursiveLock +typedef struct objc_object NSRecursiveLock; +typedef struct {} _objc_exc_NSRecursiveLock; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSCache +#define _REWRITER_typedef_NSCache +typedef struct objc_object NSCache; +typedef struct {} _objc_exc_NSCache; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSNumberFormatterBehavior; enum { + NSNumberFormatterBehaviorDefault = 0, + + + + NSNumberFormatterBehavior10_4 = 1040, +}; + + +#ifndef _REWRITER_typedef_NSNumberFormatter +#define _REWRITER_typedef_NSNumberFormatter +typedef struct objc_object NSNumberFormatter; +typedef struct {} _objc_exc_NSNumberFormatter; +#endif + +struct NSNumberFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + NSMutableDictionary *_attributes; + CFNumberFormatterRef _formatter; + NSUInteger _counter; + NSNumberFormatterBehavior _behavior; + NSRecursiveLock *_lock; + unsigned long _stateBitMask; + NSInteger _cacheGeneration; + void *_reserved[8]; +}; + + +// @property NSFormattingContext formattingContext __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string range:(inout nullable NSRange *)rangep error:(out NSError **)error; + + + + +// - (nullable NSString *)stringFromNumber:(NSNumber *)number; +// - (nullable NSNumber *)numberFromString:(NSString *)string; + +typedef NSUInteger NSNumberFormatterStyle; enum { + NSNumberFormatterNoStyle = kCFNumberFormatterNoStyle, + NSNumberFormatterDecimalStyle = kCFNumberFormatterDecimalStyle, + NSNumberFormatterCurrencyStyle = kCFNumberFormatterCurrencyStyle, + NSNumberFormatterPercentStyle = kCFNumberFormatterPercentStyle, + NSNumberFormatterScientificStyle = kCFNumberFormatterScientificStyle, + NSNumberFormatterSpellOutStyle = kCFNumberFormatterSpellOutStyle, + NSNumberFormatterOrdinalStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFNumberFormatterOrdinalStyle, + NSNumberFormatterCurrencyISOCodeStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFNumberFormatterCurrencyISOCodeStyle, + NSNumberFormatterCurrencyPluralStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFNumberFormatterCurrencyPluralStyle, + NSNumberFormatterCurrencyAccountingStyle __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = kCFNumberFormatterCurrencyAccountingStyle, +}; + +// + (NSString *)localizedStringFromNumber:(NSNumber *)num numberStyle:(NSNumberFormatterStyle)nstyle __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (NSNumberFormatterBehavior)defaultFormatterBehavior; +// + (void)setDefaultFormatterBehavior:(NSNumberFormatterBehavior)behavior; + +// @property NSNumberFormatterStyle numberStyle; +// @property (null_resettable, copy) NSLocale *locale; +// @property BOOL generatesDecimalNumbers; +// @property NSNumberFormatterBehavior formatterBehavior; + +// @property (null_resettable, copy) NSString *negativeFormat; +// @property (nullable, copy) NSDictionary *textAttributesForNegativeValues; +// @property (null_resettable, copy) NSString *positiveFormat; +// @property (nullable, copy) NSDictionary *textAttributesForPositiveValues; +// @property BOOL allowsFloats; +// @property (null_resettable, copy) NSString *decimalSeparator; +// @property BOOL alwaysShowsDecimalSeparator; +// @property (null_resettable, copy) NSString *currencyDecimalSeparator; +// @property BOOL usesGroupingSeparator; +// @property (null_resettable, copy) NSString *groupingSeparator; + +// @property (nullable, copy) NSString *zeroSymbol; +// @property (nullable, copy) NSDictionary *textAttributesForZero; +// @property (copy) NSString *nilSymbol; +// @property (nullable, copy) NSDictionary *textAttributesForNil; +// @property (null_resettable, copy) NSString *notANumberSymbol; +// @property (nullable, copy) NSDictionary *textAttributesForNotANumber; +// @property (copy) NSString *positiveInfinitySymbol; +// @property (nullable, copy) NSDictionary *textAttributesForPositiveInfinity; +// @property (copy) NSString *negativeInfinitySymbol; +// @property (nullable, copy) NSDictionary *textAttributesForNegativeInfinity; + +// @property (null_resettable, copy) NSString *positivePrefix; +// @property (null_resettable, copy) NSString *positiveSuffix; +// @property (null_resettable, copy) NSString *negativePrefix; +// @property (null_resettable, copy) NSString *negativeSuffix; +// @property (null_resettable, copy) NSString *currencyCode; +// @property (null_resettable, copy) NSString *currencySymbol; +// @property (null_resettable, copy) NSString *internationalCurrencySymbol; +// @property (null_resettable, copy) NSString *percentSymbol; +// @property (null_resettable, copy) NSString *perMillSymbol; +// @property (null_resettable, copy) NSString *minusSign; +// @property (null_resettable, copy) NSString *plusSign; +// @property (null_resettable, copy) NSString *exponentSymbol; + +// @property NSUInteger groupingSize; +// @property NSUInteger secondaryGroupingSize; +// @property (nullable, copy) NSNumber *multiplier; +// @property NSUInteger formatWidth; +// @property (null_resettable, copy) NSString *paddingCharacter; + + +typedef NSUInteger NSNumberFormatterPadPosition; enum { + NSNumberFormatterPadBeforePrefix = kCFNumberFormatterPadBeforePrefix, + NSNumberFormatterPadAfterPrefix = kCFNumberFormatterPadAfterPrefix, + NSNumberFormatterPadBeforeSuffix = kCFNumberFormatterPadBeforeSuffix, + NSNumberFormatterPadAfterSuffix = kCFNumberFormatterPadAfterSuffix +}; + +typedef NSUInteger NSNumberFormatterRoundingMode; enum { + NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling, + NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor, + NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown, + NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp, + NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven, + NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown, + NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp +}; + +// @property NSNumberFormatterPadPosition paddingPosition; +// @property NSNumberFormatterRoundingMode roundingMode; +// @property (null_resettable, copy) NSNumber *roundingIncrement; +// @property NSUInteger minimumIntegerDigits; +// @property NSUInteger maximumIntegerDigits; +// @property NSUInteger minimumFractionDigits; +// @property NSUInteger maximumFractionDigits; +// @property (nullable, copy) NSNumber *minimum; +// @property (nullable, copy) NSNumber *maximum; +// @property (null_resettable, copy) NSString *currencyGroupingSeparator __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (getter=isLenient) BOOL lenient __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property BOOL usesSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSUInteger minimumSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property NSUInteger maximumSignificantDigits __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (getter=isPartialStringValidationEnabled) BOOL partialStringValidationEnabled __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @class NSDecimalNumberHandler; +#ifndef _REWRITER_typedef_NSDecimalNumberHandler +#define _REWRITER_typedef_NSDecimalNumberHandler +typedef struct objc_object NSDecimalNumberHandler; +typedef struct {} _objc_exc_NSDecimalNumberHandler; +#endif + +#pragma clang assume_nonnull end + + + + + + + + + +// @class NSCalendar; +#ifndef _REWRITER_typedef_NSCalendar +#define _REWRITER_typedef_NSCalendar +typedef struct objc_object NSCalendar; +typedef struct {} _objc_exc_NSCalendar; +#endif + + +typedef NSString * NSLocaleKey __attribute__((swift_wrapper(enum))); + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +struct NSLocale_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (nullable id)objectForKey:(NSLocaleKey)key; + +// - (nullable NSString *)displayNameForKey:(NSLocaleKey)key value:(id)value; + +// - (instancetype)initWithLocaleIdentifier:(NSString *)string __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSLocale (NSExtendedLocale) + +// @property (readonly, copy) NSString *localeIdentifier; +// - (NSString *)localizedStringForLocaleIdentifier:(NSString *)localeIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *languageCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForLanguageCode:(NSString *)languageCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (nullable, readonly, copy) NSString *countryCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForCountryCode:(NSString *)countryCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (nullable, readonly, copy) NSString *scriptCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForScriptCode:(NSString *)scriptCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (nullable, readonly, copy) NSString *variantCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForVariantCode:(NSString *)variantCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSCharacterSet *exemplarCharacterSet __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *calendarIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForCalendarIdentifier:(NSString *)calendarIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (nullable, readonly, copy) NSString *collationIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForCollationIdentifier:(NSString *)collationIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly) BOOL usesMetricSystem __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *decimalSeparator __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *groupingSeparator __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *currencySymbol __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (nullable, readonly, copy) NSString *currencyCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForCurrencyCode:(NSString *)currencyCode __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *collatorIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// - (nullable NSString *)localizedStringForCollatorIdentifier:(NSString *)collatorIdentifier __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *quotationBeginDelimiter __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *quotationEndDelimiter __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *alternateQuotationBeginDelimiter __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, copy) NSString *alternateQuotationEndDelimiter __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + + +// @interface NSLocale (NSLocaleCreation) + +@property (class, readonly, strong) NSLocale *autoupdatingCurrentLocale __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +@property (class, readonly, copy) NSLocale *currentLocale; +@property (class, readonly, copy) NSLocale *systemLocale; + +// + (instancetype)localeWithLocaleIdentifier:(NSString *)ident __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (instancetype)init __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @interface NSLocale (NSLocaleGeneralInfo) + +@property (class, readonly, copy) NSArray *availableLocaleIdentifiers; +@property (class, readonly, copy) NSArray *ISOLanguageCodes; +@property (class, readonly, copy) NSArray *ISOCountryCodes; +@property (class, readonly, copy) NSArray *ISOCurrencyCodes; +@property (class, readonly, copy) NSArray *commonISOCurrencyCodes __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +@property (class, readonly, copy) NSArray *preferredLanguages __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSDictionary *)componentsFromLocaleIdentifier:(NSString *)string; +// + (NSString *)localeIdentifierFromComponents:(NSDictionary *)dict; + +// + (NSString *)canonicalLocaleIdentifierFromString:(NSString *)string; +// + (NSString *)canonicalLanguageIdentifierFromString:(NSString *)string; + +// + (nullable NSString *)localeIdentifierFromWindowsLocaleCode:(uint32_t)lcid __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (uint32_t)windowsLocaleCodeFromLocaleIdentifier:(NSString *)localeIdentifier __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSLocaleLanguageDirection; enum { + NSLocaleLanguageDirectionUnknown = kCFLocaleLanguageDirectionUnknown, + NSLocaleLanguageDirectionLeftToRight = kCFLocaleLanguageDirectionLeftToRight, + NSLocaleLanguageDirectionRightToLeft = kCFLocaleLanguageDirectionRightToLeft, + NSLocaleLanguageDirectionTopToBottom = kCFLocaleLanguageDirectionTopToBottom, + NSLocaleLanguageDirectionBottomToTop = kCFLocaleLanguageDirectionBottomToTop +}; + +// + (NSLocaleLanguageDirection)characterDirectionForLanguage:(NSString *)isoLangCode __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSLocaleLanguageDirection)lineDirectionForLanguage:(NSString *)isoLangCode __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +extern "C" NSNotificationName const NSCurrentLocaleDidChangeNotification __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSLocaleKey const NSLocaleIdentifier; +extern "C" NSLocaleKey const NSLocaleLanguageCode; +extern "C" NSLocaleKey const NSLocaleCountryCode; +extern "C" NSLocaleKey const NSLocaleScriptCode; +extern "C" NSLocaleKey const NSLocaleVariantCode; +extern "C" NSLocaleKey const NSLocaleExemplarCharacterSet; +extern "C" NSLocaleKey const NSLocaleCalendar; +extern "C" NSLocaleKey const NSLocaleCollationIdentifier; +extern "C" NSLocaleKey const NSLocaleUsesMetricSystem; +extern "C" NSLocaleKey const NSLocaleMeasurementSystem; +extern "C" NSLocaleKey const NSLocaleDecimalSeparator; +extern "C" NSLocaleKey const NSLocaleGroupingSeparator; +extern "C" NSLocaleKey const NSLocaleCurrencySymbol; +extern "C" NSLocaleKey const NSLocaleCurrencyCode; +extern "C" NSLocaleKey const NSLocaleCollatorIdentifier __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLocaleKey const NSLocaleQuotationBeginDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLocaleKey const NSLocaleQuotationEndDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLocaleKey const NSLocaleAlternateQuotationBeginDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLocaleKey const NSLocaleAlternateQuotationEndDelimiterKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSGregorianCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierGregorian"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierGregorian"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierGregorian"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierGregorian"))); +extern "C" NSString * const NSBuddhistCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierBuddhist"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierBuddhist"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierBuddhist"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierBuddhist"))); +extern "C" NSString * const NSChineseCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierChinese"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierChinese"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierChinese"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierChinese"))); +extern "C" NSString * const NSHebrewCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierHebrew"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierHebrew"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierHebrew"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierHebrew"))); +extern "C" NSString * const NSIslamicCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierIslamic"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierIslamic"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierIslamic"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierIslamic"))); +extern "C" NSString * const NSIslamicCivilCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierIslamicCivil"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierIslamicCivil"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierIslamicCivil"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierIslamicCivil"))); +extern "C" NSString * const NSJapaneseCalendar __attribute__((availability(macos,introduced=10.4,deprecated=10.10,replacement="NSCalendarIdentifierJapanese"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="NSCalendarIdentifierJapanese"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierJapanese"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierJapanese"))); +extern "C" NSString * const NSRepublicOfChinaCalendar __attribute__((availability(macos,introduced=10.6,deprecated=10.10,replacement="NSCalendarIdentifierRepublicOfChina"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarIdentifierRepublicOfChina"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierRepublicOfChina"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierRepublicOfChina"))); +extern "C" NSString * const NSPersianCalendar __attribute__((availability(macos,introduced=10.6,deprecated=10.10,replacement="NSCalendarIdentifierPersian"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarIdentifierPersian"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierPersian"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierPersian"))); +extern "C" NSString * const NSIndianCalendar __attribute__((availability(macos,introduced=10.6,deprecated=10.10,replacement="NSCalendarIdentifierIndian"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarIdentifierIndian"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierIndian"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierIndian"))); +extern "C" NSString * const NSISO8601Calendar __attribute__((availability(macos,introduced=10.6,deprecated=10.10,replacement="NSCalendarIdentifierISO8601"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,replacement="NSCalendarIdentifierISO8601"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="NSCalendarIdentifierISO8601"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="NSCalendarIdentifierISO8601"))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSMeasurementFormatterUnitOptions; enum { + NSMeasurementFormatterUnitOptionsProvidedUnit = (1UL << 0), + NSMeasurementFormatterUnitOptionsNaturalScale = (1UL << 1), + NSMeasurementFormatterUnitOptionsTemperatureWithoutUnit = (1UL << 2), +} __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSMeasurementFormatter +#define _REWRITER_typedef_NSMeasurementFormatter +typedef struct objc_object NSMeasurementFormatter; +typedef struct {} _objc_exc_NSMeasurementFormatter; +#endif + +struct NSMeasurementFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + void *_formatter; +}; + +// @property NSMeasurementFormatterUnitOptions unitOptions; + + + + +// @property NSFormattingUnitStyle unitStyle; + + + + +// @property (null_resettable, copy) NSLocale *locale; + + + + +// @property (null_resettable, copy) NSNumberFormatter *numberFormatter; + +// - (NSString *)stringFromMeasurement:(NSMeasurement *)measurement; + + + + + +// - (NSString *)stringFromUnit:(NSUnit *)unit; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPersonNameComponents +#define _REWRITER_typedef_NSPersonNameComponents +typedef struct objc_object NSPersonNameComponents; +typedef struct {} _objc_exc_NSPersonNameComponents; +#endif + +struct NSPersonNameComponents_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _private; +}; + + + + + +// @property (copy, nullable) NSString *namePrefix; + + +// @property (copy, nullable) NSString *givenName; + + +// @property (copy, nullable) NSString *middleName; + + +// @property (copy, nullable) NSString *familyName; + + +// @property (copy, nullable) NSString *nameSuffix; + + +// @property (copy, nullable) NSString *nickname; + + + + +// @property (copy, nullable) NSPersonNameComponents *phoneticRepresentation; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSPersonNameComponentsFormatterStyle; enum { + NSPersonNameComponentsFormatterStyleDefault = 0, + + + + NSPersonNameComponentsFormatterStyleShort, + + + NSPersonNameComponentsFormatterStyleMedium, + + + NSPersonNameComponentsFormatterStyleLong, + + + NSPersonNameComponentsFormatterStyleAbbreviated +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSPersonNameComponentsFormatterOptions; enum { + + + + + NSPersonNameComponentsFormatterPhonetic = (1UL << 1) +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPersonNameComponentsFormatter +#define _REWRITER_typedef_NSPersonNameComponentsFormatter +typedef struct objc_object NSPersonNameComponentsFormatter; +typedef struct {} _objc_exc_NSPersonNameComponentsFormatter; +#endif + +struct NSPersonNameComponentsFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + id _private; +}; + + + + +// @property NSPersonNameComponentsFormatterStyle style; + + + +// @property (getter=isPhonetic) BOOL phonetic; + + + + +#if 0 ++ (NSString *)localizedStringFromPersonNameComponents:(NSPersonNameComponents *)components + style:(NSPersonNameComponentsFormatterStyle)nameFormatStyle + options:(NSPersonNameComponentsFormatterOptions)nameOptions; +#endif + + + + +// - (NSString *)stringFromPersonNameComponents:(NSPersonNameComponents *)components; + + + + +// - (NSAttributedString *)annotatedStringFromPersonNameComponents:(NSPersonNameComponents *)components; + + + + +// - (nullable NSPersonNameComponents *)personNameComponentsFromString:(nonnull NSString *)string __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; + +/* @end */ + + + +extern "C" NSString * const NSPersonNameComponentKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSString * const NSPersonNameComponentGivenName __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSPersonNameComponentFamilyName __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSPersonNameComponentMiddleName __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSPersonNameComponentPrefix __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSPersonNameComponentSuffix __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSPersonNameComponentNickname __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern "C" NSString * const NSPersonNameComponentDelimiter __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + +// @class NSCalendar; +#ifndef _REWRITER_typedef_NSCalendar +#define _REWRITER_typedef_NSCalendar +typedef struct objc_object NSCalendar; +typedef struct {} _objc_exc_NSCalendar; +#endif + +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + +#ifndef _REWRITER_typedef_NSDateComponents +#define _REWRITER_typedef_NSDateComponents +typedef struct objc_object NSDateComponents; +typedef struct {} _objc_exc_NSDateComponents; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSInteger NSRelativeDateTimeFormatterStyle; enum { + NSRelativeDateTimeFormatterStyleNumeric = 0, + NSRelativeDateTimeFormatterStyleNamed, +} __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +typedef NSInteger NSRelativeDateTimeFormatterUnitsStyle; enum { + NSRelativeDateTimeFormatterUnitsStyleFull = 0, + NSRelativeDateTimeFormatterUnitsStyleSpellOut, + NSRelativeDateTimeFormatterUnitsStyleShort, + NSRelativeDateTimeFormatterUnitsStyleAbbreviated, +} __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSRelativeDateTimeFormatter +#define _REWRITER_typedef_NSRelativeDateTimeFormatter +typedef struct objc_object NSRelativeDateTimeFormatter; +typedef struct {} _objc_exc_NSRelativeDateTimeFormatter; +#endif + +struct NSRelativeDateTimeFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; +}; + +// @property NSRelativeDateTimeFormatterStyle dateTimeStyle; + + + +// @property NSRelativeDateTimeFormatterUnitsStyle unitsStyle; + + + +// @property NSFormattingContext formattingContext; + + + +// @property (null_resettable, copy) NSCalendar *calendar; + + + +// @property (null_resettable, copy) NSLocale *locale; + + + + + +// - (NSString *)localizedStringFromDateComponents:(NSDateComponents *)dateComponents; + + + +// - (NSString *)localizedStringFromTimeInterval:(NSTimeInterval)timeInterval; + + + +// - (NSString *)localizedStringForDate:(NSDate *)date relativeToDate:(NSDate *)referenceDate; + + + +// - (nullable NSString *)stringForObjectValue:(nullable id)obj; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + + + +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSListFormatter +#define _REWRITER_typedef_NSListFormatter +typedef struct objc_object NSListFormatter; +typedef struct {} _objc_exc_NSListFormatter; +#endif + +struct NSListFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; +}; + +// @property (null_resettable, copy) NSLocale *locale; + + + +// @property (nullable, copy) NSFormatter *itemFormatter; + + + +// + (NSString *)localizedStringByJoiningStrings:(NSArray *)strings; + + + + + +// - (nullable NSString *)stringFromItems:(NSArray *)items; + + + +// - (nullable NSString *)stringForObjectValue:(nullable id)obj; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +#pragma clang assume_nonnull begin +typedef NSUInteger NSRoundingMode; enum { + NSRoundPlain, + NSRoundDown, + NSRoundUp, + NSRoundBankers +}; + +typedef NSUInteger NSCalculationError; enum { + NSCalculationNoError = 0, + NSCalculationLossOfPrecision, + NSCalculationUnderflow, + NSCalculationOverflow, + NSCalculationDivideByZero +}; + + + + + + +typedef struct { + signed int _exponent:8; + unsigned int _length:4; + unsigned int _isNegative:1; + unsigned int _isCompact:1; + unsigned int _reserved:18; + unsigned short _mantissa[(8)]; +} NSDecimal; + +static __inline__ __attribute__((always_inline)) BOOL NSDecimalIsNotANumber(const NSDecimal *dcm) + { return ((dcm->_length == 0) && dcm->_isNegative); } + + + +extern "C" void NSDecimalCopy(NSDecimal *destination, const NSDecimal *source); + +extern "C" void NSDecimalCompact(NSDecimal *number); + +extern "C" NSComparisonResult NSDecimalCompare(const NSDecimal *leftOperand, const NSDecimal *rightOperand); + + +extern "C" void NSDecimalRound(NSDecimal *result, const NSDecimal *number, NSInteger scale, NSRoundingMode roundingMode); + + + + +extern "C" NSCalculationError NSDecimalNormalize(NSDecimal *number1, NSDecimal *number2, NSRoundingMode roundingMode); + +extern "C" NSCalculationError NSDecimalAdd(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); + + +extern "C" NSCalculationError NSDecimalSubtract(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); + + +extern "C" NSCalculationError NSDecimalMultiply(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); + + +extern "C" NSCalculationError NSDecimalDivide(NSDecimal *result, const NSDecimal *leftOperand, const NSDecimal *rightOperand, NSRoundingMode roundingMode); + + + +extern "C" NSCalculationError NSDecimalPower(NSDecimal *result, const NSDecimal *number, NSUInteger power, NSRoundingMode roundingMode); + +extern "C" NSCalculationError NSDecimalMultiplyByPowerOf10(NSDecimal *result, const NSDecimal *number, short power, NSRoundingMode roundingMode); + +extern "C" NSString *NSDecimalString(const NSDecimal *dcm, id _Nullable locale); +#pragma clang assume_nonnull end + + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSCharacterSet +#define _REWRITER_typedef_NSCharacterSet +typedef struct objc_object NSCharacterSet; +typedef struct {} _objc_exc_NSCharacterSet; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + + + +#ifndef _REWRITER_typedef_NSScanner +#define _REWRITER_typedef_NSScanner +typedef struct objc_object NSScanner; +typedef struct {} _objc_exc_NSScanner; +#endif + +struct NSScanner_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, copy) NSString *string; +// @property NSUInteger scanLocation ; +// @property (nullable, copy) NSCharacterSet *charactersToBeSkipped; +// @property BOOL caseSensitive; +// @property (nullable, retain) id locale; + +// - (instancetype)initWithString:(NSString *)string __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSScanner (NSExtendedScanner) + + +// - (BOOL)scanInt:(nullable int *)result ; + +// - (BOOL)scanInteger:(nullable NSInteger *)result __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) ; + +// - (BOOL)scanLongLong:(nullable long long *)result; + +// - (BOOL)scanUnsignedLongLong:(nullable unsigned long long *)result __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) ; + +// - (BOOL)scanFloat:(nullable float *)result ; + +// - (BOOL)scanDouble:(nullable double *)result ; + +#if 0 +- (BOOL)scanHexInt:(nullable unsigned *)result + ; +#endif + + +#if 0 +- (BOOL)scanHexLongLong:(nullable unsigned long long *)result __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + ; +#endif + + +#if 0 +- (BOOL)scanHexFloat:(nullable float *)result __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + ; +#endif + + +#if 0 +- (BOOL)scanHexDouble:(nullable double *)result __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + ; +#endif + + +// - (BOOL)scanString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result ; + +// - (BOOL)scanCharactersFromSet:(NSCharacterSet *)set intoString:(NSString * _Nullable * _Nullable)result ; + +// - (BOOL)scanUpToString:(NSString *)string intoString:(NSString * _Nullable * _Nullable)result ; + +// - (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)set intoString:(NSString * _Nullable * _Nullable)result ; + +// @property (getter=isAtEnd, readonly) BOOL atEnd; + +// + (instancetype)scannerWithString:(NSString *)string; +// + (id)localizedScannerWithString:(NSString *)string; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" NSExceptionName const NSGenericException; +extern "C" NSExceptionName const NSRangeException; +extern "C" NSExceptionName const NSInvalidArgumentException; +extern "C" NSExceptionName const NSInternalInconsistencyException; + +extern "C" NSExceptionName const NSMallocException; + +extern "C" NSExceptionName const NSObjectInaccessibleException; +extern "C" NSExceptionName const NSObjectNotAvailableException; +extern "C" NSExceptionName const NSDestinationInvalidException; + +extern "C" NSExceptionName const NSPortTimeoutException; +extern "C" NSExceptionName const NSInvalidSendPortException; +extern "C" NSExceptionName const NSInvalidReceivePortException; +extern "C" NSExceptionName const NSPortSendException; +extern "C" NSExceptionName const NSPortReceiveException; + +extern "C" NSExceptionName const NSOldStyleException; + +extern "C" NSExceptionName const NSInconsistentArchiveException; + + + + +__attribute__((__objc_exception__)) + + +#ifndef _REWRITER_typedef_NSException +#define _REWRITER_typedef_NSException +typedef struct objc_object NSException; +typedef struct {} _objc_exc_NSException; +#endif + +struct NSException_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *name; + NSString *reason; + NSDictionary *userInfo; + id reserved; +}; + + +// + (NSException *)exceptionWithName:(NSExceptionName)name reason:(nullable NSString *)reason userInfo:(nullable NSDictionary *)userInfo; +// - (instancetype)initWithName:(NSExceptionName)aName reason:(nullable NSString *)aReason userInfo:(nullable NSDictionary *)aUserInfo __attribute__((objc_designated_initializer)); + +// @property (readonly, copy) NSExceptionName name; +// @property (nullable, readonly, copy) NSString *reason; +// @property (nullable, readonly, copy) NSDictionary *userInfo; + +// @property (readonly, copy) NSArray *callStackReturnAddresses __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *callStackSymbols __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)raise; + +/* @end */ + + +// @interface NSException (NSExceptionRaisingConveniences) + +// + (void)raise:(NSExceptionName)name format:(NSString *)format, ... __attribute__((format(__NSString__, 2, 3))); +// + (void)raise:(NSExceptionName)name format:(NSString *)format arguments:(va_list)argList __attribute__((format(__NSString__, 2, 0))); + +/* @end */ + +typedef void NSUncaughtExceptionHandler(NSException *exception); + +extern "C" NSUncaughtExceptionHandler * _Nullable NSGetUncaughtExceptionHandler(void); +extern "C" void NSSetUncaughtExceptionHandler(NSUncaughtExceptionHandler * _Nullable); +// @class NSAssertionHandler; +#ifndef _REWRITER_typedef_NSAssertionHandler +#define _REWRITER_typedef_NSAssertionHandler +typedef struct objc_object NSAssertionHandler; +typedef struct {} _objc_exc_NSAssertionHandler; +#endif + +extern "C" NSString * const NSAssertionHandlerKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSAssertionHandler +#define _REWRITER_typedef_NSAssertionHandler +typedef struct objc_object NSAssertionHandler; +typedef struct {} _objc_exc_NSAssertionHandler; +#endif + +struct NSAssertionHandler_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_reserved; +}; + + +@property (class, readonly, strong) NSAssertionHandler *currentHandler; + +// - (void)handleFailureInMethod:(SEL)selector object:(id)object file:(NSString *)fileName lineNumber:(NSInteger)line description:(nullable NSString *)format,... __attribute__((format(__NSString__, 5, 6))); + +// - (void)handleFailureInFunction:(NSString *)functionName file:(NSString *)fileName lineNumber:(NSInteger)line description:(nullable NSString *)format,... __attribute__((format(__NSString__, 4, 5))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + + +extern "C" NSExceptionName const NSDecimalNumberExactnessException; +extern "C" NSExceptionName const NSDecimalNumberOverflowException; +extern "C" NSExceptionName const NSDecimalNumberUnderflowException; +extern "C" NSExceptionName const NSDecimalNumberDivideByZeroException; + + + +// @class NSDecimalNumber; +#ifndef _REWRITER_typedef_NSDecimalNumber +#define _REWRITER_typedef_NSDecimalNumber +typedef struct objc_object NSDecimalNumber; +typedef struct {} _objc_exc_NSDecimalNumber; +#endif + + +// @protocol NSDecimalNumberBehaviors + +// - (NSRoundingMode)roundingMode; + +// - (short)scale; + + +// - (nullable NSDecimalNumber *)exceptionDuringOperation:(SEL)operation error:(NSCalculationError)error leftOperand:(NSDecimalNumber *)leftOperand rightOperand:(nullable NSDecimalNumber *)rightOperand; + + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSDecimalNumber +#define _REWRITER_typedef_NSDecimalNumber +typedef struct objc_object NSDecimalNumber; +typedef struct {} _objc_exc_NSDecimalNumber; +#endif + + struct NSDecimalNumber__T_1 { + int _exponent : 8; + unsigned int _length : 4; + unsigned int _isNegative : 1; + unsigned int _isCompact : 1; + unsigned int _reserved : 1; + unsigned int _hasExternalRefCount : 1; + unsigned int _refs : 16; + } ; +struct NSDecimalNumber_IMPL { + struct NSNumber_IMPL NSNumber_IVARS; + struct NSDecimalNumber__T_1 NSDecimalNumber__GRBF_1; + unsigned short _mantissa[0]; +}; + + +// - (instancetype)initWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag; +// - (instancetype)initWithDecimal:(NSDecimal)dcm __attribute__((objc_designated_initializer)); +// - (instancetype)initWithString:(nullable NSString *)numberValue; +// - (instancetype)initWithString:(nullable NSString *)numberValue locale:(nullable id)locale; + +// - (NSString *)descriptionWithLocale:(nullable id)locale; + +// @property (readonly) NSDecimal decimalValue; + +// + (NSDecimalNumber *)decimalNumberWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag; +// + (NSDecimalNumber *)decimalNumberWithDecimal:(NSDecimal)dcm; +// + (NSDecimalNumber *)decimalNumberWithString:(nullable NSString *)numberValue; +// + (NSDecimalNumber *)decimalNumberWithString:(nullable NSString *)numberValue locale:(nullable id)locale; + +@property (class, readonly, copy) NSDecimalNumber *zero; +@property (class, readonly, copy) NSDecimalNumber *one; +@property (class, readonly, copy) NSDecimalNumber *minimumDecimalNumber; +@property (class, readonly, copy) NSDecimalNumber *maximumDecimalNumber; +@property (class, readonly, copy) NSDecimalNumber *notANumber; + +// - (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber; +// - (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id )behavior; + +// - (NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber; +// - (NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id )behavior; + +// - (NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber; +// - (NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id )behavior; + +// - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber; +// - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id )behavior; + +// - (NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power; +// - (NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power withBehavior:(nullable id )behavior; + +// - (NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power; +// - (NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power withBehavior:(nullable id )behavior; + + +// - (NSDecimalNumber *)decimalNumberByRoundingAccordingToBehavior:(nullable id )behavior; + + +// - (NSComparisonResult)compare:(NSNumber *)decimalNumber; + + +@property (class, strong) id defaultBehavior; + + + + + + +// @property (readonly) const char *objCType __attribute__((objc_returns_inner_pointer)); + + +// @property (readonly) double doubleValue; + + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSDecimalNumberHandler +#define _REWRITER_typedef_NSDecimalNumberHandler +typedef struct objc_object NSDecimalNumberHandler; +typedef struct {} _objc_exc_NSDecimalNumberHandler; +#endif + + struct NSDecimalNumberHandler__T_1 { + int _scale : 16; + unsigned int _roundingMode : 3; + unsigned int _raiseOnExactness : 1; + unsigned int _raiseOnOverflow : 1; + unsigned int _raiseOnUnderflow : 1; + unsigned int _raiseOnDivideByZero : 1; + unsigned int _unused : 9; + } ; +struct NSDecimalNumberHandler_IMPL { + struct NSObject_IMPL NSObject_IVARS; + struct NSDecimalNumberHandler__T_1 NSDecimalNumberHandler__GRBF_1; + void *_reserved2; + void *_reserved; +}; + + +@property (class, readonly, strong) NSDecimalNumberHandler *defaultDecimalNumberHandler; + + + + + +// - (instancetype)initWithRoundingMode:(NSRoundingMode)roundingMode scale:(short)scale raiseOnExactness:(BOOL)exact raiseOnOverflow:(BOOL)overflow raiseOnUnderflow:(BOOL)underflow raiseOnDivideByZero:(BOOL)divideByZero __attribute__((objc_designated_initializer)); + +// + (instancetype)decimalNumberHandlerWithRoundingMode:(NSRoundingMode)roundingMode scale:(short)scale raiseOnExactness:(BOOL)exact raiseOnOverflow:(BOOL)overflow raiseOnUnderflow:(BOOL)underflow raiseOnDivideByZero:(BOOL)divideByZero; + +/* @end */ + + + + +// @interface NSNumber (NSDecimalNumberExtensions) + +// @property (readonly) NSDecimal decimalValue; + + +/* @end */ + + +// @interface NSScanner (NSDecimalNumberScanning) + +#if 0 +- (BOOL)scanDecimal:(nullable NSDecimal *)dcm + + + + ; +#endif + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +typedef NSString *NSErrorDomain; + +#pragma clang assume_nonnull begin + + +extern "C" NSErrorDomain const NSCocoaErrorDomain; + + +extern "C" NSErrorDomain const NSPOSIXErrorDomain; +extern "C" NSErrorDomain const NSOSStatusErrorDomain; +extern "C" NSErrorDomain const NSMachErrorDomain; + +typedef NSString *NSErrorUserInfoKey; + + +extern "C" NSErrorUserInfoKey const NSUnderlyingErrorKey; + + +extern "C" NSErrorUserInfoKey const NSLocalizedDescriptionKey; +extern "C" NSErrorUserInfoKey const NSLocalizedFailureReasonErrorKey; +extern "C" NSErrorUserInfoKey const NSLocalizedRecoverySuggestionErrorKey; +extern "C" NSErrorUserInfoKey const NSLocalizedRecoveryOptionsErrorKey; +extern "C" NSErrorUserInfoKey const NSRecoveryAttempterErrorKey; +extern "C" NSErrorUserInfoKey const NSHelpAnchorErrorKey; +extern "C" NSErrorUserInfoKey const NSDebugDescriptionErrorKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSErrorUserInfoKey const NSLocalizedFailureErrorKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +extern "C" NSErrorUserInfoKey const NSStringEncodingErrorKey ; +extern "C" NSErrorUserInfoKey const NSURLErrorKey; +extern "C" NSErrorUserInfoKey const NSFilePathErrorKey; + + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +struct NSError_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_reserved; + NSInteger _code; + NSString *_domain; + NSDictionary *_userInfo; +}; + + + + +// - (instancetype)initWithDomain:(NSErrorDomain)domain code:(NSInteger)code userInfo:(nullable NSDictionary *)dict __attribute__((objc_designated_initializer)); +// + (instancetype)errorWithDomain:(NSErrorDomain)domain code:(NSInteger)code userInfo:(nullable NSDictionary *)dict; + + + +// @property (readonly, copy) NSErrorDomain domain; +// @property (readonly) NSInteger code; + + + +// @property (readonly, copy) NSDictionary *userInfo; +// @property (readonly, copy) NSString *localizedDescription; + + + +// @property (nullable, readonly, copy) NSString *localizedFailureReason; + + + +// @property (nullable, readonly, copy) NSString *localizedRecoverySuggestion; + + + +// @property (nullable, readonly, copy) NSArray *localizedRecoveryOptions; + + + +// @property (nullable, readonly, strong) id recoveryAttempter; + + + +// @property (nullable, readonly, copy) NSString *helpAnchor; +// + (void)setUserInfoValueProviderForDomain:(NSErrorDomain)errorDomain provider:(id _Nullable (^ _Nullable)(NSError *err, NSErrorUserInfoKey userInfoKey))provider __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (id _Nullable (^ _Nullable)(NSError *err, NSErrorUserInfoKey userInfoKey))userInfoValueProviderForDomain:(NSErrorDomain)errorDomain __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +// @interface NSObject(NSErrorRecoveryAttempting) + + + + + + + +// - (void)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex delegate:(nullable id)delegate didRecoverSelector:(nullable SEL)didRecoverSelector contextInfo:(nullable void *)contextInfo; + + + +// - (BOOL)attemptRecoveryFromError:(NSError *)error optionIndex:(NSUInteger)recoveryOptionIndex; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + +// @class NSTimer; +#ifndef _REWRITER_typedef_NSTimer +#define _REWRITER_typedef_NSTimer +typedef struct objc_object NSTimer; +typedef struct {} _objc_exc_NSTimer; +#endif + +#ifndef _REWRITER_typedef_NSPort +#define _REWRITER_typedef_NSPort +typedef struct objc_object NSPort; +typedef struct {} _objc_exc_NSPort; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" NSRunLoopMode const NSDefaultRunLoopMode; +extern "C" NSRunLoopMode const NSRunLoopCommonModes __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + +struct NSRunLoop_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _rl; + id _dperf; + id _perft; + id _info; + id _ports; + void *_reserved[6]; +}; + + +@property (class, readonly, strong) NSRunLoop *currentRunLoop; +@property (class, readonly, strong) NSRunLoop *mainRunLoop __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, readonly, copy) NSRunLoopMode currentMode; + +// - (CFRunLoopRef)getCFRunLoop __attribute__((cf_returns_not_retained)); + +// - (void)addTimer:(NSTimer *)timer forMode:(NSRunLoopMode)mode; + +// - (void)addPort:(NSPort *)aPort forMode:(NSRunLoopMode)mode; +// - (void)removePort:(NSPort *)aPort forMode:(NSRunLoopMode)mode; + +// - (nullable NSDate *)limitDateForMode:(NSRunLoopMode)mode; +// - (void)acceptInputForMode:(NSRunLoopMode)mode beforeDate:(NSDate *)limitDate; + +/* @end */ + + +// @interface NSRunLoop (NSRunLoopConveniences) + +// - (void)run; +// - (void)runUntilDate:(NSDate *)limitDate; +// - (BOOL)runMode:(NSRunLoopMode)mode beforeDate:(NSDate *)limitDate; +// - (void)performInModes:(NSArray *)modes block:(void (^)(void))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + +// - (void)performBlock:(void (^)(void))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + + + + +// @interface NSObject (NSDelayedPerforming) + +// - (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay inModes:(NSArray *)modes; +// - (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay; +// + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget selector:(SEL)aSelector object:(nullable id)anArgument; +// + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget; + +/* @end */ + + +// @interface NSRunLoop (NSOrderedPerform) + +// - (void)performSelector:(SEL)aSelector target:(id)target argument:(nullable id)arg order:(NSUInteger)order modes:(NSArray *)modes; +// - (void)cancelPerformSelector:(SEL)aSelector target:(id)target argument:(nullable id)arg; +// - (void)cancelPerformSelectorsWithTarget:(id)target; + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSFileHandle +#define _REWRITER_typedef_NSFileHandle +typedef struct objc_object NSFileHandle; +typedef struct {} _objc_exc_NSFileHandle; +#endif + +struct NSFileHandle_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, copy) NSData *availableData; + +// - (instancetype)initWithFileDescriptor:(int)fd closeOnDealloc:(BOOL)closeopt __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +#if 0 +- (nullable NSData *)readDataToEndOfFileAndReturnError:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((swift_private)); +#endif + + +#if 0 +- (nullable NSData *)readDataUpToLength:(NSUInteger)length error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((swift_private)); +#endif + + +#if 0 +- (BOOL)writeData:(NSData *)data error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((swift_private)); +#endif + + +#if 0 +- (BOOL)getOffset:(out unsigned long long *)offsetInFile error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((swift_private)); +#endif + + +#if 0 +- (BOOL)seekToEndReturningOffset:(out unsigned long long *_Nullable)offsetInFile error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((swift_private)); +#endif + + +#if 0 +- (BOOL)seekToOffset:(unsigned long long)offset error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +#endif + + +#if 0 +- (BOOL)truncateAtOffset:(unsigned long long)offset error:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +#endif + + +#if 0 +- (BOOL)synchronizeAndReturnError:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +#endif + + +#if 0 +- (BOOL)closeAndReturnError:(out NSError **)error + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +#endif + + +/* @end */ + + +// @interface NSFileHandle (NSFileHandleCreation) + +@property (class, readonly, strong) NSFileHandle *fileHandleWithStandardInput; +@property (class, readonly, strong) NSFileHandle *fileHandleWithStandardOutput; +@property (class, readonly, strong) NSFileHandle *fileHandleWithStandardError; +@property (class, readonly, strong) NSFileHandle *fileHandleWithNullDevice; + +// + (nullable instancetype)fileHandleForReadingAtPath:(NSString *)path; +// + (nullable instancetype)fileHandleForWritingAtPath:(NSString *)path; +// + (nullable instancetype)fileHandleForUpdatingAtPath:(NSString *)path; + +// + (nullable instancetype)fileHandleForReadingFromURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (nullable instancetype)fileHandleForWritingToURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (nullable instancetype)fileHandleForUpdatingURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +extern "C" NSExceptionName const NSFileHandleOperationException; + +extern "C" NSNotificationName const NSFileHandleReadCompletionNotification; +extern "C" NSNotificationName const NSFileHandleReadToEndOfFileCompletionNotification; +extern "C" NSNotificationName const NSFileHandleConnectionAcceptedNotification; +extern "C" NSNotificationName const NSFileHandleDataAvailableNotification; + +extern "C" NSString * const NSFileHandleNotificationDataItem; +extern "C" NSString * const NSFileHandleNotificationFileHandleItem; +extern "C" NSString * const NSFileHandleNotificationMonitorModes __attribute__((availability(macos,introduced=10.0,deprecated=10.7,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + +// @interface NSFileHandle (NSFileHandleAsynchronousAccess) + +// - (void)readInBackgroundAndNotifyForModes:(nullable NSArray *)modes; +// - (void)readInBackgroundAndNotify; + +// - (void)readToEndOfFileInBackgroundAndNotifyForModes:(nullable NSArray *)modes; +// - (void)readToEndOfFileInBackgroundAndNotify; + +// - (void)acceptConnectionInBackgroundAndNotifyForModes:(nullable NSArray *)modes; +// - (void)acceptConnectionInBackgroundAndNotify; + +// - (void)waitForDataInBackgroundAndNotifyForModes:(nullable NSArray *)modes; +// - (void)waitForDataInBackgroundAndNotify; + + +// @property (nullable, copy) void (^readabilityHandler)(NSFileHandle *) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, copy) void (^writeabilityHandler)(NSFileHandle *) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +/* @end */ + + +// @interface NSFileHandle (NSFileHandlePlatformSpecific) + +// - (instancetype)initWithFileDescriptor:(int)fd; + +// @property (readonly) int fileDescriptor; + +/* @end */ + + +// @interface NSFileHandle ( ) + + + + +#if 0 +- (NSData *)readDataToEndOfFile + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="readDataToEndOfFileAndReturnError:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="readDataToEndOfFileAndReturnError:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="readDataToEndOfFileAndReturnError:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="readDataToEndOfFileAndReturnError:"))); +#endif + + + + +#if 0 +- (NSData *)readDataOfLength:(NSUInteger)length + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="readDataUpToLength:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="readDataUpToLength:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="readDataUpToLength:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="readDataUpToLength:error:"))); +#endif + + + + + +#if 0 +- (void)writeData:(NSData *)data + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="writeData:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="writeData:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="writeData:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="writeData:error:"))); +#endif + + + + + +// @property (readonly) unsigned long long offsetInFile + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="getOffset:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="getOffset:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="getOffset:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="getOffset:error:"))); + + + +#if 0 +- (unsigned long long)seekToEndOfFile + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="seekToEndReturningOffset:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="seekToEndReturningOffset:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="seekToEndReturningOffset:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="seekToEndReturningOffset:error:"))); +#endif + + + + +#if 0 +- (void)seekToFileOffset:(unsigned long long)offset + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="seekToOffset:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="seekToOffset:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="seekToOffset:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="seekToOffset:error:"))); +#endif + + + + + +#if 0 +- (void)truncateFileAtOffset:(unsigned long long)offset + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="truncateAtOffset:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="truncateAtOffset:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="truncateAtOffset:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="truncateAtOffset:error:"))); +#endif + + + + +#if 0 +- (void)synchronizeFile + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="synchronizeAndReturnError:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="synchronizeAndReturnError:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="synchronizeAndReturnError:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="synchronizeAndReturnError:"))); +#endif + + + + +#if 0 +- (void)closeFile + __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="closeAndReturnError:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="closeAndReturnError:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="closeAndReturnError:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="closeAndReturnError:"))); +#endif + + + + + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSPipe +#define _REWRITER_typedef_NSPipe +typedef struct objc_object NSPipe; +typedef struct {} _objc_exc_NSPipe; +#endif + +struct NSPipe_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, retain) NSFileHandle *fileHandleForReading; +// @property (readonly, retain) NSFileHandle *fileHandleForWriting; + +// + (NSPipe *)pipe; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + +#pragma clang assume_nonnull begin + +// @interface NSString (NSStringPathExtensions) + +// + (NSString *)pathWithComponents:(NSArray *)components; +// @property (readonly, copy) NSArray *pathComponents; + +// @property (getter=isAbsolutePath, readonly) BOOL absolutePath; + +// @property (readonly, copy) NSString *lastPathComponent; +// @property (readonly, copy) NSString *stringByDeletingLastPathComponent; +// - (NSString *)stringByAppendingPathComponent:(NSString *)str; + +// @property (readonly, copy) NSString *pathExtension; +// @property (readonly, copy) NSString *stringByDeletingPathExtension; +// - (nullable NSString *)stringByAppendingPathExtension:(NSString *)str; + +// @property (readonly, copy) NSString *stringByAbbreviatingWithTildeInPath; +// @property (readonly, copy) NSString *stringByExpandingTildeInPath; + +// @property (readonly, copy) NSString *stringByStandardizingPath; + +// @property (readonly, copy) NSString *stringByResolvingSymlinksInPath; + +// - (NSArray *)stringsByAppendingPaths:(NSArray *)paths; + +// - (NSUInteger)completePathIntoString:(NSString * _Nullable * _Nullable)outputName caseSensitive:(BOOL)flag matchesIntoArray:(NSArray * _Nullable * _Nullable)outputArray filterTypes:(nullable NSArray *)filterTypes; + +// @property (readonly) const char *fileSystemRepresentation __attribute__((objc_returns_inner_pointer)); +// - (BOOL)getFileSystemRepresentation:(char *)cname maxLength:(NSUInteger)max; + +/* @end */ + + +// @interface NSArray (NSArrayPathExtensions) + +// - (NSArray *)pathsMatchingExtensions:(NSArray *)filterTypes; + +/* @end */ + + +extern "C" NSString *NSUserName(void); +extern "C" NSString *NSFullUserName(void); + +extern "C" NSString *NSHomeDirectory(void); +extern "C" NSString * _Nullable NSHomeDirectoryForUser(NSString * _Nullable userName); + +extern "C" NSString *NSTemporaryDirectory(void); + +extern "C" NSString *NSOpenStepRootDirectory(void); + +typedef NSUInteger NSSearchPathDirectory; enum { + NSApplicationDirectory = 1, + NSDemoApplicationDirectory, + NSDeveloperApplicationDirectory, + NSAdminApplicationDirectory, + NSLibraryDirectory, + NSDeveloperDirectory, + NSUserDirectory, + NSDocumentationDirectory, + NSDocumentDirectory, + NSCoreServiceDirectory, + NSAutosavedInformationDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 11, + NSDesktopDirectory = 12, + NSCachesDirectory = 13, + NSApplicationSupportDirectory = 14, + NSDownloadsDirectory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 15, + NSInputMethodsDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 16, + NSMoviesDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 17, + NSMusicDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 18, + NSPicturesDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 19, + NSPrinterDescriptionDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 20, + NSSharedPublicDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 21, + NSPreferencePanesDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 22, + NSApplicationScriptsDirectory __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 23, + NSItemReplacementDirectory __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 99, + NSAllApplicationsDirectory = 100, + NSAllLibrariesDirectory = 101, + NSTrashDirectory __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 102 + +}; + +typedef NSUInteger NSSearchPathDomainMask; enum { + NSUserDomainMask = 1, + NSLocalDomainMask = 2, + NSNetworkDomainMask = 4, + NSSystemDomainMask = 8, + NSAllDomainsMask = 0x0ffff +}; + +extern "C" NSArray *NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory, NSSearchPathDomainMask domainMask, BOOL expandTilde); +#pragma clang assume_nonnull end + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +typedef NSString * NSURLResourceKey __attribute__((swift_wrapper(struct))); + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +struct NSURL_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_urlString; + NSURL *_baseURL; + void *_clients; + void *_reserved; +}; + + + + +// - (nullable instancetype)initWithScheme:(NSString *)scheme host:(nullable NSString *)host path:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.11,message="Use NSURLComponents instead, which lets you create a valid URL with any valid combination of URL components and subcomponents (not just scheme, host and path), and lets you set components and subcomponents with either percent-encoded or un-percent-encoded strings."))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use NSURLComponents instead, which lets you create a valid URL with any valid combination of URL components and subcomponents (not just scheme, host and path), and lets you set components and subcomponents with either percent-encoded or un-percent-encoded strings."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSURLComponents instead, which lets you create a valid URL with any valid combination of URL components and subcomponents (not just scheme, host and path), and lets you set components and subcomponents with either percent-encoded or un-percent-encoded strings."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLComponents instead, which lets you create a valid URL with any valid combination of URL components and subcomponents (not just scheme, host and path), and lets you set components and subcomponents with either percent-encoded or un-percent-encoded strings."))); + + + +// - (instancetype)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + + +// - (instancetype)initFileURLWithPath:(NSString *)path relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + +// - (instancetype)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); +// - (instancetype)initFileURLWithPath:(NSString *)path __attribute__((objc_designated_initializer)); + + + +// + (NSURL *)fileURLWithPath:(NSString *)path isDirectory:(BOOL) isDir relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// + (NSURL *)fileURLWithPath:(NSString *)path relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSURL *)fileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSURL *)fileURLWithPath:(NSString *)path; + + + +// - (instancetype)initFileURLWithFileSystemRepresentation:(const char *)path isDirectory:(BOOL)isDir relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + + + +// + (NSURL *)fileURLWithFileSystemRepresentation:(const char *)path isDirectory:(BOOL) isDir relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable instancetype)initWithString:(NSString *)URLString; +// - (nullable instancetype)initWithString:(NSString *)URLString relativeToURL:(nullable NSURL *)baseURL __attribute__((objc_designated_initializer)); +// + (nullable instancetype)URLWithString:(NSString *)URLString; +// + (nullable instancetype)URLWithString:(NSString *)URLString relativeToURL:(nullable NSURL *)baseURL; + + + + +// - (instancetype)initWithDataRepresentation:(NSData *)data relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + + +// + (NSURL *)URLWithDataRepresentation:(NSData *)data relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (instancetype)initAbsoluteURLWithDataRepresentation:(NSData *)data relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + + +// + (NSURL *)absoluteURLWithDataRepresentation:(NSData *)data relativeToURL:(nullable NSURL *)baseURL __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly, copy) NSData *dataRepresentation __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, readonly, copy) NSString *absoluteString; +// @property (readonly, copy) NSString *relativeString; +// @property (nullable, readonly, copy) NSURL *baseURL; +// @property (nullable, readonly, copy) NSURL *absoluteURL; + + + +// @property (nullable, readonly, copy) NSString *scheme; +// @property (nullable, readonly, copy) NSString *resourceSpecifier; + + + +// @property (nullable, readonly, copy) NSString *host; +// @property (nullable, readonly, copy) NSNumber *port; +// @property (nullable, readonly, copy) NSString *user; +// @property (nullable, readonly, copy) NSString *password; +// @property (nullable, readonly, copy) NSString *path; +// @property (nullable, readonly, copy) NSString *fragment; +// @property (nullable, readonly, copy) NSString *parameterString __attribute__((availability(macosx,introduced=10.2,deprecated=10.15,message="The parameterString method is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, parameterString will always return nil, and the path method will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="The parameterString method is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, parameterString will always return nil, and the path method will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="The parameterString method is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, parameterString will always return nil, and the path method will return the complete path including the semicolon separator and params component if the URL string contains them."))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="The parameterString method is deprecated. Post deprecation for applications linked with or after the macOS 10.15, and for all iOS, watchOS, and tvOS applications, parameterString will always return nil, and the path method will return the complete path including the semicolon separator and params component if the URL string contains them."))); +// @property (nullable, readonly, copy) NSString *query; +// @property (nullable, readonly, copy) NSString *relativePath; + + + +// @property (readonly) BOOL hasDirectoryPath __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)getFileSystemRepresentation:(char *)buffer maxLength:(NSUInteger)maxBufferLength __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly) const char *fileSystemRepresentation __attribute__((objc_returns_inner_pointer)) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, getter=isFileURL) BOOL fileURL; + + +extern "C" NSString *NSURLFileScheme; + + +// @property (nullable, readonly, copy) NSURL *standardizedURL; + + + + +// - (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error __attribute__((swift_error(none))) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (BOOL)isFileReferenceURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable NSURL *)fileReferenceURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, readonly, copy) NSURL *filePathURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)getResourceValue:(out id _Nullable * _Nonnull)value forKey:(NSURLResourceKey)key error:(out NSError ** _Nullable)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable NSDictionary *)resourceValuesForKeys:(NSArray *)keys error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)setResourceValue:(nullable id)value forKey:(NSURLResourceKey)key error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)setResourceValues:(NSDictionary *)keyedValues error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSURLResourceKey const NSURLKeysOfUnsetValuesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)removeCachedResourceValueForKey:(NSURLResourceKey)key __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)removeAllCachedResourceValues __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)setTemporaryResourceValue:(nullable id)value forKey:(NSURLResourceKey)key __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLNameKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLocalizedNameKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsRegularFileKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsDirectoryKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsSymbolicLinkKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsVolumeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsPackageKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsApplicationKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLApplicationIsScriptableKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLIsSystemImmutableKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsUserImmutableKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsHiddenKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLHasHiddenExtensionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLCreationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLContentAccessDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLContentModificationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLAttributeModificationDateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLinkCountKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLParentDirectoryURLKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeURLKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLTypeIdentifierKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLocalizedTypeDescriptionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLabelNumberKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLabelColorKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLLocalizedLabelKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLEffectiveIconKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLCustomIconKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLFileResourceIdentifierKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIdentifierKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLPreferredIOBlockSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsReadableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsWritableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsExecutableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLFileSecurityKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsExcludedFromBackupKey __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=5.1))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLTagNamesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLPathKey __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLCanonicalPathKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLIsMountTriggerKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLGenerationIdentifierKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLDocumentIdentifierKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLAddedToDirectoryDateKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLQuarantinePropertiesKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLFileResourceTypeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString * NSURLFileResourceType __attribute__((swift_wrapper(enum))); + + + +extern "C" NSURLFileResourceType const NSURLFileResourceTypeNamedPipe __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeCharacterSpecial __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeDirectory __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeBlockSpecial __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeRegular __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeSymbolicLink __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeSocket __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLFileResourceType const NSURLFileResourceTypeUnknown __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSURLResourceKey const NSURLThumbnailDictionaryKey __attribute__((availability(macos,introduced=10.10,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(ios,introduced=8.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))); +extern "C" NSURLResourceKey const NSURLThumbnailKey __attribute__((availability(macos,introduced=10.10,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSString *NSURLThumbnailDictionaryItem __attribute__((swift_wrapper(struct))); + + +extern "C" NSURLThumbnailDictionaryItem const NSThumbnail1024x1024SizeKey __attribute__((availability(macos,introduced=10.10,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(ios,introduced=8.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,message="Use the QuickLookThumbnailing framework and extension point instead"))); + + + +extern "C" NSURLResourceKey const NSURLFileSizeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLFileAllocatedSizeKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLTotalFileSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLTotalFileAllocatedSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLIsAliasFileKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLFileProtectionKey __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +typedef NSString * NSURLFileProtectionType __attribute__((swift_wrapper(enum))); + + +extern "C" NSURLFileProtectionType const NSURLFileProtectionNone __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSURLFileProtectionType const NSURLFileProtectionComplete __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSURLFileProtectionType const NSURLFileProtectionCompleteUnlessOpen __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSURLFileProtectionType const NSURLFileProtectionCompleteUntilFirstUserAuthentication __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + + +extern "C" NSURLResourceKey const NSURLVolumeLocalizedFormatDescriptionKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeTotalCapacityKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeAvailableCapacityKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeResourceCountKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsPersistentIDsKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsSymbolicLinksKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsHardLinksKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsJournalingKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsJournalingKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsSparseFilesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsZeroRunsKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsCaseSensitiveNamesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsCasePreservedNamesKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsRootDirectoryDatesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsVolumeSizesKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsRenamingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsAdvisoryFileLockingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsExtendedSecurityKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsBrowsableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeMaximumFileSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsEjectableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsRemovableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsInternalKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsAutomountedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsLocalKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsReadOnlyKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeCreationDateKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeURLForRemountingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeUUIDStringKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeLocalizedNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsEncryptedKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeIsRootFileSystemKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsCompressionKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsFileCloningKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsSwapRenamingKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsExclusiveRenamingKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsImmutableFilesKey __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +extern "C" NSURLResourceKey const NSURLVolumeSupportsAccessPermissionsKey __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + + + +extern "C" NSURLResourceKey const NSURLVolumeAvailableCapacityForImportantUsageKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + +extern "C" NSURLResourceKey const NSURLVolumeAvailableCapacityForOpportunisticUsageKey __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +extern "C" NSURLResourceKey const NSURLIsUbiquitousItemKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemHasUnresolvedConflictsKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemIsDownloadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.9,message="Use NSURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use NSURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSURLUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLUbiquitousItemDownloadingStatusKey instead"))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemIsDownloadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemIsUploadedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemIsUploadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemPercentDownloadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.8,message="Use NSMetadataUbiquitousItemPercentDownloadedKey instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message="Use NSMetadataUbiquitousItemPercentDownloadedKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSMetadataUbiquitousItemPercentDownloadedKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSMetadataUbiquitousItemPercentDownloadedKey instead"))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemPercentUploadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.8,message="Use NSMetadataUbiquitousItemPercentUploadedKey instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message="Use NSMetadataUbiquitousItemPercentUploadedKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSMetadataUbiquitousItemPercentUploadedKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSMetadataUbiquitousItemPercentUploadedKey instead"))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemDownloadingStatusKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemDownloadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemUploadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemDownloadRequestedKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLResourceKey const NSURLUbiquitousItemContainerDisplayNameKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSURLResourceKey const NSURLUbiquitousItemIsSharedKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLUbiquitousSharedItemCurrentUserRoleKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLUbiquitousSharedItemCurrentUserPermissionsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLUbiquitousSharedItemOwnerNameComponentsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLResourceKey const NSURLUbiquitousSharedItemMostRecentEditorNameComponentsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSString * NSURLUbiquitousItemDownloadingStatus __attribute__((swift_wrapper(enum))); + + +extern "C" NSURLUbiquitousItemDownloadingStatus const NSURLUbiquitousItemDownloadingStatusNotDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLUbiquitousItemDownloadingStatus const NSURLUbiquitousItemDownloadingStatusDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSURLUbiquitousItemDownloadingStatus const NSURLUbiquitousItemDownloadingStatusCurrent __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString * NSURLUbiquitousSharedItemRole __attribute__((swift_wrapper(enum))); + + + +extern "C" NSURLUbiquitousSharedItemRole const NSURLUbiquitousSharedItemRoleOwner __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLUbiquitousSharedItemRole const NSURLUbiquitousSharedItemRoleParticipant __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSString * NSURLUbiquitousSharedItemPermissions __attribute__((swift_wrapper(enum))); + + + +extern "C" NSURLUbiquitousSharedItemPermissions const NSURLUbiquitousSharedItemPermissionsReadOnly __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSURLUbiquitousSharedItemPermissions const NSURLUbiquitousSharedItemPermissionsReadWrite __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +typedef NSUInteger NSURLBookmarkCreationOptions; enum { + NSURLBookmarkCreationPreferFileIDResolution __attribute__((availability(macos,introduced=10.6,deprecated=10.9,message="Not supported"))) __attribute__((availability(ios,introduced=4.0,deprecated=7.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))) = ( 1UL << 8 ), + NSURLBookmarkCreationMinimalBookmark = ( 1UL << 9 ), + NSURLBookmarkCreationSuitableForBookmarkFile = ( 1UL << 10 ), + NSURLBookmarkCreationWithSecurityScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1 << 11 ), + NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1 << 12 ), +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSURLBookmarkResolutionOptions; enum { + NSURLBookmarkResolutionWithoutUI = ( 1UL << 8 ), + NSURLBookmarkResolutionWithoutMounting = ( 1UL << 9 ), + NSURLBookmarkResolutionWithSecurityScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = ( 1 << 10 ) +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSURLBookmarkFileCreationOptions; + + + +// - (nullable NSData *)bookmarkDataWithOptions:(NSURLBookmarkCreationOptions)options includingResourceValuesForKeys:(nullable NSArray *)keys relativeToURL:(nullable NSURL *)relativeURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable instancetype)initByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(nullable NSURL *)relativeURL bookmarkDataIsStale:(BOOL * _Nullable)isStale error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// + (nullable instancetype)URLByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(nullable NSURL *)relativeURL bookmarkDataIsStale:(BOOL * _Nullable)isStale error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable NSDictionary *)resourceValuesForKeys:(NSArray *)keys fromBookmarkData:(NSData *)bookmarkData __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (BOOL)writeBookmarkData:(NSData *)bookmarkData toURL:(NSURL *)bookmarkFileURL options:(NSURLBookmarkFileCreationOptions)options error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable NSData *)bookmarkDataWithContentsOfURL:(NSURL *)bookmarkFileURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable instancetype)URLByResolvingAliasFileAtURL:(NSURL *)url options:(NSURLBookmarkResolutionOptions)options error:(NSError **)error __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)startAccessingSecurityScopedResource __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)stopAccessingSecurityScopedResource __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +// @interface NSURL (NSPromisedItems) +// - (BOOL)getPromisedItemResourceValue:(id _Nullable * _Nonnull)value forKey:(NSURLResourceKey)key error:(NSError **)error __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSDictionary *)promisedItemResourceValuesForKeys:(NSArray *)keys error:(NSError **)error __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)checkPromisedItemIsReachableAndReturnError:(NSError **)error __attribute__((swift_error(none))) __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +// @interface NSURL (NSItemProvider) +/* @end */ + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + + +#ifndef _REWRITER_typedef_NSURLQueryItem +#define _REWRITER_typedef_NSURLQueryItem +typedef struct objc_object NSURLQueryItem; +typedef struct {} _objc_exc_NSURLQueryItem; +#endif + +struct NSURLQueryItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_name; + NSString *_value; +}; + +// - (instancetype)initWithName:(NSString *)name value:(nullable NSString *)value __attribute__((objc_designated_initializer)); +// + (instancetype)queryItemWithName:(NSString *)name value:(nullable NSString *)value; +// @property (readonly) NSString *name; +// @property (nullable, readonly) NSString *value; +/* @end */ + + + +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSURLComponents +#define _REWRITER_typedef_NSURLComponents +typedef struct objc_object NSURLComponents; +typedef struct {} _objc_exc_NSURLComponents; +#endif + +struct NSURLComponents_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)init; + + +// - (nullable instancetype)initWithURL:(NSURL *)url resolvingAgainstBaseURL:(BOOL)resolve; + + +// + (nullable instancetype)componentsWithURL:(NSURL *)url resolvingAgainstBaseURL:(BOOL)resolve; + + +// - (nullable instancetype)initWithString:(NSString *)URLString; + + +// + (nullable instancetype)componentsWithString:(NSString *)URLString; + + +// @property (nullable, readonly, copy) NSURL *URL; + + +// - (nullable NSURL *)URLRelativeToURL:(nullable NSURL *)baseURL; + + +// @property (nullable, readonly, copy) NSString *string __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// @property (nullable, copy) NSString *scheme; +// @property (nullable, copy) NSString *user; +// @property (nullable, copy) NSString *password; +// @property (nullable, copy) NSString *host; +// @property (nullable, copy) NSNumber *port; +// @property (nullable, copy) NSString *path; +// @property (nullable, copy) NSString *query; +// @property (nullable, copy) NSString *fragment; + + +// @property (nullable, copy) NSString *percentEncodedUser; +// @property (nullable, copy) NSString *percentEncodedPassword; +// @property (nullable, copy) NSString *percentEncodedHost; +// @property (nullable, copy) NSString *percentEncodedPath; +// @property (nullable, copy) NSString *percentEncodedQuery; +// @property (nullable, copy) NSString *percentEncodedFragment; + + + +// @property (readonly) NSRange rangeOfScheme __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfUser __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfPassword __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfHost __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfPort __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfPath __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfQuery __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSRange rangeOfFragment __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, copy) NSArray *queryItems __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// @property (nullable, copy) NSArray *percentEncodedQueryItems __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + + +// @interface NSCharacterSet (NSURLUtilities) + + + +@property (class, readonly, copy) NSCharacterSet *URLUserAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +@property (class, readonly, copy) NSCharacterSet *URLPasswordAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +@property (class, readonly, copy) NSCharacterSet *URLHostAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +@property (class, readonly, copy) NSCharacterSet *URLPathAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +@property (class, readonly, copy) NSCharacterSet *URLQueryAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +@property (class, readonly, copy) NSCharacterSet *URLFragmentAllowedCharacterSet __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +// @interface NSString (NSURLUtilities) + + +// - (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (nullable, readonly, copy) NSString *stringByRemovingPercentEncoding __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (nullable NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc __attribute__((availability(macos,introduced=10.0,deprecated=10.11,message="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."))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="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."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="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."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="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."))); +// - (nullable NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)enc __attribute__((availability(macos,introduced=10.0,deprecated=10.11,message="Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -stringByRemovingPercentEncoding instead, which always uses the recommended UTF-8 encoding."))); + +/* @end */ + + + +// @interface NSURL (NSURLPathUtilities) + + + +// + (nullable NSURL *)fileURLWithPathComponents:(NSArray *)components __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSArray *pathComponents __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSString *lastPathComponent __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSString *pathExtension __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (nullable NSURL *)URLByAppendingPathComponent:(NSString *)pathComponent __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSURL *)URLByAppendingPathComponent:(NSString *)pathComponent isDirectory:(BOOL)isDirectory __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *URLByDeletingLastPathComponent __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSURL *)URLByAppendingPathExtension:(NSString *)pathExtension __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *URLByDeletingPathExtension __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, readonly, copy) NSURL *URLByStandardizingPath __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *URLByResolvingSymlinksInPath __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSFileSecurity +#define _REWRITER_typedef_NSFileSecurity +typedef struct objc_object NSFileSecurity; +typedef struct {} _objc_exc_NSFileSecurity; +#endif + +struct NSFileSecurity_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (nullable instancetype) initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +/* @end */ + +#pragma clang assume_nonnull end + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSDirectoryEnumerator +#define _REWRITER_typedef_NSDirectoryEnumerator +typedef struct objc_object NSDirectoryEnumerator; +typedef struct {} _objc_exc_NSDirectoryEnumerator; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +#ifndef _REWRITER_typedef_NSFileProviderService +#define _REWRITER_typedef_NSFileProviderService +typedef struct objc_object NSFileProviderService; +typedef struct {} _objc_exc_NSFileProviderService; +#endif + +#ifndef _REWRITER_typedef_NSXPCConnection +#define _REWRITER_typedef_NSXPCConnection +typedef struct objc_object NSXPCConnection; +typedef struct {} _objc_exc_NSXPCConnection; +#endif + +#ifndef _REWRITER_typedef_NSLock +#define _REWRITER_typedef_NSLock +typedef struct objc_object NSLock; +typedef struct {} _objc_exc_NSLock; +#endif + +// @protocol NSFileManagerDelegate; + +typedef NSString * NSFileAttributeKey __attribute__((swift_wrapper(struct))); +typedef NSString * NSFileAttributeType __attribute__((swift_wrapper(enum))); +typedef NSString * NSFileProtectionType __attribute__((swift_wrapper(enum))); + +typedef NSString * NSFileProviderServiceName __attribute__((swift_wrapper(struct))); + +#pragma clang assume_nonnull begin + + + + + +typedef NSUInteger NSVolumeEnumerationOptions; enum { + + + NSVolumeEnumerationSkipHiddenVolumes = 1UL << 1, + + + + NSVolumeEnumerationProduceFileReferenceURLs = 1UL << 2 +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSDirectoryEnumerationOptions; enum { + + + NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1UL << 0, + + + + NSDirectoryEnumerationSkipsPackageDescendants = 1UL << 1, + + + + NSDirectoryEnumerationSkipsHiddenFiles = 1UL << 2, + + + + NSDirectoryEnumerationIncludesDirectoriesPostOrder __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 1UL << 3, + + + + NSDirectoryEnumerationProducesRelativePathURLs __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 1UL << 4, +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSFileManagerItemReplacementOptions; enum { + + + NSFileManagerItemReplacementUsingNewMetadataOnly = 1UL << 0, + + + + NSFileManagerItemReplacementWithoutDeletingBackupItem = 1UL << 1 +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSInteger NSURLRelationship; enum { + NSURLRelationshipContains, + NSURLRelationshipSame, + NSURLRelationshipOther +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSUInteger NSFileManagerUnmountOptions; enum { + + + NSFileManagerUnmountAllPartitionsAndEjectDisk = 1UL << 0, + + + + NSFileManagerUnmountWithoutUI = 1UL << 1, +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern "C" NSString *const NSFileManagerUnmountDissentingProcessIdentifierErrorKey __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern NSNotificationName const NSUbiquityIdentityDidChangeNotification __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSFileManager +#define _REWRITER_typedef_NSFileManager +typedef struct objc_object NSFileManager; +typedef struct {} _objc_exc_NSFileManager; +#endif + +struct NSFileManager_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +@property (class, readonly, strong) NSFileManager *defaultManager; + + + +// - (nullable NSArray *)mountedVolumeURLsIncludingResourceValuesForKeys:(nullable NSArray *)propertyKeys options:(NSVolumeEnumerationOptions)options __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)unmountVolumeAtURL:(NSURL *)url options:(NSFileManagerUnmountOptions)mask completionHandler:(void (^)(NSError * _Nullable errorOrNil))completionHandler __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (nullable NSArray *)contentsOfDirectoryAtURL:(NSURL *)url includingPropertiesForKeys:(nullable NSArray *)keys options:(NSDirectoryEnumerationOptions)mask error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (NSArray *)URLsForDirectory:(NSSearchPathDirectory)directory inDomains:(NSSearchPathDomainMask)domainMask __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSURL *)URLForDirectory:(NSSearchPathDirectory)directory inDomain:(NSSearchPathDomainMask)domain appropriateForURL:(nullable NSURL *)url create:(BOOL)shouldCreate error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)getRelationship:(NSURLRelationship *)outRelationship ofDirectoryAtURL:(NSURL *)directoryURL toItemAtURL:(NSURL *)otherURL error:(NSError **)error __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)getRelationship:(NSURLRelationship *)outRelationship ofDirectory:(NSSearchPathDirectory)directory inDomain:(NSSearchPathDomainMask)domainMask toItemAtURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)createDirectoryAtURL:(NSURL *)url withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary *)attributes error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)createSymbolicLinkAtURL:(NSURL *)url withDestinationURL:(NSURL *)destURL error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, assign) id delegate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)setAttributes:(NSDictionary *)attributes ofItemAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(nullable NSDictionary *)attributes error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSDictionary *)attributesOfFileSystemForPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)createSymbolicLinkAtPath:(NSString *)path withDestinationPath:(NSString *)destPath error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSString *)destinationOfSymbolicLinkAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)linkItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)moveItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)linkItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)removeItemAtURL:(NSURL *)URL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)trashItemAtURL:(NSURL *)url resultingItemURL:(NSURL * _Nullable * _Nullable)outResultingURL error:(NSError **)error __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// - (nullable NSDictionary *)fileAttributesAtPath:(NSString *)path traverseLink:(BOOL)yorn __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -attributesOfItemAtPath:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -attributesOfItemAtPath:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -attributesOfItemAtPath:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -attributesOfItemAtPath:error: instead"))); +// - (BOOL)changeFileAttributes:(NSDictionary *)attributes atPath:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -setAttributes:ofItemAtPath:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -setAttributes:ofItemAtPath:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -setAttributes:ofItemAtPath:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -setAttributes:ofItemAtPath:error: instead"))); +// - (nullable NSArray *)directoryContentsAtPath:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -contentsOfDirectoryAtPath:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -contentsOfDirectoryAtPath:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -contentsOfDirectoryAtPath:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -contentsOfDirectoryAtPath:error: instead"))); +// - (nullable NSDictionary *)fileSystemAttributesAtPath:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -attributesOfFileSystemForPath:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -attributesOfFileSystemForPath:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -attributesOfFileSystemForPath:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -attributesOfFileSystemForPath:error: instead"))); +// - (nullable NSString *)pathContentOfSymbolicLinkAtPath:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -destinationOfSymbolicLinkAtPath:error:"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -destinationOfSymbolicLinkAtPath:error:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -destinationOfSymbolicLinkAtPath:error:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -destinationOfSymbolicLinkAtPath:error:"))); +// - (BOOL)createSymbolicLinkAtPath:(NSString *)path pathContent:(NSString *)otherpath __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -createSymbolicLinkAtPath:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -createSymbolicLinkAtPath:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -createSymbolicLinkAtPath:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -createSymbolicLinkAtPath:error: instead"))); +// - (BOOL)createDirectoryAtPath:(NSString *)path attributes:(NSDictionary *)attributes __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Use -createDirectoryAtPath:withIntermediateDirectories:attributes:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Use -createDirectoryAtPath:withIntermediateDirectories:attributes:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -createDirectoryAtPath:withIntermediateDirectories:attributes:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -createDirectoryAtPath:withIntermediateDirectories:attributes:error: instead"))); +// @property (readonly, copy) NSString *currentDirectoryPath; +// - (BOOL)changeCurrentDirectoryPath:(NSString *)path; + + + +// - (BOOL)fileExistsAtPath:(NSString *)path; +// - (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(nullable BOOL *)isDirectory; +// - (BOOL)isReadableFileAtPath:(NSString *)path; +// - (BOOL)isWritableFileAtPath:(NSString *)path; +// - (BOOL)isExecutableFileAtPath:(NSString *)path; +// - (BOOL)isDeletableFileAtPath:(NSString *)path; + + + +// - (BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2; + + + +// - (NSString *)displayNameAtPath:(NSString *)path; + + + +// - (nullable NSArray *)componentsToDisplayForPath:(NSString *)path; + + + +// - (nullable NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path; + + + + + +// - (nullable NSDirectoryEnumerator *)enumeratorAtURL:(NSURL *)url includingPropertiesForKeys:(nullable NSArray *)keys options:(NSDirectoryEnumerationOptions)mask errorHandler:(nullable BOOL (^)(NSURL *url, NSError *error))handler __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable NSArray *)subpathsAtPath:(NSString *)path; + + + +// - (nullable NSData *)contentsAtPath:(NSString *)path; +// - (BOOL)createFileAtPath:(NSString *)path contents:(nullable NSData *)data attributes:(nullable NSDictionary *)attr; + + + +// - (const char *)fileSystemRepresentationWithPath:(NSString *)path __attribute__((objc_returns_inner_pointer)); + + + +// - (NSString *)stringWithFileSystemRepresentation:(const char *)str length:(NSUInteger)len; +// - (BOOL)replaceItemAtURL:(NSURL *)originalItemURL withItemAtURL:(NSURL *)newItemURL backupItemName:(nullable NSString *)backupItemName options:(NSFileManagerItemReplacementOptions)options resultingItemURL:(NSURL * _Nullable * _Nullable)resultingURL error:(NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (BOOL)setUbiquitous:(BOOL)flag itemAtURL:(NSURL *)url destinationURL:(NSURL *)destinationURL error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)isUbiquitousItemAtURL:(NSURL *)url __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)startDownloadingUbiquitousItemAtURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)evictUbiquitousItemAtURL:(NSURL *)url error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable NSURL *)URLForUbiquityContainerIdentifier:(nullable NSString *)containerIdentifier __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable NSURL *)URLForPublishingUbiquitousItemAtURL:(NSURL *)url expirationDate:(NSDate * _Nullable * _Nullable)outDate error:(NSError **)error __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (nullable, readonly, copy) id ubiquityIdentityToken __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)getFileProviderServicesForItemAtURL:(NSURL *)url completionHandler:(void (^)(NSDictionary * _Nullable services, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// - (nullable NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +/* @end */ + + +// @interface NSFileManager (NSUserInformation) + +// @property (readonly, copy) NSURL *homeDirectoryForCurrentUser __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (readonly, copy) NSURL *temporaryDirectory __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// - (nullable NSURL *)homeDirectoryForUser:(NSString *)userName __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +// @interface NSObject (NSCopyLinkMoveHandler) +// - (BOOL)fileManager:(NSFileManager *)fm shouldProceedAfterError:(NSDictionary *)errorInfo __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message=" Handler API no longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message=" Handler API no longer supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message=" Handler API no longer supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message=" Handler API no longer supported"))); +// - (void)fileManager:(NSFileManager *)fm willProcessPath:(NSString *)path __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Handler API no longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Handler API no longer supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Handler API no longer supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Handler API no longer supported"))); +/* @end */ + + + +// @protocol NSFileManagerDelegate +/* @optional */ + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldCopyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldCopyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error copyingItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error copyingItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldMoveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldMoveItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error movingItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error movingItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldLinkItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldLinkItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error linkingItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error linkingItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldRemoveItemAtPath:(NSString *)path; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldRemoveItemAtURL:(NSURL *)URL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error removingItemAtPath:(NSString *)path; +// - (BOOL)fileManager:(NSFileManager *)fileManager shouldProceedAfterError:(NSError *)error removingItemAtURL:(NSURL *)URL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + +#ifndef _REWRITER_typedef_NSDirectoryEnumerator +#define _REWRITER_typedef_NSDirectoryEnumerator +typedef struct objc_object NSDirectoryEnumerator; +typedef struct {} _objc_exc_NSDirectoryEnumerator; +#endif + +struct NSDirectoryEnumerator_IMPL { + struct NSEnumerator_IMPL NSEnumerator_IVARS; +}; + + + + +// @property (nullable, readonly, copy) NSDictionary *fileAttributes; +// @property (nullable, readonly, copy) NSDictionary *directoryAttributes; + + + +// @property (readonly) BOOL isEnumeratingDirectoryPostOrder __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +// - (void)skipDescendents; + + + +// @property (readonly) NSUInteger level __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)skipDescendants __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_NSFileProviderService +#define _REWRITER_typedef_NSFileProviderService +typedef struct objc_object NSFileProviderService; +typedef struct {} _objc_exc_NSFileProviderService; +#endif + +struct NSFileProviderService_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSFileProviderServiceName _name; + id _endpointCreatingProxy; + dispatch_group_t _requestFinishedGroup; +}; + +// - (void)getFileProviderConnectionWithCompletionHandler:(void (^)(NSXPCConnection * _Nullable connection, NSError * _Nullable error))completionHandler; +// @property (readonly, copy) NSFileProviderServiceName name; +/* @end */ + + +extern "C" NSFileAttributeKey const NSFileType; +extern "C" NSFileAttributeType const NSFileTypeDirectory; +extern "C" NSFileAttributeType const NSFileTypeRegular; +extern "C" NSFileAttributeType const NSFileTypeSymbolicLink; +extern "C" NSFileAttributeType const NSFileTypeSocket; +extern "C" NSFileAttributeType const NSFileTypeCharacterSpecial; +extern "C" NSFileAttributeType const NSFileTypeBlockSpecial; +extern "C" NSFileAttributeType const NSFileTypeUnknown; +extern "C" NSFileAttributeKey const NSFileSize; +extern "C" NSFileAttributeKey const NSFileModificationDate; +extern "C" NSFileAttributeKey const NSFileReferenceCount; +extern "C" NSFileAttributeKey const NSFileDeviceIdentifier; +extern "C" NSFileAttributeKey const NSFileOwnerAccountName; +extern "C" NSFileAttributeKey const NSFileGroupOwnerAccountName; +extern "C" NSFileAttributeKey const NSFilePosixPermissions; +extern "C" NSFileAttributeKey const NSFileSystemNumber; +extern "C" NSFileAttributeKey const NSFileSystemFileNumber; +extern "C" NSFileAttributeKey const NSFileExtensionHidden; +extern "C" NSFileAttributeKey const NSFileHFSCreatorCode; +extern "C" NSFileAttributeKey const NSFileHFSTypeCode; +extern "C" NSFileAttributeKey const NSFileImmutable; +extern "C" NSFileAttributeKey const NSFileAppendOnly; +extern "C" NSFileAttributeKey const NSFileCreationDate; +extern "C" NSFileAttributeKey const NSFileOwnerAccountID; +extern "C" NSFileAttributeKey const NSFileGroupOwnerAccountID; +extern "C" NSFileAttributeKey const NSFileBusy; +extern "C" NSFileAttributeKey const NSFileProtectionKey __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSFileProtectionType const NSFileProtectionNone __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSFileProtectionType const NSFileProtectionComplete __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSFileProtectionType const NSFileProtectionCompleteUnlessOpen __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +extern "C" NSFileProtectionType const NSFileProtectionCompleteUntilFirstUserAuthentication __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +extern "C" NSFileAttributeKey const NSFileSystemSize; +extern "C" NSFileAttributeKey const NSFileSystemFreeSize; +extern "C" NSFileAttributeKey const NSFileSystemNodes; +extern "C" NSFileAttributeKey const NSFileSystemFreeNodes; + +// @interface NSDictionary (NSFileAttributes) + +// - (unsigned long long)fileSize; +// - (nullable NSDate *)fileModificationDate; +// - (nullable NSString *)fileType; +// - (NSUInteger)filePosixPermissions; +// - (nullable NSString *)fileOwnerAccountName; +// - (nullable NSString *)fileGroupOwnerAccountName; +// - (NSInteger)fileSystemNumber; +// - (NSUInteger)fileSystemFileNumber; +// - (BOOL)fileExtensionHidden; +// - (OSType)fileHFSCreatorCode; +// - (OSType)fileHFSTypeCode; +// - (BOOL)fileIsImmutable; +// - (BOOL)fileIsAppendOnly; +// - (nullable NSDate *)fileCreationDate; +// - (nullable NSNumber *)fileOwnerAccountID; +// - (nullable NSNumber *)fileGroupOwnerAccountID; +/* @end */ + +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin +typedef NSUInteger NSPointerFunctionsOptions; enum { + + + + NSPointerFunctionsStrongMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (0UL << 0), + NSPointerFunctionsZeroingWeakMemory __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = (1UL << 0), + NSPointerFunctionsOpaqueMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (2UL << 0), + NSPointerFunctionsMallocMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (3UL << 0), + NSPointerFunctionsMachVirtualMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (4UL << 0), + NSPointerFunctionsWeakMemory __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (5UL << 0), + + + + NSPointerFunctionsObjectPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (0UL << 8), + NSPointerFunctionsOpaquePersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 8), + NSPointerFunctionsObjectPointerPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (2UL << 8), + NSPointerFunctionsCStringPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (3UL << 8), + NSPointerFunctionsStructPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (4UL << 8), + NSPointerFunctionsIntegerPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (5UL << 8), + + NSPointerFunctionsCopyIn __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = (1UL << 16), +}; + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPointerFunctions +#define _REWRITER_typedef_NSPointerFunctions +typedef struct objc_object NSPointerFunctions; +typedef struct {} _objc_exc_NSPointerFunctions; +#endif + +struct NSPointerFunctions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithOptions:(NSPointerFunctionsOptions)options __attribute__((objc_designated_initializer)); +// + (NSPointerFunctions *)pointerFunctionsWithOptions:(NSPointerFunctionsOptions)options; + + +// @property (nullable) NSUInteger (*hashFunction)(const void *item, NSUInteger (* _Nullable size)(const void *item)); +// @property (nullable) BOOL (*isEqualFunction)(const void *item1, const void*item2, NSUInteger (* _Nullable size)(const void *item)); +// @property (nullable) NSUInteger (*sizeFunction)(const void *item); +// @property (nullable) NSString * _Nullable (*descriptionFunction)(const void *item); + + +// @property (nullable) void (*relinquishFunction)(const void *item, NSUInteger (* _Nullable size)(const void *item)); +// @property (nullable) void * _Nonnull (*acquireFunction)(const void *src, NSUInteger (* _Nullable size)(const void *item), BOOL shouldCopy); + + +// @property BOOL usesStrongWriteBarrier + __attribute__((availability(macosx,introduced=10.5,deprecated=10.12,message="Garbage collection no longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=10.0,message="Garbage collection no longer supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Garbage collection no longer supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Garbage collection no longer supported"))); + +// @property BOOL usesWeakReadAndWriteBarriers + __attribute__((availability(macosx,introduced=10.5,deprecated=10.12,message="Garbage collection no longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=10.0,message="Garbage collection no longer supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Garbage collection no longer supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Garbage collection no longer supported"))); +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_NSHashTable +#define _REWRITER_typedef_NSHashTable +typedef struct objc_object NSHashTable; +typedef struct {} _objc_exc_NSHashTable; +#endif + + +#pragma clang assume_nonnull begin + + + + + +static const NSPointerFunctionsOptions NSHashTableStrongMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsStrongMemory; +static const NSPointerFunctionsOptions NSHashTableZeroingWeakMemory __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = NSPointerFunctionsZeroingWeakMemory; +static const NSPointerFunctionsOptions NSHashTableCopyIn __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsCopyIn; +static const NSPointerFunctionsOptions NSHashTableObjectPointerPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsObjectPointerPersonality; +static const NSPointerFunctionsOptions NSHashTableWeakMemory __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsWeakMemory; + +typedef NSUInteger NSHashTableOptions; + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSHashTable +#define _REWRITER_typedef_NSHashTable +typedef struct objc_object NSHashTable; +typedef struct {} _objc_exc_NSHashTable; +#endif + +struct NSHashTable_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithOptions:(NSPointerFunctionsOptions)options capacity:(NSUInteger)initialCapacity __attribute__((objc_designated_initializer)); +// - (instancetype)initWithPointerFunctions:(NSPointerFunctions *)functions capacity:(NSUInteger)initialCapacity __attribute__((objc_designated_initializer)); + + + +// + (NSHashTable *)hashTableWithOptions:(NSPointerFunctionsOptions)options; + +// + (id)hashTableWithWeakObjects __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// + (NSHashTable *)weakObjectsHashTable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly, copy) NSPointerFunctions *pointerFunctions; + +// @property (readonly) NSUInteger count; +// - (nullable ObjectType)member:(nullable ObjectType)object; +// - (NSEnumerator *)objectEnumerator; + +// - (void)addObject:(nullable ObjectType)object; +// - (void)removeObject:(nullable ObjectType)object; + +// - (void)removeAllObjects; + +// @property (readonly, copy) NSArray *allObjects; + +// @property (nullable, nonatomic, readonly) ObjectType anyObject; +// - (BOOL)containsObject:(nullable ObjectType)anObject; + +// - (BOOL)intersectsHashTable:(NSHashTable *)other; +// - (BOOL)isEqualToHashTable:(NSHashTable *)other; +// - (BOOL)isSubsetOfHashTable:(NSHashTable *)other; + +// - (void)intersectHashTable:(NSHashTable *)other; +// - (void)unionHashTable:(NSHashTable *)other; +// - (void)minusHashTable:(NSHashTable *)other; + +// @property (readonly, copy) NSSet *setRepresentation; + +/* @end */ + + + + +typedef struct {NSUInteger _pi; NSUInteger _si; void * _Nullable _bs;} NSHashEnumerator; + +extern "C" void NSFreeHashTable(NSHashTable *table); +extern "C" void NSResetHashTable(NSHashTable *table); +extern "C" BOOL NSCompareHashTables(NSHashTable *table1, NSHashTable *table2); +extern "C" NSHashTable *NSCopyHashTableWithZone(NSHashTable *table, NSZone * _Nullable zone); +extern "C" void *NSHashGet(NSHashTable *table, const void * _Nullable pointer); +extern "C" void NSHashInsert(NSHashTable *table, const void * _Nullable pointer); +extern "C" void NSHashInsertKnownAbsent(NSHashTable *table, const void * _Nullable pointer); +extern "C" void * _Nullable NSHashInsertIfAbsent(NSHashTable *table, const void * _Nullable pointer); +extern "C" void NSHashRemove(NSHashTable *table, const void * _Nullable pointer); +extern "C" NSHashEnumerator NSEnumerateHashTable(NSHashTable *table); +extern "C" void * _Nullable NSNextHashEnumeratorItem(NSHashEnumerator *enumerator); +extern "C" void NSEndHashTableEnumeration(NSHashEnumerator *enumerator); +extern "C" NSUInteger NSCountHashTable(NSHashTable *table); +extern "C" NSString *NSStringFromHashTable(NSHashTable *table); +extern "C" NSArray *NSAllHashTableObjects(NSHashTable *table); + + + + +typedef struct { + NSUInteger (* _Nullable hash)(NSHashTable *table, const void *); + BOOL (* _Nullable isEqual)(NSHashTable *table, const void *, const void *); + void (* _Nullable retain)(NSHashTable *table, const void *); + void (* _Nullable release)(NSHashTable *table, void *); + NSString * _Nullable (* _Nullable describe)(NSHashTable *table, const void *); +} NSHashTableCallBacks; + +extern "C" NSHashTable *NSCreateHashTableWithZone(NSHashTableCallBacks callBacks, NSUInteger capacity, NSZone * _Nullable zone); +extern "C" NSHashTable *NSCreateHashTable(NSHashTableCallBacks callBacks, NSUInteger capacity); + + +extern "C" const NSHashTableCallBacks NSIntegerHashCallBacks __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" const NSHashTableCallBacks NSNonOwnedPointerHashCallBacks; +extern "C" const NSHashTableCallBacks NSNonRetainedObjectHashCallBacks; +extern "C" const NSHashTableCallBacks NSObjectHashCallBacks; +extern "C" const NSHashTableCallBacks NSOwnedObjectIdentityHashCallBacks; +extern "C" const NSHashTableCallBacks NSOwnedPointerHashCallBacks; +extern "C" const NSHashTableCallBacks NSPointerToStructHashCallBacks; +extern "C" const NSHashTableCallBacks NSIntHashCallBacks __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Not supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSDate; +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSNumber; +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + +typedef NSString * NSHTTPCookiePropertyKey __attribute__((swift_wrapper(struct))); +typedef NSString * NSHTTPCookieStringPolicy __attribute__((swift_wrapper(enum))); + +#pragma clang assume_nonnull begin + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieName; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieValue; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieOriginURL; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieVersion; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieDomain; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookiePath; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieSecure; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieExpires; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieComment; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieCommentURL; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieDiscard; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieMaximumAge; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookiePort; + + + + + +extern "C" NSHTTPCookiePropertyKey const NSHTTPCookieSameSitePolicy __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +extern "C" NSHTTPCookieStringPolicy const NSHTTPCookieSameSiteLax __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +extern "C" NSHTTPCookieStringPolicy const NSHTTPCookieSameSiteStrict __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @class NSHTTPCookieInternal; +#ifndef _REWRITER_typedef_NSHTTPCookieInternal +#define _REWRITER_typedef_NSHTTPCookieInternal +typedef struct objc_object NSHTTPCookieInternal; +typedef struct {} _objc_exc_NSHTTPCookieInternal; +#endif + + +#ifndef _REWRITER_typedef_NSHTTPCookie +#define _REWRITER_typedef_NSHTTPCookie +typedef struct objc_object NSHTTPCookie; +typedef struct {} _objc_exc_NSHTTPCookie; +#endif + +struct NSHTTPCookie_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSHTTPCookieInternal *_cookiePrivate; +}; + +// - (nullable instancetype)initWithProperties:(NSDictionary *)properties; +// + (nullable NSHTTPCookie *)cookieWithProperties:(NSDictionary *)properties; +// + (NSDictionary *)requestHeaderFieldsWithCookies:(NSArray *)cookies; +// + (NSArray *)cookiesWithResponseHeaderFields:(NSDictionary *)headerFields forURL:(NSURL *)URL; +// @property (nullable, readonly, copy) NSDictionary *properties; + + + + + + + +// @property (readonly) NSUInteger version; + + + + + +// @property (readonly, copy) NSString *name; + + + + + +// @property (readonly, copy) NSString *value; +// @property (nullable, readonly, copy) NSDate *expiresDate; + + + + + + + +// @property (readonly, getter=isSessionOnly) BOOL sessionOnly; +// @property (readonly, copy) NSString *domain; +// @property (readonly, copy) NSString *path; +// @property (readonly, getter=isSecure) BOOL secure; +// @property (readonly, getter=isHTTPOnly) BOOL HTTPOnly; +// @property (nullable, readonly, copy) NSString *comment; +// @property (nullable, readonly, copy) NSURL *commentURL; +// @property (nullable, readonly, copy) NSArray *portList; +// @property (nullable, readonly, copy) NSHTTPCookieStringPolicy sameSitePolicy __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSHTTPCookie; +#ifndef _REWRITER_typedef_NSHTTPCookie +#define _REWRITER_typedef_NSHTTPCookie +typedef struct objc_object NSHTTPCookie; +typedef struct {} _objc_exc_NSHTTPCookie; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSDate; +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +// @class NSURLSessionTask; +#ifndef _REWRITER_typedef_NSURLSessionTask +#define _REWRITER_typedef_NSURLSessionTask +typedef struct objc_object NSURLSessionTask; +typedef struct {} _objc_exc_NSURLSessionTask; +#endif + +// @class NSSortDescriptor; +#ifndef _REWRITER_typedef_NSSortDescriptor +#define _REWRITER_typedef_NSSortDescriptor +typedef struct objc_object NSSortDescriptor; +typedef struct {} _objc_exc_NSSortDescriptor; +#endif + + +#pragma clang assume_nonnull begin +typedef NSUInteger NSHTTPCookieAcceptPolicy; enum { + NSHTTPCookieAcceptPolicyAlways, + NSHTTPCookieAcceptPolicyNever, + NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain +}; + + +// @class NSHTTPCookieStorageInternal; +#ifndef _REWRITER_typedef_NSHTTPCookieStorageInternal +#define _REWRITER_typedef_NSHTTPCookieStorageInternal +typedef struct objc_object NSHTTPCookieStorageInternal; +typedef struct {} _objc_exc_NSHTTPCookieStorageInternal; +#endif + + +#ifndef _REWRITER_typedef_NSHTTPCookieStorage +#define _REWRITER_typedef_NSHTTPCookieStorage +typedef struct objc_object NSHTTPCookieStorage; +typedef struct {} _objc_exc_NSHTTPCookieStorage; +#endif + +struct NSHTTPCookieStorage_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSHTTPCookieStorageInternal *_internal; +}; + +@property(class, readonly, strong) NSHTTPCookieStorage *sharedHTTPCookieStorage; +// + (NSHTTPCookieStorage *)sharedCookieStorageForGroupContainerIdentifier:(NSString *)identifier __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (nullable , readonly, copy) NSArray *cookies; + + + + + + + +// - (void)setCookie:(NSHTTPCookie *)cookie; + + + + + +// - (void)deleteCookie:(NSHTTPCookie *)cookie; + + + + + +// - (void)removeCookiesSinceDate:(NSDate *)date __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSArray *)cookiesForURL:(NSURL *)URL; +// - (void)setCookies:(NSArray *)cookies forURL:(nullable NSURL *)URL mainDocumentURL:(nullable NSURL *)mainDocumentURL; + + + + + +// @property NSHTTPCookieAcceptPolicy cookieAcceptPolicy; + + + + + + + +// - (NSArray *)sortedCookiesUsingDescriptors:(NSArray *) sortOrder __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSHTTPCookieStorage (NSURLSessionTaskAdditions) +// - (void)storeCookies:(NSArray *)cookies forTask:(NSURLSessionTask *)task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)getCookiesForTask:(NSURLSessionTask *)task completionHandler:(void (^) (NSArray * _Nullable cookies))completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + + + + + + + +extern "C" NSNotificationName const NSHTTPCookieManagerAcceptPolicyChangedNotification; + + + + + +extern "C" NSNotificationName const NSHTTPCookieManagerCookiesChangedNotification; +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSIndexPath +#define _REWRITER_typedef_NSIndexPath +typedef struct objc_object NSIndexPath; +typedef struct {} _objc_exc_NSIndexPath; +#endif + +struct NSIndexPath_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSUInteger *_indexes; + NSUInteger _length; + void *_reserved; +}; + + +// + (instancetype)indexPathWithIndex:(NSUInteger)index; +// + (instancetype)indexPathWithIndexes:(const NSUInteger [_Nullable])indexes length:(NSUInteger)length; + +// - (instancetype)initWithIndexes:(const NSUInteger [_Nullable])indexes length:(NSUInteger)length __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithIndex:(NSUInteger)index; + + +// - (NSIndexPath *)indexPathByAddingIndex:(NSUInteger)index; +// - (NSIndexPath *)indexPathByRemovingLastIndex; + +// - (NSUInteger)indexAtPosition:(NSUInteger)position; +// @property (readonly) NSUInteger length; +// - (void)getIndexes:(NSUInteger *)indexes range:(NSRange)positionRange __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (NSComparisonResult)compare:(NSIndexPath *)otherObject; + +/* @end */ + + +// @interface NSIndexPath (NSDeprecated) + +// - (void)getIndexes:(NSUInteger *)indexes __attribute__((availability(macos,introduced=10.0,deprecated=100000,replacement="getIndexes:range:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="getIndexes:range:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="getIndexes:range:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="getIndexes:range:"))); +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSMethodSignature; +#ifndef _REWRITER_typedef_NSMethodSignature +#define _REWRITER_typedef_NSMethodSignature +typedef struct objc_object NSMethodSignature; +typedef struct {} _objc_exc_NSMethodSignature; +#endif + + +#pragma clang assume_nonnull begin + +__attribute__((availability(swift, unavailable, message="NSInvocation and related APIs not available"))) + +#ifndef _REWRITER_typedef_NSInvocation +#define _REWRITER_typedef_NSInvocation +typedef struct objc_object NSInvocation; +typedef struct {} _objc_exc_NSInvocation; +#endif + +struct NSInvocation_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)sig; + +// @property (readonly, retain) NSMethodSignature *methodSignature; + +// - (void)retainArguments; +// @property (readonly) BOOL argumentsRetained; + +// @property (nullable, assign) id target; +// @property SEL selector; + +// - (void)getReturnValue:(void *)retLoc; +// - (void)setReturnValue:(void *)retLoc; + +// - (void)getArgument:(void *)argumentLocation atIndex:(NSInteger)idx; +// - (void)setArgument:(void *)argumentLocation atIndex:(NSInteger)idx; + +// - (void)invoke; +// - (void)invokeWithTarget:(id)target; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSJSONReadingOptions; enum { + NSJSONReadingMutableContainers = (1UL << 0), + NSJSONReadingMutableLeaves = (1UL << 1), + NSJSONReadingFragmentsAllowed = (1UL << 2), + NSJSONReadingAllowFragments __attribute__((availability(macos,introduced=10.7,deprecated=100000,replacement="NSJSONReadingFragmentsAllowed"))) __attribute__((availability(ios,introduced=5.0,deprecated=100000,replacement="NSJSONReadingFragmentsAllowed"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="NSJSONReadingFragmentsAllowed"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="NSJSONReadingFragmentsAllowed"))) = NSJSONReadingFragmentsAllowed, +} __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSJSONWritingOptions; enum { + NSJSONWritingPrettyPrinted = (1UL << 0), + + + + NSJSONWritingSortedKeys __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) = (1UL << 1), + NSJSONWritingFragmentsAllowed = (1UL << 2), + NSJSONWritingWithoutEscapingSlashes __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = (1UL << 3), +} __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSJSONSerialization +#define _REWRITER_typedef_NSJSONSerialization +typedef struct objc_object NSJSONSerialization; +typedef struct {} _objc_exc_NSJSONSerialization; +#endif + +struct NSJSONSerialization_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *reserved[6]; +}; + +// + (BOOL)isValidJSONObject:(id)obj; + + + +// + (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; + + + + +// + (nullable id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error; + + + +// + (NSInteger)writeJSONObject:(id)obj toStream:(NSOutputStream *)stream options:(NSJSONWritingOptions)opt error:(NSError **)error; + + + +// + (nullable id)JSONObjectWithStream:(NSInputStream *)stream options:(NSJSONReadingOptions)opt error:(NSError **)error; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSIndexSet +#define _REWRITER_typedef_NSIndexSet +typedef struct objc_object NSIndexSet; +typedef struct {} _objc_exc_NSIndexSet; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSOrderedSet +#define _REWRITER_typedef_NSOrderedSet +typedef struct objc_object NSOrderedSet; +typedef struct {} _objc_exc_NSOrderedSet; +#endif + +struct NSOrderedSet_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger count; +// - (ObjectType)objectAtIndex:(NSUInteger)idx; +// - (NSUInteger)indexOfObject:(ObjectType)object; +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)cnt __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSOrderedSet (NSExtendedOrderedSet) + +// - (void)getObjects:(ObjectType _Nonnull __attribute__((objc_ownership(none))) [_Nullable])objects range:(NSRange)range __attribute__((availability(swift, unavailable, message="Use 'array' instead"))); +// - (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes; +// @property (nullable, nonatomic, readonly) ObjectType firstObject; +// @property (nullable, nonatomic, readonly) ObjectType lastObject; + +// - (BOOL)isEqualToOrderedSet:(NSOrderedSet *)other; + +// - (BOOL)containsObject:(ObjectType)object; +// - (BOOL)intersectsOrderedSet:(NSOrderedSet *)other; +// - (BOOL)intersectsSet:(NSSet *)set; + +// - (BOOL)isSubsetOfOrderedSet:(NSOrderedSet *)other; +// - (BOOL)isSubsetOfSet:(NSSet *)set; + +// - (ObjectType)objectAtIndexedSubscript:(NSUInteger)idx __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSEnumerator *)objectEnumerator; +// - (NSEnumerator *)reverseObjectEnumerator; + +// @property (readonly, copy) NSOrderedSet *reversedOrderedSet; + + + + + + + +// @property (readonly, strong) NSArray *array; +// @property (readonly, strong) NSSet *set; + +// - (void)enumerateObjectsUsingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block; +// - (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block; +// - (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block; + +// - (NSUInteger)indexOfObjectPassingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; +// - (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; +// - (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; + +// - (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; +// - (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; +// - (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts passingTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj, NSUInteger idx, BOOL *stop))predicate; + +// - (NSUInteger)indexOfObject:(ObjectType)object inSortedRange:(NSRange)range options:(NSBinarySearchingOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmp; + +// - (NSArray *)sortedArrayUsingComparator:(NSComparator __attribute__((noescape)))cmptr; +// - (NSArray *)sortedArrayWithOptions:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr; + +// @property (readonly, copy) NSString *description; +// - (NSString *)descriptionWithLocale:(nullable id)locale; +// - (NSString *)descriptionWithLocale:(nullable id)locale indent:(NSUInteger)level; + +/* @end */ + + +// @interface NSOrderedSet (NSOrderedSetCreation) + +// + (instancetype)orderedSet; +// + (instancetype)orderedSetWithObject:(ObjectType)object; +// + (instancetype)orderedSetWithObjects:(const ObjectType _Nonnull [_Nonnull])objects count:(NSUInteger)cnt; +// + (instancetype)orderedSetWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// + (instancetype)orderedSetWithOrderedSet:(NSOrderedSet *)set; +// + (instancetype)orderedSetWithOrderedSet:(NSOrderedSet *)set range:(NSRange)range copyItems:(BOOL)flag; +// + (instancetype)orderedSetWithArray:(NSArray *)array; +// + (instancetype)orderedSetWithArray:(NSArray *)array range:(NSRange)range copyItems:(BOOL)flag; +// + (instancetype)orderedSetWithSet:(NSSet *)set; +// + (instancetype)orderedSetWithSet:(NSSet *)set copyItems:(BOOL)flag; + +// - (instancetype)initWithObject:(ObjectType)object; +// - (instancetype)initWithObjects:(ObjectType)firstObj, ... __attribute__((sentinel(0,1))); +// - (instancetype)initWithOrderedSet:(NSOrderedSet *)set; +// - (instancetype)initWithOrderedSet:(NSOrderedSet *)set copyItems:(BOOL)flag; +// - (instancetype)initWithOrderedSet:(NSOrderedSet *)set range:(NSRange)range copyItems:(BOOL)flag; +// - (instancetype)initWithArray:(NSArray *)array; +// - (instancetype)initWithArray:(NSArray *)set copyItems:(BOOL)flag; +// - (instancetype)initWithArray:(NSArray *)set range:(NSRange)range copyItems:(BOOL)flag; +// - (instancetype)initWithSet:(NSSet *)set; +// - (instancetype)initWithSet:(NSSet *)set copyItems:(BOOL)flag; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +__attribute__((availability(swift, unavailable, message="NSOrderedSet diffing methods are not available in Swift, use Collection.difference(from:) instead"))) +// @interface NSOrderedSet (NSOrderedSetDiffing) + +// - (NSOrderedCollectionDifference *)differenceFromOrderedSet:(NSOrderedSet *)other withOptions:(NSOrderedCollectionDifferenceCalculationOptions)options usingEquivalenceTest:(BOOL (__attribute__((noescape)) ^)(ObjectType obj1, ObjectType obj2))block; + +// - (NSOrderedCollectionDifference *)differenceFromOrderedSet:(NSOrderedSet *)other withOptions:(NSOrderedCollectionDifferenceCalculationOptions)options; + + +// - (NSOrderedCollectionDifference *)differenceFromOrderedSet:(NSOrderedSet *)other; + +// - (nullable NSOrderedSet *)orderedSetByApplyingDifference:(NSOrderedCollectionDifference *)difference; + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMutableOrderedSet +#define _REWRITER_typedef_NSMutableOrderedSet +typedef struct objc_object NSMutableOrderedSet; +typedef struct {} _objc_exc_NSMutableOrderedSet; +#endif + +struct NSMutableOrderedSet_IMPL { + struct NSOrderedSet_IMPL NSOrderedSet_IVARS; +}; + + +// - (void)insertObject:(ObjectType)object atIndex:(NSUInteger)idx; +// - (void)removeObjectAtIndex:(NSUInteger)idx; +// - (void)replaceObjectAtIndex:(NSUInteger)idx withObject:(ObjectType)object; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCapacity:(NSUInteger)numItems __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSMutableOrderedSet (NSExtendedMutableOrderedSet) + +// - (void)addObject:(ObjectType)object; +// - (void)addObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)count; +// - (void)addObjectsFromArray:(NSArray *)array; + +// - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2; +// - (void)moveObjectsAtIndexes:(NSIndexSet *)indexes toIndex:(NSUInteger)idx; + +// - (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes; + +// - (void)setObject:(ObjectType)obj atIndex:(NSUInteger)idx; +// - (void)setObject:(ObjectType)obj atIndexedSubscript:(NSUInteger)idx __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)replaceObjectsInRange:(NSRange)range withObjects:(const ObjectType _Nonnull [_Nullable])objects count:(NSUInteger)count; +// - (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects; + +// - (void)removeObjectsInRange:(NSRange)range; +// - (void)removeObjectsAtIndexes:(NSIndexSet *)indexes; +// - (void)removeAllObjects; + +// - (void)removeObject:(ObjectType)object; +// - (void)removeObjectsInArray:(NSArray *)array; + +// - (void)intersectOrderedSet:(NSOrderedSet *)other; +// - (void)minusOrderedSet:(NSOrderedSet *)other; +// - (void)unionOrderedSet:(NSOrderedSet *)other; + +// - (void)intersectSet:(NSSet *)other; +// - (void)minusSet:(NSSet *)other; +// - (void)unionSet:(NSSet *)other; + + +// - (void)sortUsingComparator:(NSComparator __attribute__((noescape)))cmptr; +// - (void)sortWithOptions:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr; +// - (void)sortRange:(NSRange)range options:(NSSortOptions)opts usingComparator:(NSComparator __attribute__((noescape)))cmptr; + + +/* @end */ + + +// @interface NSMutableOrderedSet (NSMutableOrderedSetCreation) + +// + (instancetype)orderedSetWithCapacity:(NSUInteger)numItems; + +/* @end */ + + +__attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +__attribute__((availability(swift, unavailable, message="NSMutableOrderedSet diffing methods are not available in Swift"))) +// @interface NSMutableOrderedSet (NSMutableOrderedSetDiffing) + +// - (void)applyDifference:(NSOrderedCollectionDifference *)difference; + +/* @end */ + +#pragma clang assume_nonnull end + + + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + +extern "C" NSExceptionName const NSUndefinedKeyException; + +typedef NSString * NSKeyValueOperator __attribute__((swift_wrapper(enum))); + + + +extern "C" NSKeyValueOperator const NSAverageKeyValueOperator; +extern "C" NSKeyValueOperator const NSCountKeyValueOperator; +extern "C" NSKeyValueOperator const NSDistinctUnionOfArraysKeyValueOperator; +extern "C" NSKeyValueOperator const NSDistinctUnionOfObjectsKeyValueOperator; +extern "C" NSKeyValueOperator const NSDistinctUnionOfSetsKeyValueOperator; +extern "C" NSKeyValueOperator const NSMaximumKeyValueOperator; +extern "C" NSKeyValueOperator const NSMinimumKeyValueOperator; +extern "C" NSKeyValueOperator const NSSumKeyValueOperator; +extern "C" NSKeyValueOperator const NSUnionOfArraysKeyValueOperator; +extern "C" NSKeyValueOperator const NSUnionOfObjectsKeyValueOperator; +extern "C" NSKeyValueOperator const NSUnionOfSetsKeyValueOperator; + +// @interface NSObject(NSKeyValueCoding) + + + +@property (class, readonly) BOOL accessInstanceVariablesDirectly; +// - (nullable id)valueForKey:(NSString *)key; +// - (void)setValue:(nullable id)value forKey:(NSString *)key; + + + + + +// - (BOOL)validateValue:(inout id _Nullable * _Nonnull)ioValue forKey:(NSString *)inKey error:(out NSError **)outError; +// - (NSMutableArray *)mutableArrayValueForKey:(NSString *)key; +// - (NSMutableOrderedSet *)mutableOrderedSetValueForKey:(NSString *)key __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSMutableSet *)mutableSetValueForKey:(NSString *)key; + + + +// - (nullable id)valueForKeyPath:(NSString *)keyPath; +// - (void)setValue:(nullable id)value forKeyPath:(NSString *)keyPath; +// - (BOOL)validateValue:(inout id _Nullable * _Nonnull)ioValue forKeyPath:(NSString *)inKeyPath error:(out NSError **)outError; +// - (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath; +// - (NSMutableOrderedSet *)mutableOrderedSetValueForKeyPath:(NSString *)keyPath __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath; + + + +// - (nullable id)valueForUndefinedKey:(NSString *)key; + + + +// - (void)setValue:(nullable id)value forUndefinedKey:(NSString *)key; + + + +// - (void)setNilValueForKey:(NSString *)key; + + + +// - (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys; + + + +// - (void)setValuesForKeysWithDictionary:(NSDictionary *)keyedValues; + +/* @end */ + + +// @interface NSArray(NSKeyValueCoding) + + + +// - (id)valueForKey:(NSString *)key; + + + +// - (void)setValue:(nullable id)value forKey:(NSString *)key; + +/* @end */ + + +// @interface NSDictionary(NSKeyValueCoding) + + + +// - (nullable ObjectType)valueForKey:(NSString *)key; + +/* @end */ + + +// @interface NSMutableDictionary(NSKeyValueCoding) + + + +// - (void)setValue:(nullable ObjectType)value forKey:(NSString *)key; + +/* @end */ + + +// @interface NSOrderedSet(NSKeyValueCoding) + + + +// - (id)valueForKey:(NSString *)key __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)setValue:(nullable id)value forKey:(NSString *)key __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSSet(NSKeyValueCoding) + + + +// - (id)valueForKey:(NSString *)key; + + + +// - (void)setValue:(nullable id)value forKey:(NSString *)key; + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSIndexSet; +#ifndef _REWRITER_typedef_NSIndexSet +#define _REWRITER_typedef_NSIndexSet +typedef struct objc_object NSIndexSet; +typedef struct {} _objc_exc_NSIndexSet; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef NSUInteger NSKeyValueObservingOptions; enum { + + + + NSKeyValueObservingOptionNew = 0x01, + NSKeyValueObservingOptionOld = 0x02, + + + + NSKeyValueObservingOptionInitial __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x04, + + + + + + NSKeyValueObservingOptionPrior __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x08 + +}; + + + +typedef NSUInteger NSKeyValueChange; enum { + NSKeyValueChangeSetting = 1, + NSKeyValueChangeInsertion = 2, + NSKeyValueChangeRemoval = 3, + NSKeyValueChangeReplacement = 4, +}; + + + +typedef NSUInteger NSKeyValueSetMutationKind; enum { + NSKeyValueUnionSetMutation = 1, + NSKeyValueMinusSetMutation = 2, + NSKeyValueIntersectSetMutation = 3, + NSKeyValueSetSetMutation = 4 +}; + +typedef NSString * NSKeyValueChangeKey __attribute__((swift_wrapper(enum))); + + +extern "C" NSKeyValueChangeKey const NSKeyValueChangeKindKey; +extern "C" NSKeyValueChangeKey const NSKeyValueChangeNewKey; +extern "C" NSKeyValueChangeKey const NSKeyValueChangeOldKey; +extern "C" NSKeyValueChangeKey const NSKeyValueChangeIndexesKey; +extern "C" NSKeyValueChangeKey const NSKeyValueChangeNotificationIsPriorKey __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @interface NSObject(NSKeyValueObserving) +// - (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary *)change context:(nullable void *)context; + +/* @end */ + + +// @interface NSObject(NSKeyValueObserverRegistration) + + + +// - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath; + +/* @end */ + + +// @interface NSArray(NSKeyValueObserverRegistration) + + + +// - (void)addObserver:(NSObject *)observer toObjectsAtIndexes:(NSIndexSet *)indexes forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; +// - (void)removeObserver:(NSObject *)observer fromObjectsAtIndexes:(NSIndexSet *)indexes forKeyPath:(NSString *)keyPath context:(nullable void *)context __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeObserver:(NSObject *)observer fromObjectsAtIndexes:(NSIndexSet *)indexes forKeyPath:(NSString *)keyPath; + + + +// - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath; + +/* @end */ + + +// @interface NSOrderedSet(NSKeyValueObserverRegistration) + + + +// - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath; + +/* @end */ + + +// @interface NSSet(NSKeyValueObserverRegistration) + + + +// - (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context; +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath; + +/* @end */ + + +// @interface NSObject(NSKeyValueObserverNotification) + + + + + + + +// - (void)willChangeValueForKey:(NSString *)key; +// - (void)didChangeValueForKey:(NSString *)key; + + + + + + + +// - (void)willChange:(NSKeyValueChange)changeKind valuesAtIndexes:(NSIndexSet *)indexes forKey:(NSString *)key; +// - (void)didChange:(NSKeyValueChange)changeKind valuesAtIndexes:(NSIndexSet *)indexes forKey:(NSString *)key; +// - (void)willChangeValueForKey:(NSString *)key withSetMutation:(NSKeyValueSetMutationKind)mutationKind usingObjects:(NSSet *)objects; +// - (void)didChangeValueForKey:(NSString *)key withSetMutation:(NSKeyValueSetMutationKind)mutationKind usingObjects:(NSSet *)objects; + +/* @end */ + + +// @interface NSObject(NSKeyValueObservingCustomization) +// + (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key; + + + +// @property (nullable) void *observationInfo __attribute__((objc_returns_inner_pointer)); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSPropertyListMutabilityOptions; enum { + NSPropertyListImmutable = kCFPropertyListImmutable, + NSPropertyListMutableContainers = kCFPropertyListMutableContainers, + NSPropertyListMutableContainersAndLeaves = kCFPropertyListMutableContainersAndLeaves +}; + +typedef NSUInteger NSPropertyListFormat; enum { + NSPropertyListOpenStepFormat = kCFPropertyListOpenStepFormat, + NSPropertyListXMLFormat_v1_0 = kCFPropertyListXMLFormat_v1_0, + NSPropertyListBinaryFormat_v1_0 = kCFPropertyListBinaryFormat_v1_0 +}; + +typedef NSPropertyListMutabilityOptions NSPropertyListReadOptions; +typedef NSUInteger NSPropertyListWriteOptions; + + +#ifndef _REWRITER_typedef_NSPropertyListSerialization +#define _REWRITER_typedef_NSPropertyListSerialization +typedef struct objc_object NSPropertyListSerialization; +typedef struct {} _objc_exc_NSPropertyListSerialization; +#endif + +struct NSPropertyListSerialization_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *reserved[6]; +}; + + + + +// + (BOOL)propertyList:(id)plist isValidForFormat:(NSPropertyListFormat)format; + + + +// + (nullable NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(out NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (NSInteger)writePropertyList:(id)plist toStream:(NSOutputStream *)stream format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(out NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable id)propertyListWithData:(NSData *)data options:(NSPropertyListReadOptions)opt format:(nullable NSPropertyListFormat *)format error:(out NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable id)propertyListWithStream:(NSInputStream *)stream options:(NSPropertyListReadOptions)opt format:(nullable NSPropertyListFormat *)format error:(out NSError **)error __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// + (nullable NSData *)dataFromPropertyList:(id)plist format:(NSPropertyListFormat)format errorDescription:(out __attribute__((objc_ownership(strong))) NSString * _Nullable * _Nullable)errorString __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use dataWithPropertyList:format:options:error: instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use dataWithPropertyList:format:options:error: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use dataWithPropertyList:format:options:error: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use dataWithPropertyList:format:options:error: instead."))); + + + +// + (nullable id)propertyListFromData:(NSData *)data mutabilityOption:(NSPropertyListMutabilityOptions)opt format:(nullable NSPropertyListFormat *)format errorDescription:(out __attribute__((objc_ownership(strong))) NSString * _Nullable * _Nullable)errorString __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Use propertyListWithData:options:format:error: instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use propertyListWithData:options:format:error: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use propertyListWithData:options:format:error: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use propertyListWithData:options:format:error: instead."))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSMutableData +#define _REWRITER_typedef_NSMutableData +typedef struct objc_object NSMutableData; +typedef struct {} _objc_exc_NSMutableData; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @protocol NSKeyedArchiverDelegate, NSKeyedUnarchiverDelegate; + +#pragma clang assume_nonnull begin + +extern "C" NSExceptionName const NSInvalidArchiveOperationException; +extern "C" NSExceptionName const NSInvalidUnarchiveOperationException; + +extern "C" NSString * const NSKeyedArchiveRootObjectKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +#ifndef _REWRITER_typedef_NSKeyedArchiver +#define _REWRITER_typedef_NSKeyedArchiver +typedef struct objc_object NSKeyedArchiver; +typedef struct {} _objc_exc_NSKeyedArchiver; +#endif + +struct NSKeyedArchiver_IMPL { + struct NSCoder_IMPL NSCoder_IVARS; + void *_stream; + NSUInteger _flags; + id _delegate; + id _containers; + id _objects; + id _objRefMap; + id _replacementMap; + id _classNameMap; + id _conditionals; + id _classes; + NSUInteger _genericKey; + void *_cache; + NSUInteger _cacheSize; + NSUInteger _estimatedCount; + void *_reserved2; + id _visited; + void *_reserved0; +}; + +// - (instancetype)initRequiringSecureCoding:(BOOL)requiresSecureCoding __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// + (nullable NSData *)archivedDataWithRootObject:(id)object requiringSecureCoding:(BOOL)requiresSecureCoding error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (instancetype)init __attribute__((availability(macosx,introduced=10.12,deprecated=10.14,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(ios,introduced=10.0,deprecated=12.0,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(watchos,introduced=3.0,deprecated=5.0,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(tvos,introduced=10.0,deprecated=12.0,message="Use -initRequiringSecureCoding: instead"))); +// - (instancetype)initForWritingWithMutableData:(NSMutableData *)data __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use -initRequiringSecureCoding: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use -initRequiringSecureCoding: instead"))); + +// + (NSData *)archivedDataWithRootObject:(id)rootObject __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))); +// + (BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use +archivedDataWithRootObject:requiringSecureCoding:error: instead"))); + +// @property (nullable, assign) id delegate; + +// @property NSPropertyListFormat outputFormat; + + +// @property (readonly, strong) NSData *encodedData __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// - (void)finishEncoding; + +// + (void)setClassName:(nullable NSString *)codedName forClass:(Class)cls; +// - (void)setClassName:(nullable NSString *)codedName forClass:(Class)cls; + + + +// + (nullable NSString *)classNameForClass:(Class)cls; +// - (nullable NSString *)classNameForClass:(Class)cls; + +// - (void)encodeObject:(nullable id)object forKey:(NSString *)key; +// - (void)encodeConditionalObject:(nullable id)object forKey:(NSString *)key; +// - (void)encodeBool:(BOOL)value forKey:(NSString *)key; +// - (void)encodeInt:(int)value forKey:(NSString *)key; +// - (void)encodeInt32:(int32_t)value forKey:(NSString *)key; +// - (void)encodeInt64:(int64_t)value forKey:(NSString *)key; +// - (void)encodeFloat:(float)value forKey:(NSString *)key; +// - (void)encodeDouble:(double)value forKey:(NSString *)key; +// - (void)encodeBytes:(nullable const uint8_t *)bytes length:(NSUInteger)length forKey:(NSString *)key; + + +// @property (readwrite) BOOL requiresSecureCoding __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSKeyedUnarchiver +#define _REWRITER_typedef_NSKeyedUnarchiver +typedef struct objc_object NSKeyedUnarchiver; +typedef struct {} _objc_exc_NSKeyedUnarchiver; +#endif + +struct NSKeyedUnarchiver_IMPL { + struct NSCoder_IMPL NSCoder_IVARS; + id _delegate; + uint32_t _flags; + id _objRefMap; + id _replacementMap; + id _nameClassMap; + id _tmpRefObjMap; + id _refObjMap; + int32_t _genericKey; + id _data; + void *_offsetData; + id _containers; + id _objects; + const uint8_t *_bytes; + uint64_t _len; + id _helper; + void *_reserved0; +}; + +// - (nullable instancetype)initForReadingFromData:(NSData *)data error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// + (nullable id)unarchivedObjectOfClass:(Class)cls fromData:(NSData *)data error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); +// + (nullable id)unarchivedObjectOfClasses:(NSSet *)classes fromData:(NSData *)data error:(NSError **)error __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((swift_private)); + +// - (instancetype)init __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use -initForReadingFromData:error: instead"))); +// - (instancetype)initForReadingWithData:(NSData *)data __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use -initForReadingFromData:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use -initForReadingFromData:error: instead"))); + +// + (nullable id)unarchiveObjectWithData:(NSData *)data __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))); +// + (nullable id)unarchiveTopLevelObjectWithData:(NSData *)data error:(NSError **)error __attribute__((availability(macosx,introduced=10.11,deprecated=10.14,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(swift, unavailable, message="Use 'unarchiveTopLevelObjectWithData(_:) throws' instead"))); +// + (nullable id)unarchiveObjectWithFile:(NSString *)path __attribute__((availability(macosx,introduced=10.2,deprecated=10.14,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Use +unarchivedObjectOfClass:fromData:error: instead"))); + +// @property (nullable, assign) id delegate; + +// - (void)finishDecoding; + +// + (void)setClass:(nullable Class)cls forClassName:(NSString *)codedName; +// - (void)setClass:(nullable Class)cls forClassName:(NSString *)codedName; + + + +// + (nullable Class)classForClassName:(NSString *)codedName; +// - (nullable Class)classForClassName:(NSString *)codedName; + +// - (BOOL)containsValueForKey:(NSString *)key; + +// - (nullable id)decodeObjectForKey:(NSString *)key; +// - (BOOL)decodeBoolForKey:(NSString *)key; +// - (int)decodeIntForKey:(NSString *)key; +// - (int32_t)decodeInt32ForKey:(NSString *)key; +// - (int64_t)decodeInt64ForKey:(NSString *)key; +// - (float)decodeFloatForKey:(NSString *)key; +// - (double)decodeDoubleForKey:(NSString *)key; +// - (nullable const uint8_t *)decodeBytesForKey:(NSString *)key returnedLength:(nullable NSUInteger *)lengthp __attribute__((objc_returns_inner_pointer)); + + +// @property (readwrite) BOOL requiresSecureCoding __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readwrite) NSDecodingFailurePolicy decodingFailurePolicy __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @protocol NSKeyedArchiverDelegate +/* @optional */ + + +// - (nullable id)archiver:(NSKeyedArchiver *)archiver willEncodeObject:(id)object; +// - (void)archiver:(NSKeyedArchiver *)archiver didEncodeObject:(nullable id)object; + + + + + + +// - (void)archiver:(NSKeyedArchiver *)archiver willReplaceObject:(nullable id)object withObject:(nullable id)newObject; + + + + + +// - (void)archiverWillFinish:(NSKeyedArchiver *)archiver; + + +// - (void)archiverDidFinish:(NSKeyedArchiver *)archiver; + + +/* @end */ + + +// @protocol NSKeyedUnarchiverDelegate +/* @optional */ + + +// - (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames; +// - (nullable id)unarchiver:(NSKeyedUnarchiver *)unarchiver didDecodeObject:(nullable id) __attribute__((ns_consumed)) object __attribute__((ns_returns_retained)); + + + + + + + +// - (void)unarchiver:(NSKeyedUnarchiver *)unarchiver willReplaceObject:(id)object withObject:(id)newObject; + + + + + +// - (void)unarchiverWillFinish:(NSKeyedUnarchiver *)unarchiver; + + +// - (void)unarchiverDidFinish:(NSKeyedUnarchiver *)unarchiver; + + +/* @end */ + + +// @interface NSObject (NSKeyedArchiverObjectSubstitution) + +// @property (nullable, readonly) Class classForKeyedArchiver; +// - (nullable id)replacementObjectForKeyedArchiver:(NSKeyedArchiver *)archiver; +// + (NSArray *)classFallbacksForKeyedArchiver; + + +/* @end */ + + +// @interface NSObject (NSKeyedUnarchiverObjectSubstitution) + +// + (Class)classForKeyedUnarchiver; + + + + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSDate; +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + + +#pragma clang assume_nonnull begin + +// @protocol NSLocking + +// - (void)lock; +// - (void)unlock; + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSLock +#define _REWRITER_typedef_NSLock +typedef struct objc_object NSLock; +typedef struct {} _objc_exc_NSLock; +#endif + +struct NSLock_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + +// - (BOOL)tryLock; +// - (BOOL)lockBeforeDate:(NSDate *)limit; + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSConditionLock +#define _REWRITER_typedef_NSConditionLock +typedef struct objc_object NSConditionLock; +typedef struct {} _objc_exc_NSConditionLock; +#endif + +struct NSConditionLock_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + +// - (instancetype)initWithCondition:(NSInteger)condition __attribute__((objc_designated_initializer)); + +// @property (readonly) NSInteger condition; +// - (void)lockWhenCondition:(NSInteger)condition; +// - (BOOL)tryLock; +// - (BOOL)tryLockWhenCondition:(NSInteger)condition; +// - (void)unlockWithCondition:(NSInteger)condition; +// - (BOOL)lockBeforeDate:(NSDate *)limit; +// - (BOOL)lockWhenCondition:(NSInteger)condition beforeDate:(NSDate *)limit; + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + +#ifndef _REWRITER_typedef_NSRecursiveLock +#define _REWRITER_typedef_NSRecursiveLock +typedef struct objc_object NSRecursiveLock; +typedef struct {} _objc_exc_NSRecursiveLock; +#endif + +struct NSRecursiveLock_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + +// - (BOOL)tryLock; +// - (BOOL)lockBeforeDate:(NSDate *)limit; + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSCondition +#define _REWRITER_typedef_NSCondition +typedef struct objc_object NSCondition; +typedef struct {} _objc_exc_NSCondition; +#endif + +struct NSCondition_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + +// - (void)wait; +// - (BOOL)waitUntilDate:(NSDate *)limit; +// - (void)signal; +// - (void)broadcast; + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSMapTable +#define _REWRITER_typedef_NSMapTable +typedef struct objc_object NSMapTable; +typedef struct {} _objc_exc_NSMapTable; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + +static const NSPointerFunctionsOptions NSMapTableStrongMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsStrongMemory; +static const NSPointerFunctionsOptions NSMapTableZeroingWeakMemory __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = NSPointerFunctionsZeroingWeakMemory; +static const NSPointerFunctionsOptions NSMapTableCopyIn __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsCopyIn; +static const NSPointerFunctionsOptions NSMapTableObjectPointerPersonality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsObjectPointerPersonality; +static const NSPointerFunctionsOptions NSMapTableWeakMemory __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = NSPointerFunctionsWeakMemory; + +typedef NSUInteger NSMapTableOptions; + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMapTable +#define _REWRITER_typedef_NSMapTable +typedef struct objc_object NSMapTable; +typedef struct {} _objc_exc_NSMapTable; +#endif + +struct NSMapTable_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithKeyOptions:(NSPointerFunctionsOptions)keyOptions valueOptions:(NSPointerFunctionsOptions)valueOptions capacity:(NSUInteger)initialCapacity __attribute__((objc_designated_initializer)); +// - (instancetype)initWithKeyPointerFunctions:(NSPointerFunctions *)keyFunctions valuePointerFunctions:(NSPointerFunctions *)valueFunctions capacity:(NSUInteger)initialCapacity __attribute__((objc_designated_initializer)); + +// + (NSMapTable *)mapTableWithKeyOptions:(NSPointerFunctionsOptions)keyOptions valueOptions:(NSPointerFunctionsOptions)valueOptions; + +// + (id)mapTableWithStrongToStrongObjects __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// + (id)mapTableWithWeakToStrongObjects __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// + (id)mapTableWithStrongToWeakObjects __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// + (id)mapTableWithWeakToWeakObjects __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="GC no longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// + (NSMapTable *)strongToStrongObjectsMapTable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSMapTable *)weakToStrongObjectsMapTable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSMapTable *)strongToWeakObjectsMapTable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSMapTable *)weakToWeakObjectsMapTable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (readonly, copy) NSPointerFunctions *keyPointerFunctions; +// @property (readonly, copy) NSPointerFunctions *valuePointerFunctions; + +// - (nullable ObjectType)objectForKey:(nullable KeyType)aKey; + +// - (void)removeObjectForKey:(nullable KeyType)aKey; +// - (void)setObject:(nullable ObjectType)anObject forKey:(nullable KeyType)aKey; + +// @property (readonly) NSUInteger count; + +// - (NSEnumerator *)keyEnumerator; +// - (nullable NSEnumerator *)objectEnumerator; + +// - (void)removeAllObjects; + +// - (NSDictionary *)dictionaryRepresentation; +/* @end */ + + + + + +typedef struct {NSUInteger _pi; NSUInteger _si; void * _Nullable _bs;} NSMapEnumerator; + + + +extern "C" void NSFreeMapTable(NSMapTable *table); +extern "C" void NSResetMapTable(NSMapTable *table); +extern "C" BOOL NSCompareMapTables(NSMapTable *table1, NSMapTable *table2); +extern "C" NSMapTable *NSCopyMapTableWithZone(NSMapTable *table, NSZone * _Nullable zone); +extern "C" BOOL NSMapMember(NSMapTable *table, const void *key, void * _Nullable * _Nullable originalKey, void * _Nullable * _Nullable value); +extern "C" void * _Nullable NSMapGet(NSMapTable *table, const void * _Nullable key); +extern "C" void NSMapInsert(NSMapTable *table, const void * _Nullable key, const void * _Nullable value); +extern "C" void NSMapInsertKnownAbsent(NSMapTable *table, const void * _Nullable key, const void * _Nullable value); +extern "C" void * _Nullable NSMapInsertIfAbsent(NSMapTable *table, const void * _Nullable key, const void * _Nullable value); +extern "C" void NSMapRemove(NSMapTable *table, const void * _Nullable key); +extern "C" NSMapEnumerator NSEnumerateMapTable(NSMapTable *table); +extern "C" BOOL NSNextMapEnumeratorPair(NSMapEnumerator *enumerator, void * _Nullable * _Nullable key, void * _Nullable * _Nullable value); +extern "C" void NSEndMapTableEnumeration(NSMapEnumerator *enumerator); +extern "C" NSUInteger NSCountMapTable(NSMapTable *table); +extern "C" NSString *NSStringFromMapTable(NSMapTable *table); +extern "C" NSArray *NSAllMapTableKeys(NSMapTable *table); +extern "C" NSArray *NSAllMapTableValues(NSMapTable *table); + + + + +typedef struct { + NSUInteger (* _Nullable hash)(NSMapTable *table, const void *); + BOOL (* _Nullable isEqual)(NSMapTable *table, const void *, const void *); + void (* _Nullable retain)(NSMapTable *table, const void *); + void (* _Nullable release)(NSMapTable *table, void *); + NSString * _Nullable (* _Nullable describe)(NSMapTable *table, const void *); + const void * _Nullable notAKeyMarker; +} NSMapTableKeyCallBacks; + + + + + +typedef struct { + void (* _Nullable retain)(NSMapTable *table, const void *); + void (* _Nullable release)(NSMapTable *table, void *); + NSString * _Nullable(* _Nullable describe)(NSMapTable *table, const void *); +} NSMapTableValueCallBacks; + +extern "C" NSMapTable *NSCreateMapTableWithZone(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity, NSZone * _Nullable zone); +extern "C" NSMapTable *NSCreateMapTable(NSMapTableKeyCallBacks keyCallBacks, NSMapTableValueCallBacks valueCallBacks, NSUInteger capacity); + + + + +extern "C" const NSMapTableKeyCallBacks NSIntegerMapKeyCallBacks __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" const NSMapTableKeyCallBacks NSNonOwnedPointerMapKeyCallBacks; +extern "C" const NSMapTableKeyCallBacks NSNonOwnedPointerOrNullMapKeyCallBacks; +extern "C" const NSMapTableKeyCallBacks NSNonRetainedObjectMapKeyCallBacks; +extern "C" const NSMapTableKeyCallBacks NSObjectMapKeyCallBacks; +extern "C" const NSMapTableKeyCallBacks NSOwnedPointerMapKeyCallBacks; +extern "C" const NSMapTableKeyCallBacks NSIntMapKeyCallBacks __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + + + +extern "C" const NSMapTableValueCallBacks NSIntegerMapValueCallBacks __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" const NSMapTableValueCallBacks NSNonOwnedPointerMapValueCallBacks; +extern "C" const NSMapTableValueCallBacks NSObjectMapValueCallBacks; +extern "C" const NSMapTableValueCallBacks NSNonRetainedObjectMapValueCallBacks; +extern "C" const NSMapTableValueCallBacks NSOwnedPointerMapValueCallBacks; +extern "C" const NSMapTableValueCallBacks NSIntMapValueCallBacks __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(swift, unavailable, message="NSInvocation and related APIs not available"))) + +#ifndef _REWRITER_typedef_NSMethodSignature +#define _REWRITER_typedef_NSMethodSignature +typedef struct objc_object NSMethodSignature; +typedef struct {} _objc_exc_NSMethodSignature; +#endif + +struct NSMethodSignature_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (nullable NSMethodSignature *)signatureWithObjCTypes:(const char *)types; + +// @property (readonly) NSUInteger numberOfArguments; +// - (const char *)getArgumentTypeAtIndex:(NSUInteger)idx __attribute__((objc_returns_inner_pointer)); + +// @property (readonly) NSUInteger frameLength; + +// - (BOOL)isOneway; + +// @property (readonly) const char *methodReturnType __attribute__((objc_returns_inner_pointer)); +// @property (readonly) NSUInteger methodReturnLength; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSNotification; +#ifndef _REWRITER_typedef_NSNotification +#define _REWRITER_typedef_NSNotification +typedef struct objc_object NSNotification; +typedef struct {} _objc_exc_NSNotification; +#endif + +#ifndef _REWRITER_typedef_NSNotificationCenter +#define _REWRITER_typedef_NSNotificationCenter +typedef struct objc_object NSNotificationCenter; +typedef struct {} _objc_exc_NSNotificationCenter; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSPostingStyle; enum { + NSPostWhenIdle = 1, + NSPostASAP = 2, + NSPostNow = 3 +}; + +typedef NSUInteger NSNotificationCoalescing; enum { + NSNotificationNoCoalescing = 0, + NSNotificationCoalescingOnName = 1, + NSNotificationCoalescingOnSender = 2 +}; + + +#ifndef _REWRITER_typedef_NSNotificationQueue +#define _REWRITER_typedef_NSNotificationQueue +typedef struct objc_object NSNotificationQueue; +typedef struct {} _objc_exc_NSNotificationQueue; +#endif + +struct NSNotificationQueue_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _notificationCenter; + id _asapQueue; + id _asapObs; + id _idleQueue; + id _idleObs; +}; + +@property (class, readonly, strong) NSNotificationQueue *defaultQueue; + +// - (instancetype)initWithNotificationCenter:(NSNotificationCenter *)notificationCenter __attribute__((objc_designated_initializer)); + +// - (void)enqueueNotification:(NSNotification *)notification postingStyle:(NSPostingStyle)postingStyle; +// - (void)enqueueNotification:(NSNotification *)notification postingStyle:(NSPostingStyle)postingStyle coalesceMask:(NSNotificationCoalescing)coalesceMask forModes:(nullable NSArray *)modes; + +// - (void)dequeueNotificationsMatching:(NSNotification *)notification coalesceMask:(NSUInteger)coalesceMask; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSNull +#define _REWRITER_typedef_NSNull +typedef struct objc_object NSNull; +typedef struct {} _objc_exc_NSNull; +#endif + +struct NSNull_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (NSNull *)null; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSOperation +#define _REWRITER_typedef_NSOperation +typedef struct objc_object NSOperation; +typedef struct {} _objc_exc_NSOperation; +#endif + +struct NSOperation_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (void)start; +// - (void)main; + +// @property (readonly, getter=isCancelled) BOOL cancelled; +// - (void)cancel; + +// @property (readonly, getter=isExecuting) BOOL executing; +// @property (readonly, getter=isFinished) BOOL finished; +// @property (readonly, getter=isConcurrent) BOOL concurrent; +// @property (readonly, getter=isAsynchronous) BOOL asynchronous __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, getter=isReady) BOOL ready; + +// - (void)addDependency:(NSOperation *)op; +// - (void)removeDependency:(NSOperation *)op; + +// @property (readonly, copy) NSArray *dependencies; + +typedef NSInteger NSOperationQueuePriority; enum { + NSOperationQueuePriorityVeryLow = -8L, + NSOperationQueuePriorityLow = -4L, + NSOperationQueuePriorityNormal = 0, + NSOperationQueuePriorityHigh = 4, + NSOperationQueuePriorityVeryHigh = 8 +}; + +// @property NSOperationQueuePriority queuePriority; + +// @property (nullable, copy) void (^completionBlock)(void) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)waitUntilFinished __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property double threadPriority __attribute__((availability(macos,introduced=10.6,deprecated=10.10,message="Not supported"))) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + +// @property NSQualityOfService qualityOfService __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSBlockOperation +#define _REWRITER_typedef_NSBlockOperation +typedef struct objc_object NSBlockOperation; +typedef struct {} _objc_exc_NSBlockOperation; +#endif + +struct NSBlockOperation_IMPL { + struct NSOperation_IMPL NSOperation_IVARS; +}; + +// + (instancetype)blockOperationWithBlock:(void (^)(void))block; + +// - (void)addExecutionBlock:(void (^)(void))block; +// @property (readonly, copy) NSArray *executionBlocks; + +/* @end */ + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +__attribute__((availability(swift, unavailable, message="NSInvocation and related APIs not available"))) + +#ifndef _REWRITER_typedef_NSInvocationOperation +#define _REWRITER_typedef_NSInvocationOperation +typedef struct objc_object NSInvocationOperation; +typedef struct {} _objc_exc_NSInvocationOperation; +#endif + +struct NSInvocationOperation_IMPL { + struct NSOperation_IMPL NSOperation_IVARS; +}; + +// - (nullable instancetype)initWithTarget:(id)target selector:(SEL)sel object:(nullable id)arg; +// - (instancetype)initWithInvocation:(NSInvocation *)inv __attribute__((objc_designated_initializer)); + +// @property (readonly, retain) NSInvocation *invocation; + +// @property (nullable, readonly, retain) id result; + +/* @end */ + + +extern "C" NSExceptionName const NSInvocationOperationVoidResultException __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSExceptionName const NSInvocationOperationCancelledException __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +static const NSInteger NSOperationQueueDefaultMaxConcurrentOperationCount = -1; + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + +struct NSOperationQueue_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// @property (readonly, strong) NSProgress *progress __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +// - (void)addOperation:(NSOperation *)op; +// - (void)addOperations:(NSArray *)ops waitUntilFinished:(BOOL)wait __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)addOperationWithBlock:(void (^)(void))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)addBarrierBlock:(void (^)(void))barrier __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +// @property NSInteger maxConcurrentOperationCount; + +// @property (getter=isSuspended) BOOL suspended; + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property NSQualityOfService qualityOfService __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, assign ) dispatch_queue_t underlyingQueue __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)cancelAllOperations; + +// - (void)waitUntilAllOperationsAreFinished; + +@property (class, readonly, strong, nullable) NSOperationQueue *currentQueue __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +@property (class, readonly, strong) NSOperationQueue *mainQueue __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSOperationQueue (NSDeprecated) + + + +// @property (readonly, copy) NSArray<__kindof NSOperation *> *operations __attribute__((availability(macos,introduced=10.5,deprecated=100000,message="access to operations is inherently a race condition, it should not be used. For barrier style behaviors please use addBarrierBlock: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,message="access to operations is inherently a race condition, it should not be used. For barrier style behaviors please use addBarrierBlock: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,message="access to operations is inherently a race condition, it should not be used. For barrier style behaviors please use addBarrierBlock: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,message="access to operations is inherently a race condition, it should not be used. For barrier style behaviors please use addBarrierBlock: instead"))); + +// @property (readonly) NSUInteger operationCount __attribute__((availability(macos,introduced=10.6,deprecated=100000,replacement="progress.completedUnitCount"))) __attribute__((availability(ios,introduced=4.0,deprecated=100000,replacement="progress.completedUnitCount"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="progress.completedUnitCount"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="progress.completedUnitCount"))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + +#pragma clang assume_nonnull begin + + + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSOrthography +#define _REWRITER_typedef_NSOrthography +typedef struct objc_object NSOrthography; +typedef struct {} _objc_exc_NSOrthography; +#endif + +struct NSOrthography_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (readonly, copy) NSString *dominantScript; +// @property (readonly, copy) NSDictionary *> *languageMap; +// - (instancetype)initWithDominantScript:(NSString *)script languageMap:(NSDictionary *> *)map __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + +// @interface NSOrthography (NSOrthographyExtended) + + +// - (nullable NSArray *)languagesForScript:(NSString *)script __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSString *)dominantLanguageForScript:(NSString *)script __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (readonly, copy) NSString *dominantLanguage __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *allScripts __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSArray *allLanguages __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (instancetype)defaultOrthographyForLanguage:(NSString *)language __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + +// @interface NSOrthography (NSOrthographyCreation) + +// + (instancetype)orthographyWithDominantScript:(NSString *)script languageMap:(NSDictionary *> *)map __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPointerArray +#define _REWRITER_typedef_NSPointerArray +typedef struct objc_object NSPointerArray; +typedef struct {} _objc_exc_NSPointerArray; +#endif + +struct NSPointerArray_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithOptions:(NSPointerFunctionsOptions)options __attribute__((objc_designated_initializer)); +// - (instancetype)initWithPointerFunctions:(NSPointerFunctions *)functions __attribute__((objc_designated_initializer)); + +// + (NSPointerArray *)pointerArrayWithOptions:(NSPointerFunctionsOptions)options; +// + (NSPointerArray *)pointerArrayWithPointerFunctions:(NSPointerFunctions *)functions; + + +// @property (readonly, copy) NSPointerFunctions *pointerFunctions; + +// - (nullable void *)pointerAtIndex:(NSUInteger)index; + + +// - (void)addPointer:(nullable void *)pointer; +// - (void)removePointerAtIndex:(NSUInteger)index; +// - (void)insertPointer:(nullable void *)item atIndex:(NSUInteger)index; + +// - (void)replacePointerAtIndex:(NSUInteger)index withPointer:(nullable void *)item; + +// - (void)compact; + + + +// @property NSUInteger count; + +/* @end */ + + + +// @interface NSPointerArray (NSPointerArrayConveniences) + + + + + + + +// + (NSPointerArray *)strongObjectsPointerArray __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSPointerArray *)weakObjectsPointerArray __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *allObjects; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + +typedef int NSSocketNativeHandle; + +// @class NSRunLoop; +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + +#ifndef _REWRITER_typedef_NSMutableArray +#define _REWRITER_typedef_NSMutableArray +typedef struct objc_object NSMutableArray; +typedef struct {} _objc_exc_NSMutableArray; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +// @class NSConnection; +#ifndef _REWRITER_typedef_NSConnection +#define _REWRITER_typedef_NSConnection +typedef struct objc_object NSConnection; +typedef struct {} _objc_exc_NSConnection; +#endif + +#ifndef _REWRITER_typedef_NSPortMessage +#define _REWRITER_typedef_NSPortMessage +typedef struct objc_object NSPortMessage; +typedef struct {} _objc_exc_NSPortMessage; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @protocol NSPortDelegate, NSMachPortDelegate; + +#pragma clang assume_nonnull begin + +extern "C" NSNotificationName const NSPortDidBecomeInvalidNotification; + + +#ifndef _REWRITER_typedef_NSPort +#define _REWRITER_typedef_NSPort +typedef struct objc_object NSPort; +typedef struct {} _objc_exc_NSPort; +#endif + +struct NSPort_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + + + +// + (NSPort *)port; + +// - (void)invalidate; +// @property (readonly, getter=isValid) BOOL valid; + +// - (void)setDelegate:(nullable id )anObject; +// - (nullable id )delegate; + + + + + +// - (void)scheduleInRunLoop:(NSRunLoop *)runLoop forMode:(NSRunLoopMode)mode; +// - (void)removeFromRunLoop:(NSRunLoop *)runLoop forMode:(NSRunLoopMode)mode; + + + +// @property (readonly) NSUInteger reservedSpaceLength; +// - (BOOL)sendBeforeDate:(NSDate *)limitDate components:(nullable NSMutableArray *)components from:(nullable NSPort *) receivePort reserved:(NSUInteger)headerSpaceReserved; +// - (BOOL)sendBeforeDate:(NSDate *)limitDate msgid:(NSUInteger)msgID components:(nullable NSMutableArray *)components from:(nullable NSPort *)receivePort reserved:(NSUInteger)headerSpaceReserved; +/* @end */ + + +// @protocol NSPortDelegate +/* @optional */ + +// - (void)handlePortMessage:(NSPortMessage *)message; + + + +/* @end */ + + + + +__attribute__((objc_arc_weak_reference_unavailable)) + +#ifndef _REWRITER_typedef_NSMachPort +#define _REWRITER_typedef_NSMachPort +typedef struct objc_object NSMachPort; +typedef struct {} _objc_exc_NSMachPort; +#endif + +struct NSMachPort_IMPL { + struct NSPort_IMPL NSPort_IVARS; + id _delegate; + NSUInteger _flags; + uint32_t _machPort; + NSUInteger _reserved; +}; + + +// + (NSPort *)portWithMachPort:(uint32_t)machPort; +// - (instancetype)initWithMachPort:(uint32_t)machPort __attribute__((objc_designated_initializer)); + +// - (void)setDelegate:(nullable id )anObject; +// - (nullable id )delegate; + +typedef NSUInteger NSMachPortOptions; enum { + NSMachPortDeallocateNone = 0, + NSMachPortDeallocateSendRight = (1UL << 0), + NSMachPortDeallocateReceiveRight = (1UL << 1) +} __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSPort *)portWithMachPort:(uint32_t)machPort options:(NSMachPortOptions)f __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (instancetype)initWithMachPort:(uint32_t)machPort options:(NSMachPortOptions)f __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + +// @property (readonly) uint32_t machPort; + +// - (void)scheduleInRunLoop:(NSRunLoop *)runLoop forMode:(NSRunLoopMode)mode; +// - (void)removeFromRunLoop:(NSRunLoop *)runLoop forMode:(NSRunLoopMode)mode; + + + + +/* @end */ + + +// @protocol NSMachPortDelegate +/* @optional */ + + + +// - (void)handleMachMessage:(void *)msg; + +/* @end */ + + + + + + +__attribute__((objc_arc_weak_reference_unavailable)) + +#ifndef _REWRITER_typedef_NSMessagePort +#define _REWRITER_typedef_NSMessagePort +typedef struct objc_object NSMessagePort; +typedef struct {} _objc_exc_NSMessagePort; +#endif + +struct NSMessagePort_IMPL { + struct NSPort_IMPL NSPort_IVARS; + void *_port; + id _delegate; +}; + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +enum { + NSWindowsNTOperatingSystem = 1, + NSWindows95OperatingSystem, + NSSolarisOperatingSystem, + NSHPUXOperatingSystem, + NSMACHOperatingSystem, + NSSunOSOperatingSystem, + NSOSF1OperatingSystem +} __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + +typedef struct { + NSInteger majorVersion; + NSInteger minorVersion; + NSInteger patchVersion; +} NSOperatingSystemVersion; + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + + + +#ifndef _REWRITER_typedef_NSProcessInfo +#define _REWRITER_typedef_NSProcessInfo +typedef struct objc_object NSProcessInfo; +typedef struct {} _objc_exc_NSProcessInfo; +#endif + +struct NSProcessInfo_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSDictionary *environment; + NSArray *arguments; + NSString *hostName; + NSString *name; + NSInteger automaticTerminationOptOutCounter; +}; + + +@property (class, readonly, strong) NSProcessInfo *processInfo; + +// @property (readonly, copy) NSDictionary *environment; +// @property (readonly, copy) NSArray *arguments; +// @property (readonly, copy) NSString *hostName; +// @property (copy) NSString *processName; +// @property (readonly) int processIdentifier; + +// @property (readonly, copy) NSString *globallyUniqueString; + +// - (NSUInteger)operatingSystem __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="-operatingSystem always returns NSMACHOperatingSystem, use -operatingSystemVersion or -isOperatingSystemAtLeastVersion: instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="-operatingSystem always returns NSMACHOperatingSystem, use -operatingSystemVersion or -isOperatingSystemAtLeastVersion: instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="-operatingSystem always returns NSMACHOperatingSystem, use -operatingSystemVersion or -isOperatingSystemAtLeastVersion: instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="-operatingSystem always returns NSMACHOperatingSystem, use -operatingSystemVersion or -isOperatingSystemAtLeastVersion: instead"))); +// - (NSString *)operatingSystemName __attribute__((availability(macos,introduced=10.0,deprecated=10.10,message="-operatingSystemName always returns NSMACHOperatingSystem, use -operatingSystemVersionString instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="-operatingSystemName always returns NSMACHOperatingSystem, use -operatingSystemVersionString instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="-operatingSystemName always returns NSMACHOperatingSystem, use -operatingSystemVersionString instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="-operatingSystemName always returns NSMACHOperatingSystem, use -operatingSystemVersionString instead"))); + + +// @property (readonly, copy) NSString *operatingSystemVersionString; + +// @property (readonly) NSOperatingSystemVersion operatingSystemVersion __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly) NSUInteger processorCount __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSUInteger activeProcessorCount __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) unsigned long long physicalMemory __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (BOOL) isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion)version __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) NSTimeInterval systemUptime __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)disableSuddenTermination __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)enableSuddenTermination __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (void)disableAutomaticTermination:(NSString *)reason __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)enableAutomaticTermination:(NSString *)reason __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property BOOL automaticTerminationSupportEnabled __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +typedef uint64_t NSActivityOptions; enum { + NSActivityIdleDisplaySleepDisabled = (1ULL << 40), + + + NSActivityIdleSystemSleepDisabled = (1ULL << 20), + + + NSActivitySuddenTerminationDisabled = (1ULL << 14), + + + NSActivityAutomaticTerminationDisabled = (1ULL << 15), + + + + + + NSActivityUserInitiated = (0x00FFFFFFULL | NSActivityIdleSystemSleepDisabled), + NSActivityUserInitiatedAllowingIdleSystemSleep = (NSActivityUserInitiated & ~NSActivityIdleSystemSleepDisabled), + + + NSActivityBackground = 0x000000FFULL, + + + NSActivityLatencyCritical = 0xFF00000000ULL, +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @interface NSProcessInfo (NSProcessInfoActivity) + + + +// - (id )beginActivityWithOptions:(NSActivityOptions)options reason:(NSString *)reason __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void)endActivity:(id )activity __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void)performActivityWithOptions:(NSActivityOptions)options reason:(NSString *)reason usingBlock:(void (^)(void))block __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void)performExpiringActivityWithReason:(NSString *)reason usingBlock:(void(^)(BOOL expired))block __attribute__((availability(ios,introduced=8.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +/* @end */ + + +// @interface NSProcessInfo (NSUserInformation) + +// @property (readonly, copy) NSString *userName __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (readonly, copy) NSString *fullUserName __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +typedef NSInteger NSProcessInfoThermalState; enum { + + NSProcessInfoThermalStateNominal, + + + NSProcessInfoThermalStateFair, + + + NSProcessInfoThermalStateSerious, + + + NSProcessInfoThermalStateCritical +} __attribute__((availability(macosx,introduced=10.10.3))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @interface NSProcessInfo (NSProcessInfoThermalState) + + +// @property (readonly) NSProcessInfoThermalState thermalState __attribute__((availability(macosx,introduced=10.10.3))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + +// @interface NSProcessInfo (NSProcessInfoPowerState) + + +// @property (readonly, getter=isLowPowerModeEnabled) BOOL lowPowerModeEnabled __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +/* @end */ + +extern "C" NSNotificationName const NSProcessInfoThermalStateDidChangeNotification __attribute__((availability(macosx,introduced=10.10.3))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +extern "C" NSNotificationName const NSProcessInfoPowerStateDidChangeNotification __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +// @interface NSProcessInfo (NSProcessInfoPlatform) + +// @property (readonly, getter=isMacCatalystApp) BOOL macCatalystApp __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSMethodSignature; +#ifndef _REWRITER_typedef_NSMethodSignature +#define _REWRITER_typedef_NSMethodSignature +typedef struct objc_object NSMethodSignature; +typedef struct {} _objc_exc_NSMethodSignature; +#endif + +#ifndef _REWRITER_typedef_NSInvocation +#define _REWRITER_typedef_NSInvocation +typedef struct objc_object NSInvocation; +typedef struct {} _objc_exc_NSInvocation; +#endif + + +#pragma clang assume_nonnull begin + +__attribute__((objc_root_class)) + +#ifndef _REWRITER_typedef_NSProxy +#define _REWRITER_typedef_NSProxy +typedef struct objc_object NSProxy; +typedef struct {} _objc_exc_NSProxy; +#endif + +struct NSProxy_IMPL { + Class isa; +}; + + +// + (id)alloc; +// + (id)allocWithZone:(nullable NSZone *)zone ; +// + (Class)class; + +// - (void)forwardInvocation:(NSInvocation *)invocation; +// - (nullable NSMethodSignature *)methodSignatureForSelector:(SEL)sel __attribute__((availability(swift, unavailable, message="NSInvocation and related APIs not available"))); +// - (void)dealloc; +// - (void)finalize; +// @property (readonly, copy) NSString *description; +// @property (readonly, copy) NSString *debugDescription; +// + (BOOL)respondsToSelector:(SEL)aSelector; + +// - (BOOL)allowsWeakReference __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (BOOL)retainWeakReference __attribute__((availability(macos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +#ifndef _REWRITER_typedef_NSOrthography +#define _REWRITER_typedef_NSOrthography +typedef struct objc_object NSOrthography; +typedef struct {} _objc_exc_NSOrthography; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSRegularExpression +#define _REWRITER_typedef_NSRegularExpression +typedef struct objc_object NSRegularExpression; +typedef struct {} _objc_exc_NSRegularExpression; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef uint64_t NSTextCheckingType; enum { + NSTextCheckingTypeOrthography = 1ULL << 0, + NSTextCheckingTypeSpelling = 1ULL << 1, + NSTextCheckingTypeGrammar = 1ULL << 2, + NSTextCheckingTypeDate = 1ULL << 3, + NSTextCheckingTypeAddress = 1ULL << 4, + NSTextCheckingTypeLink = 1ULL << 5, + NSTextCheckingTypeQuote = 1ULL << 6, + NSTextCheckingTypeDash = 1ULL << 7, + NSTextCheckingTypeReplacement = 1ULL << 8, + NSTextCheckingTypeCorrection = 1ULL << 9, + NSTextCheckingTypeRegularExpression __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1ULL << 10, + NSTextCheckingTypePhoneNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1ULL << 11, + NSTextCheckingTypeTransitInformation __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1ULL << 12 +}; + +typedef uint64_t NSTextCheckingTypes; +enum { + NSTextCheckingAllSystemTypes = 0xffffffffULL, + NSTextCheckingAllCustomTypes = 0xffffffffULL << 32, + NSTextCheckingAllTypes = (NSTextCheckingAllSystemTypes | NSTextCheckingAllCustomTypes) +}; + +typedef NSString *NSTextCheckingKey __attribute__((swift_wrapper(struct))); + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSTextCheckingResult +#define _REWRITER_typedef_NSTextCheckingResult +typedef struct objc_object NSTextCheckingResult; +typedef struct {} _objc_exc_NSTextCheckingResult; +#endif + +struct NSTextCheckingResult_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (readonly) NSTextCheckingType resultType; +// @property (readonly) NSRange range; + +/* @end */ + + +// @interface NSTextCheckingResult (NSTextCheckingResultOptional) + + +// @property (nullable, readonly, copy) NSOrthography *orthography; +// @property (nullable, readonly, copy) NSArray *> *grammarDetails; +// @property (nullable, readonly, copy) NSDate *date; +// @property (nullable, readonly, copy) NSTimeZone *timeZone; +// @property (readonly) NSTimeInterval duration; +// @property (nullable, readonly, copy) NSDictionary *components __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURL *URL; +// @property (nullable, readonly, copy) NSString *replacementString; +// @property (nullable, readonly, copy) NSArray *alternativeStrings __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSRegularExpression *regularExpression __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSString *phoneNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly) NSUInteger numberOfRanges __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSRange)rangeAtIndex:(NSUInteger)idx __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSRange)rangeWithName:(NSString *)name __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSTextCheckingResult *)resultByAdjustingRangesWithOffset:(NSInteger)offset __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, readonly, copy) NSDictionary *addressComponents; + +/* @end */ + + + + +extern "C" NSTextCheckingKey const NSTextCheckingNameKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingJobTitleKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingOrganizationKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingStreetKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingCityKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingStateKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingZIPKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingCountryKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingPhoneKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingAirlineKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSTextCheckingKey const NSTextCheckingFlightKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @interface NSTextCheckingResult (NSTextCheckingResultCreation) + + +// + (NSTextCheckingResult *)orthographyCheckingResultWithRange:(NSRange)range orthography:(NSOrthography *)orthography; +// + (NSTextCheckingResult *)spellCheckingResultWithRange:(NSRange)range; +// + (NSTextCheckingResult *)grammarCheckingResultWithRange:(NSRange)range details:(NSArray *> *)details; +// + (NSTextCheckingResult *)dateCheckingResultWithRange:(NSRange)range date:(NSDate *)date; +// + (NSTextCheckingResult *)dateCheckingResultWithRange:(NSRange)range date:(NSDate *)date timeZone:(NSTimeZone *)timeZone duration:(NSTimeInterval)duration; +// + (NSTextCheckingResult *)addressCheckingResultWithRange:(NSRange)range components:(NSDictionary *)components; +// + (NSTextCheckingResult *)linkCheckingResultWithRange:(NSRange)range URL:(NSURL *)url; +// + (NSTextCheckingResult *)quoteCheckingResultWithRange:(NSRange)range replacementString:(NSString *)replacementString; +// + (NSTextCheckingResult *)dashCheckingResultWithRange:(NSRange)range replacementString:(NSString *)replacementString; +// + (NSTextCheckingResult *)replacementCheckingResultWithRange:(NSRange)range replacementString:(NSString *)replacementString; +// + (NSTextCheckingResult *)correctionCheckingResultWithRange:(NSRange)range replacementString:(NSString *)replacementString; +// + (NSTextCheckingResult *)correctionCheckingResultWithRange:(NSRange)range replacementString:(NSString *)replacementString alternativeStrings:(NSArray *)alternativeStrings __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSTextCheckingResult *)regularExpressionCheckingResultWithRanges:(NSRangePointer)ranges count:(NSUInteger)count regularExpression:(NSRegularExpression *)regularExpression __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSTextCheckingResult *)phoneNumberCheckingResultWithRange:(NSRange)range phoneNumber:(NSString *)phoneNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSTextCheckingResult *)transitInformationCheckingResultWithRange:(NSRange)range components:(NSDictionary *)components __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + +#pragma clang assume_nonnull begin + + + + +typedef NSUInteger NSRegularExpressionOptions; enum { + NSRegularExpressionCaseInsensitive = 1 << 0, + NSRegularExpressionAllowCommentsAndWhitespace = 1 << 1, + NSRegularExpressionIgnoreMetacharacters = 1 << 2, + NSRegularExpressionDotMatchesLineSeparators = 1 << 3, + NSRegularExpressionAnchorsMatchLines = 1 << 4, + NSRegularExpressionUseUnixLineSeparators = 1 << 5, + NSRegularExpressionUseUnicodeWordBoundaries = 1 << 6 +}; + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSRegularExpression +#define _REWRITER_typedef_NSRegularExpression +typedef struct objc_object NSRegularExpression; +typedef struct {} _objc_exc_NSRegularExpression; +#endif + +struct NSRegularExpression_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_pattern; + NSUInteger _options; + void *_internal; + id _reserved1; + int32_t _checkout; + int32_t _reserved2; +}; + + + + +// + (nullable NSRegularExpression *)regularExpressionWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error; +// - (nullable instancetype)initWithPattern:(NSString *)pattern options:(NSRegularExpressionOptions)options error:(NSError **)error __attribute__((objc_designated_initializer)); + +// @property (readonly, copy) NSString *pattern; +// @property (readonly) NSRegularExpressionOptions options; +// @property (readonly) NSUInteger numberOfCaptureGroups; + + + +// + (NSString *)escapedPatternForString:(NSString *)string; + +/* @end */ + + + +typedef NSUInteger NSMatchingOptions; enum { + NSMatchingReportProgress = 1 << 0, + NSMatchingReportCompletion = 1 << 1, + NSMatchingAnchored = 1 << 2, + NSMatchingWithTransparentBounds = 1 << 3, + NSMatchingWithoutAnchoringBounds = 1 << 4 +}; + +typedef NSUInteger NSMatchingFlags; enum { + NSMatchingProgress = 1 << 0, + NSMatchingCompleted = 1 << 1, + NSMatchingHitEnd = 1 << 2, + NSMatchingRequiredEnd = 1 << 3, + NSMatchingInternalError = 1 << 4 +}; + +// @interface NSRegularExpression (NSMatching) + + + + +// - (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range usingBlock:(void (__attribute__((noescape)) ^)(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL *stop))block; + +// - (NSArray *)matchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; +// - (NSUInteger)numberOfMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; +// - (nullable NSTextCheckingResult *)firstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; +// - (NSRange)rangeOfFirstMatchInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range; +/* @end */ + + + +// @interface NSRegularExpression (NSReplacement) + + + +// - (NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ; +// - (NSUInteger)replaceMatchesInString:(NSMutableString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)templ; + + + +// - (NSString *)replacementStringForResult:(NSTextCheckingResult *)result inString:(NSString *)string offset:(NSInteger)offset template:(NSString *)templ; + + + +// + (NSString *)escapedTemplateForString:(NSString *)string; + +/* @end */ + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSDataDetector +#define _REWRITER_typedef_NSDataDetector +typedef struct objc_object NSDataDetector; +typedef struct {} _objc_exc_NSDataDetector; +#endif + +struct NSDataDetector_IMPL { + struct NSRegularExpression_IMPL NSRegularExpression_IVARS; + NSTextCheckingTypes _types; +}; + + + + +// + (nullable NSDataDetector *)dataDetectorWithTypes:(NSTextCheckingTypes)checkingTypes error:(NSError **)error; +// - (nullable instancetype)initWithTypes:(NSTextCheckingTypes)checkingTypes error:(NSError **)error __attribute__((objc_designated_initializer)); + +// @property (readonly) NSTextCheckingTypes checkingTypes; + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSSortDescriptor +#define _REWRITER_typedef_NSSortDescriptor +typedef struct objc_object NSSortDescriptor; +typedef struct {} _objc_exc_NSSortDescriptor; +#endif + +struct NSSortDescriptor_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSUInteger _sortDescriptorFlags; + NSString *_key; + SEL _selector; + id _selectorOrBlock; +}; + + +// + (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending selector:(nullable SEL)selector __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (instancetype)initWithKey:(nullable NSString *)key ascending:(BOOL)ascending; +// - (instancetype)initWithKey:(nullable NSString *)key ascending:(BOOL)ascending selector:(nullable SEL)selector; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder; + +// @property (nullable, readonly, copy) NSString *key; +// @property (readonly) BOOL ascending; +// @property (nullable, readonly) SEL selector; + +// - (void)allowEvaluation __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (instancetype)sortDescriptorWithKey:(nullable NSString *)key ascending:(BOOL)ascending comparator:(NSComparator)cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (instancetype)initWithKey:(nullable NSString *)key ascending:(BOOL)ascending comparator:(NSComparator)cmptr __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly) NSComparator comparator __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (NSComparisonResult)compareObject:(id)object1 toObject:(id)object2; +// @property (readonly, retain) id reversedSortDescriptor; + +/* @end */ + + +// @interface NSSet (NSSortDescriptorSorting) + +// - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSArray (NSSortDescriptorSorting) + +// - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors; + +/* @end */ + + +// @interface NSMutableArray (NSSortDescriptorSorting) + +// - (void)sortUsingDescriptors:(NSArray *)sortDescriptors; + +/* @end */ + + +// @interface NSOrderedSet (NSKeyValueSorting) + + +// - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSMutableOrderedSet (NSKeyValueSorting) + + +// - (void)sortUsingDescriptors:(NSArray *)sortDescriptors __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSHost +#define _REWRITER_typedef_NSHost +typedef struct objc_object NSHost; +typedef struct {} _objc_exc_NSHost; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @protocol NSStreamDelegate; + +typedef NSString * NSStreamPropertyKey __attribute__((swift_wrapper(struct))); + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSStreamStatus; enum { + NSStreamStatusNotOpen = 0, + NSStreamStatusOpening = 1, + NSStreamStatusOpen = 2, + NSStreamStatusReading = 3, + NSStreamStatusWriting = 4, + NSStreamStatusAtEnd = 5, + NSStreamStatusClosed = 6, + NSStreamStatusError = 7 +}; + +typedef NSUInteger NSStreamEvent; enum { + NSStreamEventNone = 0, + NSStreamEventOpenCompleted = 1UL << 0, + NSStreamEventHasBytesAvailable = 1UL << 1, + NSStreamEventHasSpaceAvailable = 1UL << 2, + NSStreamEventErrorOccurred = 1UL << 3, + NSStreamEventEndEncountered = 1UL << 4 +}; + + + + +#ifndef _REWRITER_typedef_NSStream +#define _REWRITER_typedef_NSStream +typedef struct objc_object NSStream; +typedef struct {} _objc_exc_NSStream; +#endif + +struct NSStream_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (void)open; +// - (void)close; + +// @property (nullable, assign) id delegate; + + +// - (nullable id)propertyForKey:(NSStreamPropertyKey)key; +// - (BOOL)setProperty:(nullable id)property forKey:(NSStreamPropertyKey)key; + +// - (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; +// - (void)removeFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; + +// @property (readonly) NSStreamStatus streamStatus; +// @property (nullable, readonly, copy) NSError *streamError; +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +struct NSInputStream_IMPL { + struct NSStream_IMPL NSStream_IVARS; +}; + +// - (NSInteger)read:(uint8_t *)buffer maxLength:(NSUInteger)len; + + +// - (BOOL)getBuffer:(uint8_t * _Nullable * _Nonnull)buffer length:(NSUInteger *)len; + + +// @property (readonly) BOOL hasBytesAvailable; + + +// - (instancetype)initWithData:(NSData *)data __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithURL:(NSURL *)url __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + +/* @end */ + + + + + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +struct NSOutputStream_IMPL { + struct NSStream_IMPL NSStream_IVARS; +}; + +// - (NSInteger)write:(const uint8_t *)buffer maxLength:(NSUInteger)len; + + +// @property (readonly) BOOL hasSpaceAvailable; + + +// - (instancetype)initToMemory __attribute__((objc_designated_initializer)); +// - (instancetype)initToBuffer:(uint8_t *)buffer capacity:(NSUInteger)capacity __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithURL:(NSURL *)url append:(BOOL)shouldAppend __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + +/* @end */ + + + +// @interface NSStream (NSSocketStreamCreationExtensions) + +// + (void)getStreamsToHostWithName:(NSString *)hostname port:(NSInteger)port inputStream:(NSInputStream * _Nullable * _Nullable)inputStream outputStream:(NSOutputStream * _Nullable * _Nullable)outputStream __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + + + +/* @end */ + + +// @interface NSStream (NSStreamBoundPairCreationExtensions) +// + (void)getBoundStreamsWithBufferSize:(NSUInteger)bufferSize inputStream:(NSInputStream * _Nullable * _Nullable)inputStream outputStream:(NSOutputStream * _Nullable * _Nullable)outputStream __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + + +// @interface NSInputStream (NSInputStreamExtensions) +// - (nullable instancetype)initWithFileAtPath:(NSString *)path; + +// + (nullable instancetype)inputStreamWithData:(NSData *)data; +// + (nullable instancetype)inputStreamWithFileAtPath:(NSString *)path; +// + (nullable instancetype)inputStreamWithURL:(NSURL *)url __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + + +// @interface NSOutputStream (NSOutputStreamExtensions) +// - (nullable instancetype)initToFileAtPath:(NSString *)path append:(BOOL)shouldAppend; + +// + (instancetype)outputStreamToMemory; +// + (instancetype)outputStreamToBuffer:(uint8_t *)buffer capacity:(NSUInteger)capacity; +// + (instancetype)outputStreamToFileAtPath:(NSString *)path append:(BOOL)shouldAppend; +// + (nullable instancetype)outputStreamWithURL:(NSURL *)url append:(BOOL)shouldAppend __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + +// @protocol NSStreamDelegate +/* @optional */ +// - (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode; +/* @end */ + + + + +extern "C" NSStreamPropertyKey const NSStreamSocketSecurityLevelKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString * NSStreamSocketSecurityLevel __attribute__((swift_wrapper(enum))); + +extern "C" NSStreamSocketSecurityLevel const NSStreamSocketSecurityLevelNone __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamSocketSecurityLevel const NSStreamSocketSecurityLevelSSLv2 __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamSocketSecurityLevel const NSStreamSocketSecurityLevelSSLv3 __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamSocketSecurityLevel const NSStreamSocketSecurityLevelTLSv1 __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamSocketSecurityLevel const NSStreamSocketSecurityLevelNegotiatedSSL __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamPropertyKey const NSStreamSOCKSProxyConfigurationKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString * NSStreamSOCKSProxyConfiguration __attribute__((swift_wrapper(enum))); + +extern "C" NSStreamSOCKSProxyConfiguration const NSStreamSOCKSProxyHostKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamSOCKSProxyConfiguration const NSStreamSOCKSProxyPortKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamSOCKSProxyConfiguration const NSStreamSOCKSProxyVersionKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamSOCKSProxyConfiguration const NSStreamSOCKSProxyUserKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamSOCKSProxyConfiguration const NSStreamSOCKSProxyPasswordKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSString * NSStreamSOCKSProxyVersion __attribute__((swift_wrapper(enum))); + +extern "C" NSStreamSOCKSProxyVersion const NSStreamSOCKSProxyVersion4 __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSStreamSOCKSProxyVersion const NSStreamSOCKSProxyVersion5 __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSStreamPropertyKey const NSStreamDataWrittenToMemoryStreamKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSStreamPropertyKey const NSStreamFileCurrentOffsetKey __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSErrorDomain const NSStreamSocketSSLErrorDomain __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSErrorDomain const NSStreamSOCKSErrorDomain __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern "C" NSStreamPropertyKey const NSStreamNetworkServiceType __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString * NSStreamNetworkServiceTypeValue __attribute__((swift_wrapper(enum))); + + +extern "C" NSStreamNetworkServiceTypeValue const NSStreamNetworkServiceTypeVoIP __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamNetworkServiceTypeValue const NSStreamNetworkServiceTypeVideo __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamNetworkServiceTypeValue const NSStreamNetworkServiceTypeBackground __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamNetworkServiceTypeValue const NSStreamNetworkServiceTypeVoice __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSStreamNetworkServiceTypeValue const NSStreamNetworkServiceTypeCallSignaling __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +#pragma clang assume_nonnull end + + + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSThread +#define _REWRITER_typedef_NSThread +typedef struct objc_object NSThread; +typedef struct {} _objc_exc_NSThread; +#endif + +struct NSThread_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _private; + uint8_t _bytes[44]; +}; + + +@property (class, readonly, strong) NSThread *currentThread; + +// + (void)detachNewThreadWithBlock:(void (^)(void))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +// + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(nullable id)argument; + +// + (BOOL)isMultiThreaded; + +// @property (readonly, retain) NSMutableDictionary *threadDictionary; + +// + (void)sleepUntilDate:(NSDate *)date; +// + (void)sleepForTimeInterval:(NSTimeInterval)ti; + +// + (void)exit; + +// + (double)threadPriority; +// + (BOOL)setThreadPriority:(double)p; + +// @property double threadPriority __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property NSQualityOfService qualityOfService __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +@property (class, readonly, copy) NSArray *callStackReturnAddresses __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +@property (class, readonly, copy) NSArray *callStackSymbols __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, copy) NSString *name __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property NSUInteger stackSize __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly) BOOL isMainThread __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +@property (class, readonly) BOOL isMainThread __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +@property (class, readonly, strong) NSThread *mainThread __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (instancetype)init __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); +// - (instancetype)initWithTarget:(id)target selector:(SEL)selector object:(nullable id)argument __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (instancetype)initWithBlock:(void (^)(void))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (readonly, getter=isExecuting) BOOL executing __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, getter=isFinished) BOOL finished __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, getter=isCancelled) BOOL cancelled __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)cancel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)start __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)main __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +extern "C" NSNotificationName const NSWillBecomeMultiThreadedNotification; +extern "C" NSNotificationName const NSDidBecomeSingleThreadedNotification; +extern "C" NSNotificationName const NSThreadWillExitNotification; + +// @interface NSObject (NSThreadPerformAdditions) + +// - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray *)array; +// - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait; + + +// - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray *)array __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSLocale +#define _REWRITER_typedef_NSLocale +typedef struct objc_object NSLocale; +typedef struct {} _objc_exc_NSLocale; +#endif + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSTimeZone +#define _REWRITER_typedef_NSTimeZone +typedef struct objc_object NSTimeZone; +typedef struct {} _objc_exc_NSTimeZone; +#endif + +struct NSTimeZone_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly, copy) NSString *name; +// @property (readonly, copy) NSData *data; + +// - (NSInteger)secondsFromGMTForDate:(NSDate *)aDate; +// - (nullable NSString *)abbreviationForDate:(NSDate *)aDate; +// - (BOOL)isDaylightSavingTimeForDate:(NSDate *)aDate; +// - (NSTimeInterval)daylightSavingTimeOffsetForDate:(NSDate *)aDate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSDate *)nextDaylightSavingTimeTransitionAfterDate:(NSDate *)aDate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSTimeZone (NSExtendedTimeZone) + +@property (class, readonly, copy) NSTimeZone *systemTimeZone; +// + (void)resetSystemTimeZone; + +@property (class, copy) NSTimeZone *defaultTimeZone; + +@property (class, readonly, copy) NSTimeZone *localTimeZone; + +@property (class, readonly, copy) NSArray *knownTimeZoneNames; + +@property (class, copy) NSDictionary *abbreviationDictionary __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSDictionary *)abbreviationDictionary; + +@property (class, readonly, copy) NSString *timeZoneDataVersion __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly) NSInteger secondsFromGMT; +// @property (nullable, readonly, copy) NSString *abbreviation; +// @property (readonly, getter=isDaylightSavingTime) BOOL daylightSavingTime; +// @property (readonly) NSTimeInterval daylightSavingTimeOffset __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSDate *nextDaylightSavingTimeTransition __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSString *description; + +// - (BOOL)isEqualToTimeZone:(NSTimeZone *)aTimeZone; + +typedef NSInteger NSTimeZoneNameStyle; enum { + NSTimeZoneNameStyleStandard, + NSTimeZoneNameStyleShortStandard, + NSTimeZoneNameStyleDaylightSaving, + NSTimeZoneNameStyleShortDaylightSaving, + NSTimeZoneNameStyleGeneric, + NSTimeZoneNameStyleShortGeneric +}; + +// - (nullable NSString *)localizedName:(NSTimeZoneNameStyle)style locale:(nullable NSLocale *)locale __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSTimeZone (NSTimeZoneCreation) + + + + +// + (nullable instancetype)timeZoneWithName:(NSString *)tzName; +// + (nullable instancetype)timeZoneWithName:(NSString *)tzName data:(nullable NSData *)aData; + +// - (nullable instancetype)initWithName:(NSString *)tzName; +// - (nullable instancetype)initWithName:(NSString *)tzName data:(nullable NSData *)aData; + + + + +// + (instancetype)timeZoneForSecondsFromGMT:(NSInteger)seconds; + +// + (nullable instancetype)timeZoneWithAbbreviation:(NSString *)abbreviation; + +/* @end */ + + +extern "C" NSNotificationName const NSSystemTimeZoneDidChangeNotification __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + + +#ifndef _REWRITER_typedef_NSTimer +#define _REWRITER_typedef_NSTimer +typedef struct objc_object NSTimer; +typedef struct {} _objc_exc_NSTimer; +#endif + +struct NSTimer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; +// + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; + +// + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo; +// + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo; + + + + + + +// + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer *timer))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + + +// + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer *timer))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + + + +// - (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (^)(NSTimer *timer))block __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// - (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(nullable id)ui repeats:(BOOL)rep __attribute__((objc_designated_initializer)); + +// - (void)fire; + +// @property (copy) NSDate *fireDate; +// @property (readonly) NSTimeInterval timeInterval; + + + +// @property NSTimeInterval tolerance __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)invalidate; +// @property (readonly, getter=isValid) BOOL valid; + +// @property (nullable, readonly, retain) id userInfo; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSURLAuthenticationChallenge; +#ifndef _REWRITER_typedef_NSURLAuthenticationChallenge +#define _REWRITER_typedef_NSURLAuthenticationChallenge +typedef struct objc_object NSURLAuthenticationChallenge; +typedef struct {} _objc_exc_NSURLAuthenticationChallenge; +#endif + +// @class NSURLCredential; +#ifndef _REWRITER_typedef_NSURLCredential +#define _REWRITER_typedef_NSURLCredential +typedef struct objc_object NSURLCredential; +typedef struct {} _objc_exc_NSURLCredential; +#endif + +// @class NSURLProtectionSpace; +#ifndef _REWRITER_typedef_NSURLProtectionSpace +#define _REWRITER_typedef_NSURLProtectionSpace +typedef struct objc_object NSURLProtectionSpace; +typedef struct {} _objc_exc_NSURLProtectionSpace; +#endif + +// @class NSURLResponse; +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + + +#pragma clang assume_nonnull begin +// @protocol NSURLAuthenticationChallengeSender + + + + +// - (void)useCredential:(NSURLCredential *)credential forAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + + + + +// - (void)continueWithoutCredentialForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + + + + +// - (void)cancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + +/* @optional */ + + + +// - (void)performDefaultHandlingForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + + + + +// - (void)rejectProtectionSpaceAndContinueWithChallenge:(NSURLAuthenticationChallenge *)challenge; + +/* @end */ + + +// @class NSURLAuthenticationChallengeInternal; +#ifndef _REWRITER_typedef_NSURLAuthenticationChallengeInternal +#define _REWRITER_typedef_NSURLAuthenticationChallengeInternal +typedef struct objc_object NSURLAuthenticationChallengeInternal; +typedef struct {} _objc_exc_NSURLAuthenticationChallengeInternal; +#endif + + +#ifndef _REWRITER_typedef_NSURLAuthenticationChallenge +#define _REWRITER_typedef_NSURLAuthenticationChallenge +typedef struct objc_object NSURLAuthenticationChallenge; +typedef struct {} _objc_exc_NSURLAuthenticationChallenge; +#endif + +struct NSURLAuthenticationChallenge_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLAuthenticationChallengeInternal *_internal; +}; + +// - (instancetype)initWithProtectionSpace:(NSURLProtectionSpace *)space proposedCredential:(nullable NSURLCredential *)credential previousFailureCount:(NSInteger)previousFailureCount failureResponse:(nullable NSURLResponse *)response error:(nullable NSError *)error sender:(id)sender; +// - (instancetype)initWithAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge sender:(id)sender; + + + + + +// @property (readonly, copy) NSURLProtectionSpace *protectionSpace; +// @property (nullable, readonly, copy) NSURLCredential *proposedCredential; + + + + + +// @property (readonly) NSInteger previousFailureCount; +// @property (nullable, readonly, copy) NSURLResponse *failureResponse; +// @property (nullable, readonly, copy) NSError *error; + + + + + + +// @property (nullable, readonly, retain) id sender; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +typedef NSUInteger NSURLCacheStoragePolicy; enum +{ + NSURLCacheStorageAllowed, + NSURLCacheStorageAllowedInMemoryOnly, + NSURLCacheStorageNotAllowed, +}; + + +// @class NSCachedURLResponseInternal; +#ifndef _REWRITER_typedef_NSCachedURLResponseInternal +#define _REWRITER_typedef_NSCachedURLResponseInternal +typedef struct objc_object NSCachedURLResponseInternal; +typedef struct {} _objc_exc_NSCachedURLResponseInternal; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSURLRequest; +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +// @class NSURLResponse; +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +// @class NSDate; +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +// @class NSURLSessionDataTask; +#ifndef _REWRITER_typedef_NSURLSessionDataTask +#define _REWRITER_typedef_NSURLSessionDataTask +typedef struct objc_object NSURLSessionDataTask; +typedef struct {} _objc_exc_NSURLSessionDataTask; +#endif + + +#ifndef _REWRITER_typedef_NSCachedURLResponse +#define _REWRITER_typedef_NSCachedURLResponse +typedef struct objc_object NSCachedURLResponse; +typedef struct {} _objc_exc_NSCachedURLResponse; +#endif + +struct NSCachedURLResponse_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSCachedURLResponseInternal *_internal; +}; + +// - (instancetype)initWithResponse:(NSURLResponse *)response data:(NSData *)data; +// - (instancetype)initWithResponse:(NSURLResponse *)response data:(NSData *)data userInfo:(nullable NSDictionary *)userInfo storagePolicy:(NSURLCacheStoragePolicy)storagePolicy; + + + + + +// @property (readonly, copy) NSURLResponse *response; + + + + + +// @property (readonly, copy) NSData *data; + + + + + +// @property (nullable, readonly, copy) NSDictionary *userInfo; + + + + + +// @property (readonly) NSURLCacheStoragePolicy storagePolicy; + +/* @end */ + + + +// @class NSURLRequest; +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +// @class NSURLCacheInternal; +#ifndef _REWRITER_typedef_NSURLCacheInternal +#define _REWRITER_typedef_NSURLCacheInternal +typedef struct objc_object NSURLCacheInternal; +typedef struct {} _objc_exc_NSURLCacheInternal; +#endif + + + +#ifndef _REWRITER_typedef_NSURLCache +#define _REWRITER_typedef_NSURLCache +typedef struct objc_object NSURLCache; +typedef struct {} _objc_exc_NSURLCache; +#endif + +struct NSURLCache_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLCacheInternal *_internal; +}; + +@property (class, strong) NSURLCache *sharedURLCache; +// - (instancetype)initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity diskPath:(nullable NSString *)path __attribute__((availability(macos,introduced=10.2,deprecated=100000,replacement="initWithMemoryCapacity:diskCapacity:directoryURL:"))) __attribute__((availability(ios,introduced=2.0,deprecated=100000,replacement="initWithMemoryCapacity:diskCapacity:directoryURL:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="initWithMemoryCapacity:diskCapacity:directoryURL:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="initWithMemoryCapacity:diskCapacity:directoryURL:"))) __attribute__((availability(macCatalyst,unavailable))); +// - (instancetype)initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity directoryURL:(nullable NSURL *)directoryURL __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (nullable NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request; +// - (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forRequest:(NSURLRequest *)request; +// - (void)removeCachedResponseForRequest:(NSURLRequest *)request; + + + + + + +// - (void)removeAllCachedResponses; + + + + + +// - (void)removeCachedResponsesSinceDate:(NSDate *)date __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// @property NSUInteger memoryCapacity; + + + + + +// @property NSUInteger diskCapacity; +// @property (readonly) NSUInteger currentMemoryUsage; +// @property (readonly) NSUInteger currentDiskUsage; + +/* @end */ + + +// @interface NSURLCache (NSURLSessionTaskAdditions) +// - (void)storeCachedResponse:(NSCachedURLResponse *)cachedResponse forDataTask:(NSURLSessionDataTask *)dataTask __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)getCachedResponseForDataTask:(NSURLSessionDataTask *)dataTask completionHandler:(void (^) (NSCachedURLResponse * _Nullable cachedResponse))completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeCachedResponseForDataTask:(NSURLSessionDataTask *)dataTask __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSCachedURLResponse; +#ifndef _REWRITER_typedef_NSCachedURLResponse +#define _REWRITER_typedef_NSCachedURLResponse +typedef struct objc_object NSCachedURLResponse; +typedef struct {} _objc_exc_NSCachedURLResponse; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @class NSURLAuthenticationChallenge; +#ifndef _REWRITER_typedef_NSURLAuthenticationChallenge +#define _REWRITER_typedef_NSURLAuthenticationChallenge +typedef struct objc_object NSURLAuthenticationChallenge; +typedef struct {} _objc_exc_NSURLAuthenticationChallenge; +#endif + +// @class NSURLConnectionInternal; +#ifndef _REWRITER_typedef_NSURLConnectionInternal +#define _REWRITER_typedef_NSURLConnectionInternal +typedef struct objc_object NSURLConnectionInternal; +typedef struct {} _objc_exc_NSURLConnectionInternal; +#endif + +// @class NSURLRequest; +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +// @class NSURLResponse; +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +// @class NSRunLoop; +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + +// @class NSInputStream; +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +// @class NSURLProtectionSpace; +#ifndef _REWRITER_typedef_NSURLProtectionSpace +#define _REWRITER_typedef_NSURLProtectionSpace +typedef struct objc_object NSURLProtectionSpace; +typedef struct {} _objc_exc_NSURLProtectionSpace; +#endif + +// @class NSOperationQueue; +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + + +// @protocol NSURLConnectionDelegate; + +#pragma clang assume_nonnull begin + +#ifndef _REWRITER_typedef_NSURLConnection +#define _REWRITER_typedef_NSURLConnection +typedef struct objc_object NSURLConnection; +typedef struct {} _objc_exc_NSURLConnection; +#endif + +struct NSURLConnection_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLConnectionInternal *_internal; +}; + + + +// - (nullable instancetype)initWithRequest:(NSURLRequest *)request delegate:(nullable id)delegate startImmediately:(BOOL)startImmediately __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(watchos,unavailable))); + +// - (nullable instancetype)initWithRequest:(NSURLRequest *)request delegate:(nullable id)delegate __attribute__((availability(macos,introduced=10.3,deprecated=10.11,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(watchos,unavailable))); +// + (nullable NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(nullable id)delegate __attribute__((availability(macos,introduced=10.3,deprecated=10.11,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLSession (see NSURLSession.h)"))) __attribute__((availability(watchos,unavailable))); + +// @property (readonly, copy) NSURLRequest *originalRequest __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSURLRequest *currentRequest __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)start __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)cancel; + +// - (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)setDelegateQueue:(nullable NSOperationQueue*) queue __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (BOOL)canHandleRequest:(NSURLRequest *)request; + +/* @end */ + +// @protocol NSURLConnectionDelegate +/* @optional */ +// - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error; +// - (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection; +// - (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; +// - (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace __attribute__((availability(macos,introduced=10.6,deprecated=10.10,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))); +// - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge __attribute__((availability(macos,introduced=10.2,deprecated=10.10,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))); +// - (void)connection:(NSURLConnection *)connection didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge __attribute__((availability(macos,introduced=10.2,deprecated=10.10,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -connection:willSendRequestForAuthenticationChallenge: instead."))); +/* @end */ + +// @protocol NSURLConnectionDataDelegate +/* @optional */ +// - (nullable NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(nullable NSURLResponse *)response; +// - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; + +// - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; + +// - (nullable NSInputStream *)connection:(NSURLConnection *)connection needNewBodyStream:(NSURLRequest *)request; +#if 0 +- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten + totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; +#endif + + +// - (nullable NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse; + +// - (void)connectionDidFinishLoading:(NSURLConnection *)connection; +/* @end */ + +// @protocol NSURLConnectionDownloadDelegate +/* @optional */ +// - (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes; +// - (void)connectionDidResumeDownloading:(NSURLConnection *)connection totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes; + +/* @required */ +// - (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL; +/* @end */ + +// @interface NSURLConnection (NSURLConnectionSynchronousLoading) +// + (nullable NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse * _Nullable * _Nullable)response error:(NSError **)error __attribute__((availability(macos,introduced=10.3,deprecated=10.11,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +// @interface NSURLConnection (NSURLConnectionQueuedLoading) +#if 0 ++ (void)sendAsynchronousRequest:(NSURLRequest*) request + queue:(NSOperationQueue*) queue + completionHandler:(void (^)(NSURLResponse* _Nullable response, NSData* _Nullable data, NSError* _Nullable connectionError)) handler __attribute__((availability(macos,introduced=10.7,deprecated=10.11,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(ios,introduced=5.0,deprecated=9.0,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"))) __attribute__((availability(watchos,unavailable))); +#endif + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +extern "C" { + +#pragma clang assume_nonnull begin +typedef struct __attribute__((objc_bridge(id))) __SecCertificate *SecCertificateRef; +typedef struct __attribute__((objc_bridge(id))) __SecIdentity *SecIdentityRef; +typedef struct __attribute__((objc_bridge(id))) __SecKey *SecKeyRef; +typedef struct __attribute__((objc_bridge(id))) __SecPolicy *SecPolicyRef; + + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecAccessControl *SecAccessControlRef; + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecKeychain *SecKeychainRef + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecKeychainItem *SecKeychainItemRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecKeychainSearch *SecKeychainSearchRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef OSType SecKeychainAttrType __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +struct __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) SecKeychainAttribute +{ + SecKeychainAttrType tag; + UInt32 length; + void * _Nullable data; +}; +typedef struct SecKeychainAttribute SecKeychainAttribute __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef SecKeychainAttribute *SecKeychainAttributePtr __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + + + +struct __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) SecKeychainAttributeList +{ + UInt32 count; + SecKeychainAttribute * _Nullable attr; +}; +typedef struct SecKeychainAttributeList SecKeychainAttributeList __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef UInt32 SecKeychainStatus __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecTrustedApplication *SecTrustedApplicationRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecAccess *SecAccessRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +typedef struct __attribute__((objc_bridge(id))) __SecACL *SecACLRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecPassword *SecPasswordRef __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +struct __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) SecKeychainAttributeInfo +{ + UInt32 count; + UInt32 *tag; + UInt32 * _Nullable format; +}; +typedef struct SecKeychainAttributeInfo SecKeychainAttributeInfo __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +_Nullable +CFStringRef SecCopyErrorMessageString(OSStatus status, void * _Nullable reserved) + __attribute__((availability(ios,introduced=11.3))); +enum +{ + errSecSuccess = 0, + errSecUnimplemented = -4, + errSecDiskFull = -34, + errSecDskFull __attribute__((deprecated("use errSecDiskFull"))) = errSecDiskFull, + errSecIO = -36, + errSecOpWr = -49, + errSecParam = -50, + errSecWrPerm = -61, + errSecAllocate = -108, + errSecUserCanceled = -128, + errSecBadReq = -909, + + errSecInternalComponent = -2070, + errSecCoreFoundationUnknown = -4960, + + errSecMissingEntitlement = -34018, + + errSecNotAvailable = -25291, + errSecReadOnly = -25292, + errSecAuthFailed = -25293, + errSecNoSuchKeychain = -25294, + errSecInvalidKeychain = -25295, + errSecDuplicateKeychain = -25296, + errSecDuplicateCallback = -25297, + errSecInvalidCallback = -25298, + errSecDuplicateItem = -25299, + errSecItemNotFound = -25300, + errSecBufferTooSmall = -25301, + errSecDataTooLarge = -25302, + errSecNoSuchAttr = -25303, + errSecInvalidItemRef = -25304, + errSecInvalidSearchRef = -25305, + errSecNoSuchClass = -25306, + errSecNoDefaultKeychain = -25307, + errSecInteractionNotAllowed = -25308, + errSecReadOnlyAttr = -25309, + errSecWrongSecVersion = -25310, + errSecKeySizeNotAllowed = -25311, + errSecNoStorageModule = -25312, + errSecNoCertificateModule = -25313, + errSecNoPolicyModule = -25314, + errSecInteractionRequired = -25315, + errSecDataNotAvailable = -25316, + errSecDataNotModifiable = -25317, + errSecCreateChainFailed = -25318, + errSecInvalidPrefsDomain = -25319, + errSecInDarkWake = -25320, + + errSecACLNotSimple = -25240, + errSecPolicyNotFound = -25241, + errSecInvalidTrustSetting = -25242, + errSecNoAccessForItem = -25243, + errSecInvalidOwnerEdit = -25244, + errSecTrustNotAvailable = -25245, + errSecUnsupportedFormat = -25256, + errSecUnknownFormat = -25257, + errSecKeyIsSensitive = -25258, + errSecMultiplePrivKeys = -25259, + errSecPassphraseRequired = -25260, + errSecInvalidPasswordRef = -25261, + errSecInvalidTrustSettings = -25262, + errSecNoTrustSettings = -25263, + errSecPkcs12VerifyFailure = -25264, + errSecNotSigner = -26267, + + errSecDecode = -26275, + + errSecServiceNotAvailable = -67585, + errSecInsufficientClientID = -67586, + errSecDeviceReset = -67587, + errSecDeviceFailed = -67588, + errSecAppleAddAppACLSubject = -67589, + errSecApplePublicKeyIncomplete = -67590, + errSecAppleSignatureMismatch = -67591, + errSecAppleInvalidKeyStartDate = -67592, + errSecAppleInvalidKeyEndDate = -67593, + errSecConversionError = -67594, + errSecAppleSSLv2Rollback = -67595, + errSecQuotaExceeded = -67596, + errSecFileTooBig = -67597, + errSecInvalidDatabaseBlob = -67598, + errSecInvalidKeyBlob = -67599, + errSecIncompatibleDatabaseBlob = -67600, + errSecIncompatibleKeyBlob = -67601, + errSecHostNameMismatch = -67602, + errSecUnknownCriticalExtensionFlag = -67603, + errSecNoBasicConstraints = -67604, + errSecNoBasicConstraintsCA = -67605, + errSecInvalidAuthorityKeyID = -67606, + errSecInvalidSubjectKeyID = -67607, + errSecInvalidKeyUsageForPolicy = -67608, + errSecInvalidExtendedKeyUsage = -67609, + errSecInvalidIDLinkage = -67610, + errSecPathLengthConstraintExceeded = -67611, + errSecInvalidRoot = -67612, + errSecCRLExpired = -67613, + errSecCRLNotValidYet = -67614, + errSecCRLNotFound = -67615, + errSecCRLServerDown = -67616, + errSecCRLBadURI = -67617, + errSecUnknownCertExtension = -67618, + errSecUnknownCRLExtension = -67619, + errSecCRLNotTrusted = -67620, + errSecCRLPolicyFailed = -67621, + errSecIDPFailure = -67622, + errSecSMIMEEmailAddressesNotFound = -67623, + errSecSMIMEBadExtendedKeyUsage = -67624, + errSecSMIMEBadKeyUsage = -67625, + errSecSMIMEKeyUsageNotCritical = -67626, + errSecSMIMENoEmailAddress = -67627, + errSecSMIMESubjAltNameNotCritical = -67628, + errSecSSLBadExtendedKeyUsage = -67629, + errSecOCSPBadResponse = -67630, + errSecOCSPBadRequest = -67631, + errSecOCSPUnavailable = -67632, + errSecOCSPStatusUnrecognized = -67633, + errSecEndOfData = -67634, + errSecIncompleteCertRevocationCheck = -67635, + errSecNetworkFailure = -67636, + errSecOCSPNotTrustedToAnchor = -67637, + errSecRecordModified = -67638, + errSecOCSPSignatureError = -67639, + errSecOCSPNoSigner = -67640, + errSecOCSPResponderMalformedReq = -67641, + errSecOCSPResponderInternalError = -67642, + errSecOCSPResponderTryLater = -67643, + errSecOCSPResponderSignatureRequired = -67644, + errSecOCSPResponderUnauthorized = -67645, + errSecOCSPResponseNonceMismatch = -67646, + errSecCodeSigningBadCertChainLength = -67647, + errSecCodeSigningNoBasicConstraints = -67648, + errSecCodeSigningBadPathLengthConstraint = -67649, + errSecCodeSigningNoExtendedKeyUsage = -67650, + errSecCodeSigningDevelopment = -67651, + errSecResourceSignBadCertChainLength = -67652, + errSecResourceSignBadExtKeyUsage = -67653, + errSecTrustSettingDeny = -67654, + errSecInvalidSubjectName = -67655, + errSecUnknownQualifiedCertStatement = -67656, + errSecMobileMeRequestQueued = -67657, + errSecMobileMeRequestRedirected = -67658, + errSecMobileMeServerError = -67659, + errSecMobileMeServerNotAvailable = -67660, + errSecMobileMeServerAlreadyExists = -67661, + errSecMobileMeServerServiceErr = -67662, + errSecMobileMeRequestAlreadyPending = -67663, + errSecMobileMeNoRequestPending = -67664, + errSecMobileMeCSRVerifyFailure = -67665, + errSecMobileMeFailedConsistencyCheck = -67666, + errSecNotInitialized = -67667, + errSecInvalidHandleUsage = -67668, + errSecPVCReferentNotFound = -67669, + errSecFunctionIntegrityFail = -67670, + errSecInternalError = -67671, + errSecMemoryError = -67672, + errSecInvalidData = -67673, + errSecMDSError = -67674, + errSecInvalidPointer = -67675, + errSecSelfCheckFailed = -67676, + errSecFunctionFailed = -67677, + errSecModuleManifestVerifyFailed = -67678, + errSecInvalidGUID = -67679, + errSecInvalidHandle = -67680, + errSecInvalidDBList = -67681, + errSecInvalidPassthroughID = -67682, + errSecInvalidNetworkAddress = -67683, + errSecCRLAlreadySigned = -67684, + errSecInvalidNumberOfFields = -67685, + errSecVerificationFailure = -67686, + errSecUnknownTag = -67687, + errSecInvalidSignature = -67688, + errSecInvalidName = -67689, + errSecInvalidCertificateRef = -67690, + errSecInvalidCertificateGroup = -67691, + errSecTagNotFound = -67692, + errSecInvalidQuery = -67693, + errSecInvalidValue = -67694, + errSecCallbackFailed = -67695, + errSecACLDeleteFailed = -67696, + errSecACLReplaceFailed = -67697, + errSecACLAddFailed = -67698, + errSecACLChangeFailed = -67699, + errSecInvalidAccessCredentials = -67700, + errSecInvalidRecord = -67701, + errSecInvalidACL = -67702, + errSecInvalidSampleValue = -67703, + errSecIncompatibleVersion = -67704, + errSecPrivilegeNotGranted = -67705, + errSecInvalidScope = -67706, + errSecPVCAlreadyConfigured = -67707, + errSecInvalidPVC = -67708, + errSecEMMLoadFailed = -67709, + errSecEMMUnloadFailed = -67710, + errSecAddinLoadFailed = -67711, + errSecInvalidKeyRef = -67712, + errSecInvalidKeyHierarchy = -67713, + errSecAddinUnloadFailed = -67714, + errSecLibraryReferenceNotFound = -67715, + errSecInvalidAddinFunctionTable = -67716, + errSecInvalidServiceMask = -67717, + errSecModuleNotLoaded = -67718, + errSecInvalidSubServiceID = -67719, + errSecAttributeNotInContext = -67720, + errSecModuleManagerInitializeFailed = -67721, + errSecModuleManagerNotFound = -67722, + errSecEventNotificationCallbackNotFound = -67723, + errSecInputLengthError = -67724, + errSecOutputLengthError = -67725, + errSecPrivilegeNotSupported = -67726, + errSecDeviceError = -67727, + errSecAttachHandleBusy = -67728, + errSecNotLoggedIn = -67729, + errSecAlgorithmMismatch = -67730, + errSecKeyUsageIncorrect = -67731, + errSecKeyBlobTypeIncorrect = -67732, + errSecKeyHeaderInconsistent = -67733, + errSecUnsupportedKeyFormat = -67734, + errSecUnsupportedKeySize = -67735, + errSecInvalidKeyUsageMask = -67736, + errSecUnsupportedKeyUsageMask = -67737, + errSecInvalidKeyAttributeMask = -67738, + errSecUnsupportedKeyAttributeMask = -67739, + errSecInvalidKeyLabel = -67740, + errSecUnsupportedKeyLabel = -67741, + errSecInvalidKeyFormat = -67742, + errSecUnsupportedVectorOfBuffers = -67743, + errSecInvalidInputVector = -67744, + errSecInvalidOutputVector = -67745, + errSecInvalidContext = -67746, + errSecInvalidAlgorithm = -67747, + errSecInvalidAttributeKey = -67748, + errSecMissingAttributeKey = -67749, + errSecInvalidAttributeInitVector = -67750, + errSecMissingAttributeInitVector = -67751, + errSecInvalidAttributeSalt = -67752, + errSecMissingAttributeSalt = -67753, + errSecInvalidAttributePadding = -67754, + errSecMissingAttributePadding = -67755, + errSecInvalidAttributeRandom = -67756, + errSecMissingAttributeRandom = -67757, + errSecInvalidAttributeSeed = -67758, + errSecMissingAttributeSeed = -67759, + errSecInvalidAttributePassphrase = -67760, + errSecMissingAttributePassphrase = -67761, + errSecInvalidAttributeKeyLength = -67762, + errSecMissingAttributeKeyLength = -67763, + errSecInvalidAttributeBlockSize = -67764, + errSecMissingAttributeBlockSize = -67765, + errSecInvalidAttributeOutputSize = -67766, + errSecMissingAttributeOutputSize = -67767, + errSecInvalidAttributeRounds = -67768, + errSecMissingAttributeRounds = -67769, + errSecInvalidAlgorithmParms = -67770, + errSecMissingAlgorithmParms = -67771, + errSecInvalidAttributeLabel = -67772, + errSecMissingAttributeLabel = -67773, + errSecInvalidAttributeKeyType = -67774, + errSecMissingAttributeKeyType = -67775, + errSecInvalidAttributeMode = -67776, + errSecMissingAttributeMode = -67777, + errSecInvalidAttributeEffectiveBits = -67778, + errSecMissingAttributeEffectiveBits = -67779, + errSecInvalidAttributeStartDate = -67780, + errSecMissingAttributeStartDate = -67781, + errSecInvalidAttributeEndDate = -67782, + errSecMissingAttributeEndDate = -67783, + errSecInvalidAttributeVersion = -67784, + errSecMissingAttributeVersion = -67785, + errSecInvalidAttributePrime = -67786, + errSecMissingAttributePrime = -67787, + errSecInvalidAttributeBase = -67788, + errSecMissingAttributeBase = -67789, + errSecInvalidAttributeSubprime = -67790, + errSecMissingAttributeSubprime = -67791, + errSecInvalidAttributeIterationCount = -67792, + errSecMissingAttributeIterationCount = -67793, + errSecInvalidAttributeDLDBHandle = -67794, + errSecMissingAttributeDLDBHandle = -67795, + errSecInvalidAttributeAccessCredentials = -67796, + errSecMissingAttributeAccessCredentials = -67797, + errSecInvalidAttributePublicKeyFormat = -67798, + errSecMissingAttributePublicKeyFormat = -67799, + errSecInvalidAttributePrivateKeyFormat = -67800, + errSecMissingAttributePrivateKeyFormat = -67801, + errSecInvalidAttributeSymmetricKeyFormat = -67802, + errSecMissingAttributeSymmetricKeyFormat = -67803, + errSecInvalidAttributeWrappedKeyFormat = -67804, + errSecMissingAttributeWrappedKeyFormat = -67805, + errSecStagedOperationInProgress = -67806, + errSecStagedOperationNotStarted = -67807, + errSecVerifyFailed = -67808, + errSecQuerySizeUnknown = -67809, + errSecBlockSizeMismatch = -67810, + errSecPublicKeyInconsistent = -67811, + errSecDeviceVerifyFailed = -67812, + errSecInvalidLoginName = -67813, + errSecAlreadyLoggedIn = -67814, + errSecInvalidDigestAlgorithm = -67815, + errSecInvalidCRLGroup = -67816, + errSecCertificateCannotOperate = -67817, + errSecCertificateExpired = -67818, + errSecCertificateNotValidYet = -67819, + errSecCertificateRevoked = -67820, + errSecCertificateSuspended = -67821, + errSecInsufficientCredentials = -67822, + errSecInvalidAction = -67823, + errSecInvalidAuthority = -67824, + errSecVerifyActionFailed = -67825, + errSecInvalidCertAuthority = -67826, + errSecInvaldCRLAuthority = -67827, + errSecInvalidCRLEncoding = -67828, + errSecInvalidCRLType = -67829, + errSecInvalidCRL = -67830, + errSecInvalidFormType = -67831, + errSecInvalidID = -67832, + errSecInvalidIdentifier = -67833, + errSecInvalidIndex = -67834, + errSecInvalidPolicyIdentifiers = -67835, + errSecInvalidTimeString = -67836, + errSecInvalidReason = -67837, + errSecInvalidRequestInputs = -67838, + errSecInvalidResponseVector = -67839, + errSecInvalidStopOnPolicy = -67840, + errSecInvalidTuple = -67841, + errSecMultipleValuesUnsupported = -67842, + errSecNotTrusted = -67843, + errSecNoDefaultAuthority = -67844, + errSecRejectedForm = -67845, + errSecRequestLost = -67846, + errSecRequestRejected = -67847, + errSecUnsupportedAddressType = -67848, + errSecUnsupportedService = -67849, + errSecInvalidTupleGroup = -67850, + errSecInvalidBaseACLs = -67851, + errSecInvalidTupleCredendtials = -67852, + errSecInvalidEncoding = -67853, + errSecInvalidValidityPeriod = -67854, + errSecInvalidRequestor = -67855, + errSecRequestDescriptor = -67856, + errSecInvalidBundleInfo = -67857, + errSecInvalidCRLIndex = -67858, + errSecNoFieldValues = -67859, + errSecUnsupportedFieldFormat = -67860, + errSecUnsupportedIndexInfo = -67861, + errSecUnsupportedLocality = -67862, + errSecUnsupportedNumAttributes = -67863, + errSecUnsupportedNumIndexes = -67864, + errSecUnsupportedNumRecordTypes = -67865, + errSecFieldSpecifiedMultiple = -67866, + errSecIncompatibleFieldFormat = -67867, + errSecInvalidParsingModule = -67868, + errSecDatabaseLocked = -67869, + errSecDatastoreIsOpen = -67870, + errSecMissingValue = -67871, + errSecUnsupportedQueryLimits = -67872, + errSecUnsupportedNumSelectionPreds = -67873, + errSecUnsupportedOperator = -67874, + errSecInvalidDBLocation = -67875, + errSecInvalidAccessRequest = -67876, + errSecInvalidIndexInfo = -67877, + errSecInvalidNewOwner = -67878, + errSecInvalidModifyMode = -67879, + errSecMissingRequiredExtension = -67880, + errSecExtendedKeyUsageNotCritical = -67881, + errSecTimestampMissing = -67882, + errSecTimestampInvalid = -67883, + errSecTimestampNotTrusted = -67884, + errSecTimestampServiceNotAvailable = -67885, + errSecTimestampBadAlg = -67886, + errSecTimestampBadRequest = -67887, + errSecTimestampBadDataFormat = -67888, + errSecTimestampTimeNotAvailable = -67889, + errSecTimestampUnacceptedPolicy = -67890, + errSecTimestampUnacceptedExtension = -67891, + errSecTimestampAddInfoNotAvailable = -67892, + errSecTimestampSystemFailure = -67893, + errSecSigningTimeMissing = -67894, + errSecTimestampRejection = -67895, + errSecTimestampWaiting = -67896, + errSecTimestampRevocationWarning = -67897, + errSecTimestampRevocationNotification = -67898, + errSecCertificatePolicyNotAllowed = -67899, + errSecCertificateNameNotAllowed = -67900, + errSecCertificateValidityPeriodTooLong = -67901, +}; +enum { + errSSLProtocol = -9800, + errSSLNegotiation = -9801, + errSSLFatalAlert = -9802, + errSSLWouldBlock = -9803, + errSSLSessionNotFound = -9804, + errSSLClosedGraceful = -9805, + errSSLClosedAbort = -9806, + errSSLXCertChainInvalid = -9807, + errSSLBadCert = -9808, + errSSLCrypto = -9809, + errSSLInternal = -9810, + errSSLModuleAttach = -9811, + errSSLUnknownRootCert = -9812, + errSSLNoRootCert = -9813, + errSSLCertExpired = -9814, + errSSLCertNotYetValid = -9815, + errSSLClosedNoNotify = -9816, + errSSLBufferOverflow = -9817, + errSSLBadCipherSuite = -9818, + + + errSSLPeerUnexpectedMsg = -9819, + errSSLPeerBadRecordMac = -9820, + errSSLPeerDecryptionFail = -9821, + errSSLPeerRecordOverflow = -9822, + errSSLPeerDecompressFail = -9823, + errSSLPeerHandshakeFail = -9824, + errSSLPeerBadCert = -9825, + errSSLPeerUnsupportedCert = -9826, + errSSLPeerCertRevoked = -9827, + errSSLPeerCertExpired = -9828, + errSSLPeerCertUnknown = -9829, + errSSLIllegalParam = -9830, + errSSLPeerUnknownCA = -9831, + errSSLPeerAccessDenied = -9832, + errSSLPeerDecodeError = -9833, + errSSLPeerDecryptError = -9834, + errSSLPeerExportRestriction = -9835, + errSSLPeerProtocolVersion = -9836, + errSSLPeerInsufficientSecurity = -9837, + errSSLPeerInternalError = -9838, + errSSLPeerUserCancelled = -9839, + errSSLPeerNoRenegotiation = -9840, + + + errSSLPeerAuthCompleted = -9841, + errSSLClientCertRequested = -9842, + + + errSSLHostNameMismatch = -9843, + errSSLConnectionRefused = -9844, + errSSLDecryptionFail = -9845, + errSSLBadRecordMac = -9846, + errSSLRecordOverflow = -9847, + errSSLBadConfiguration = -9848, + errSSLUnexpectedRecord = -9849, + errSSLWeakPeerEphemeralDHKey = -9850, + + + errSSLClientHelloReceived = -9851, + + + errSSLTransportReset = -9852, + errSSLNetworkTimeout = -9853, + + + errSSLConfigurationFailed = -9854, + + + errSSLUnsupportedExtension = -9855, + errSSLUnexpectedMessage = -9856, + errSSLDecompressFail = -9857, + errSSLHandshakeFail = -9858, + errSSLDecodeError = -9859, + errSSLInappropriateFallback = -9860, + errSSLMissingExtension = -9861, + errSSLBadCertificateStatusResponse = -9862, + errSSLCertificateRequired = -9863, + errSSLUnknownPSKIdentity = -9864, + errSSLUnrecognizedName = -9865, + + + errSSLATSViolation = -9880, + errSSLATSMinimumVersionViolation = -9881, + errSSLATSCiphersuiteViolation = -9882, + errSSLATSMinimumKeySizeViolation = -9883, + errSSLATSLeafCertificateHashAlgorithmViolation = -9884, + errSSLATSCertificateHashAlgorithmViolation = -9885, + errSSLATSCertificateTrustViolation = -9886, +}; +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin + + + + + + + +CFTypeID SecCertificateGetTypeID(void) + __attribute__((availability(ios,introduced=2.0))); +_Nullable +SecCertificateRef SecCertificateCreateWithData(CFAllocatorRef _Nullable allocator, CFDataRef data) + __attribute__((availability(ios,introduced=2.0))); +CFDataRef SecCertificateCopyData(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=2.0))); +_Nullable +CFStringRef SecCertificateCopySubjectSummary(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecCertificateCopyCommonName(SecCertificateRef certificate, CFStringRef * _Nonnull __attribute__((cf_returns_retained)) commonName) + __attribute__((availability(ios,introduced=10.3))); +OSStatus SecCertificateCopyEmailAddresses(SecCertificateRef certificate, CFArrayRef * _Nonnull __attribute__((cf_returns_retained)) emailAddresses) + __attribute__((availability(ios,introduced=10.3))); + + + + + + + +_Nullable +CFDataRef SecCertificateCopyNormalizedIssuerSequence(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=10.3))); + + + + + + + +_Nullable +CFDataRef SecCertificateCopyNormalizedSubjectSequence(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=10.3))); +_Nullable __attribute__((cf_returns_retained)) +SecKeyRef SecCertificateCopyKey(SecCertificateRef certificate) + __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))); +_Nullable +SecKeyRef SecCertificateCopyPublicKey(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=10.3,deprecated=12.0,replacement="SecCertificateCopyKey"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +_Nullable +CFDataRef SecCertificateCopySerialNumberData(SecCertificateRef certificate, CFErrorRef *error) + __attribute__((availability(ios,introduced=11.0))); +_Nullable +CFDataRef SecCertificateCopySerialNumber(SecCertificateRef certificate) + __attribute__((availability(ios,introduced=10.3,deprecated=11.0,replacement="SecCertificateCopySerialNumberData"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#pragma clang assume_nonnull end +} +extern "C" { + +#pragma clang assume_nonnull begin + + + + + + + +CFTypeID SecIdentityGetTypeID(void) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecIdentityCopyCertificate( + SecIdentityRef identityRef, + SecCertificateRef * _Nonnull __attribute__((cf_returns_retained)) certificateRef) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecIdentityCopyPrivateKey( + SecIdentityRef identityRef, + SecKeyRef * _Nonnull __attribute__((cf_returns_retained)) privateKeyRef) + __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end +} +extern "C" { + +#pragma clang assume_nonnull begin + + + + + + + +CFTypeID SecAccessControlGetTypeID(void) +__attribute__((availability(ios,introduced=8.0))); +typedef CFOptionFlags SecAccessControlCreateFlags; enum { + kSecAccessControlUserPresence = 1u << 0, + kSecAccessControlBiometryAny __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) = 1u << 1, + kSecAccessControlTouchIDAny __attribute__((availability(macos,introduced=10.12.1,deprecated=10.13.4,replacement="kSecAccessControlBiometryAny"))) __attribute__((availability(ios,introduced=9.0,deprecated=11.3,replacement="kSecAccessControlBiometryAny"))) = 1u << 1, + kSecAccessControlBiometryCurrentSet __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) = 1u << 3, + kSecAccessControlTouchIDCurrentSet __attribute__((availability(macos,introduced=10.12.1,deprecated=10.13.4,replacement="kSecAccessControlBiometryCurrentSet"))) __attribute__((availability(ios,introduced=9.0,deprecated=11.3,replacement="kSecAccessControlBiometryCurrentSet"))) = 1u << 3, + kSecAccessControlDevicePasscode __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) = 1u << 4, + kSecAccessControlWatch __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=NA))) __attribute__((availability(macCatalyst,introduced=13.0))) = 1u << 5, + kSecAccessControlOr __attribute__((availability(macos,introduced=10.12.1))) __attribute__((availability(ios,introduced=9.0))) = 1u << 14, + kSecAccessControlAnd __attribute__((availability(macos,introduced=10.12.1))) __attribute__((availability(ios,introduced=9.0))) = 1u << 15, + kSecAccessControlPrivateKeyUsage __attribute__((availability(macos,introduced=10.12.1))) __attribute__((availability(ios,introduced=9.0))) = 1u << 30, + kSecAccessControlApplicationPassword __attribute__((availability(macos,introduced=10.12.1))) __attribute__((availability(ios,introduced=9.0))) = 1u << 31, +} __attribute__((availability(ios,introduced=8.0))); +_Nullable +SecAccessControlRef SecAccessControlCreateWithFlags(CFAllocatorRef _Nullable allocator, CFTypeRef protection, + SecAccessControlCreateFlags flags, CFErrorRef *error) +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin +extern const CFStringRef kSecClass + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecClassInternetPassword + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecClassGenericPassword + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecClassCertificate + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecClassKey + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecClassIdentity + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAccessible + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrAccess + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrAccessControl + __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern const CFStringRef kSecAttrAccessGroup + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=3.0))); +extern const CFStringRef kSecAttrSynchronizable + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecAttrSynchronizableAny + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecAttrCreationDate + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrModificationDate + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrDescription + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrComment + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCreator + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrType + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrLabel + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIsInvisible + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIsNegative + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAccount + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrService + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrGeneric + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrSecurityDomain + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrServer + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocol + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationType + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrPort + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrPath + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrSubject + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIssuer + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrSerialNumber + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrSubjectKeyID + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrPublicKeyHash + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCertificateType + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCertificateEncoding + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyClass + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrApplicationLabel + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIsPermanent + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIsSensitive + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrIsExtractable + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrApplicationTag + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyType + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrPRF + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrSalt + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrRounds + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeySizeInBits + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrEffectiveKeySize + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanEncrypt + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanDecrypt + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanDerive + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanSign + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanVerify + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanWrap + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrCanUnwrap + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrSyncViewHint + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecAttrTokenID + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecAttrPersistantReference + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const CFStringRef kSecAttrPersistentReference + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const CFStringRef kSecAttrAccessibleWhenUnlocked + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrAccessibleAfterFirstUnlock + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrAccessibleAlways + __attribute__((availability(macos,introduced=10.9,deprecated=10.14,message="Use an accessibility level that provides some user protection, such as kSecAttrAccessibleAfterFirstUnlock"))) __attribute__((availability(ios,introduced=4.0,deprecated=12.0,message="Use an accessibility level that provides some user protection, such as kSecAttrAccessibleAfterFirstUnlock"))); +extern const CFStringRef kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly + __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern const CFStringRef kSecAttrAccessibleWhenUnlockedThisDeviceOnly + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrAccessibleAlwaysThisDeviceOnly + __attribute__((availability(macos,introduced=10.9,deprecated=10.14,message="Use an accessibility level that provides some user protection, such as kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly"))) __attribute__((availability(ios,introduced=4.0,deprecated=12.0,message="Use an accessibility level that provides some user protection, such as kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly"))); +extern const CFStringRef kSecAttrProtocolFTP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolFTPAccount + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolHTTP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolIRC + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolNNTP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolPOP3 + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolSMTP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolSOCKS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolIMAP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolLDAP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolAppleTalk + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolAFP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolTelnet + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolSSH + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolFTPS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolHTTPS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolHTTPProxy + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolHTTPSProxy + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolFTPProxy + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolSMB + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolRTSP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolRTSPProxy + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolDAAP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolEPPC + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolIPP + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolNNTPS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolLDAPS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolTelnetS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolIMAPS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolIRCS + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrProtocolPOP3S + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeNTLM + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeMSN + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeDPA + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeRPA + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeHTTPBasic + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeHTTPDigest + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeHTMLForm + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrAuthenticationTypeDefault + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyClassPublic + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyClassPrivate + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyClassSymmetric + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyTypeRSA + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecAttrKeyTypeDSA + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeAES + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeDES + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyType3DES + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeRC4 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeRC2 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeCAST + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeECDSA + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrKeyTypeEC + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=4.0))); +extern const CFStringRef kSecAttrKeyTypeECSECPrimeRandom + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern const CFStringRef kSecAttrPRFHmacAlgSHA1 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrPRFHmacAlgSHA224 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrPRFHmacAlgSHA256 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrPRFHmacAlgSHA384 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecAttrPRFHmacAlgSHA512 + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchPolicy + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchItemList + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchSearchList + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchIssuers + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchEmailAddressIfPresent + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchSubjectContains + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchSubjectStartsWith + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchSubjectEndsWith + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchSubjectWholeString + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchCaseInsensitive + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchDiacriticInsensitive + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchWidthInsensitive + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecMatchTrustedOnly + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchValidOnDate + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchLimit + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchLimitOne + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecMatchLimitAll + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecReturnData + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecReturnAttributes + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecReturnRef + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecReturnPersistentRef + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecValueData + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecValueRef + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecValuePersistentRef + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecUseItemList + __attribute__((availability(macos,introduced=10.6))) + __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="Not implemented on this platform"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="Not implemented on this platform"))) __attribute__((availability(watchos,introduced=1.0,deprecated=5.0,message="Not implemented on this platform"))) + __attribute__((availability(macCatalyst,unavailable))); +extern const CFStringRef kSecUseKeychain + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecUseOperationPrompt + __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern const CFStringRef kSecUseNoAuthenticationUI + __attribute__((availability(macos,introduced=10.10,deprecated=10.11,message="Use kSecUseAuthenticationUI instead."))) __attribute__((availability(ios,introduced=8.0,deprecated=9.0,message="Use kSecUseAuthenticationUI instead."))); +extern const CFStringRef kSecUseAuthenticationUI + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecUseAuthenticationContext + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecUseDataProtectionKeychain + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern const CFStringRef kSecUseAuthenticationUIAllow + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecUseAuthenticationUIFail + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecUseAuthenticationUISkip + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecAttrTokenIDSecureEnclave + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecAttrAccessGroupToken + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +OSStatus SecItemCopyMatching(CFDictionaryRef query, CFTypeRef * _Nullable __attribute__((cf_returns_retained)) result) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +OSStatus SecItemAdd(CFDictionaryRef attributes, CFTypeRef * _Nullable __attribute__((cf_returns_retained)) result) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +OSStatus SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +OSStatus SecItemDelete(CFDictionaryRef query) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin +typedef uint32_t SecPadding; enum +{ + kSecPaddingNone = 0, + kSecPaddingPKCS1 = 1, + kSecPaddingOAEP = 2, + + + + + kSecPaddingSigRaw = 0x4000, + + + + + kSecPaddingPKCS1MD2 = 0x8000, + + + + + kSecPaddingPKCS1MD5 = 0x8001, + + + + + kSecPaddingPKCS1SHA1 = 0x8002, + + + + + kSecPaddingPKCS1SHA224 = 0x8003, + + + + + kSecPaddingPKCS1SHA256 = 0x8004, + + + + + kSecPaddingPKCS1SHA384 = 0x8005, + + + + + kSecPaddingPKCS1SHA512 = 0x8006, +}; +extern const CFStringRef kSecPrivateKeyAttrs + __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecPublicKeyAttrs + __attribute__((availability(ios,introduced=2.0))); + + + + + + +CFTypeID SecKeyGetTypeID(void) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecKeyGeneratePair(CFDictionaryRef parameters, + SecKeyRef * _Nullable __attribute__((cf_returns_retained)) publicKey, SecKeyRef * _Nullable __attribute__((cf_returns_retained)) privateKey) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecKeyRawSign( + SecKeyRef key, + SecPadding padding, + const uint8_t *dataToSign, + size_t dataToSignLen, + uint8_t *sig, + size_t *sigLen) +__attribute__((availability(ios,introduced=2.0))); +OSStatus SecKeyRawVerify( + SecKeyRef key, + SecPadding padding, + const uint8_t *signedData, + size_t signedDataLen, + const uint8_t *sig, + size_t sigLen) +__attribute__((availability(ios,introduced=2.0))); +OSStatus SecKeyEncrypt( + SecKeyRef key, + SecPadding padding, + const uint8_t *plainText, + size_t plainTextLen, + uint8_t *cipherText, + size_t *cipherTextLen) +__attribute__((availability(ios,introduced=2.0))); +OSStatus SecKeyDecrypt( + SecKeyRef key, + SecPadding padding, + + + const uint8_t *cipherText, + size_t cipherTextLen, + uint8_t *plainText, + size_t *plainTextLen) +__attribute__((availability(ios,introduced=2.0))); +SecKeyRef _Nullable SecKeyCreateRandomKey(CFDictionaryRef parameters, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +SecKeyRef _Nullable SecKeyCreateWithData(CFDataRef keyData, CFDictionaryRef attributes, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +size_t SecKeyGetBlockSize(SecKeyRef key) + __attribute__((availability(ios,introduced=2.0))); +CFDataRef _Nullable SecKeyCopyExternalRepresentation(SecKeyRef key, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +CFDictionaryRef _Nullable SecKeyCopyAttributes(SecKeyRef key) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +SecKeyRef _Nullable SecKeyCopyPublicKey(SecKeyRef key) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +typedef CFStringRef SecKeyAlgorithm __attribute__((swift_wrapper(enum))) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureRaw +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15Raw +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPSSSHA1 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPSSSHA224 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPSSSHA256 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPSSSHA384 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureDigestPSSSHA512 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePSSSHA1 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePSSSHA224 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePSSSHA256 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePSSSHA384 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSASignatureMessagePSSSHA512 +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureRFC4754 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureMessageX962SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureMessageX962SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureMessageX962SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureMessageX962SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureMessageX962SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionRaw +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionPKCS1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA1AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA224AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA384AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardX963SHA1AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardX963SHA224AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardX963SHA256AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardX963SHA384AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardX963SHA512AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorX963SHA1AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorX963SHA224AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorX963SHA256AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorX963SHA384AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorX963SHA512AESGCM +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA224AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA256AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA384AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA512AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA384AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM +__attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandard +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactor +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA1 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA224 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA256 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA384 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyAlgorithm kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512 +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +CFDataRef _Nullable SecKeyCreateSignature(SecKeyRef key, SecKeyAlgorithm algorithm, CFDataRef dataToSign, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +Boolean SecKeyVerifySignature(SecKeyRef key, SecKeyAlgorithm algorithm, CFDataRef signedData, CFDataRef signature, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +CFDataRef _Nullable SecKeyCreateEncryptedData(SecKeyRef key, SecKeyAlgorithm algorithm, CFDataRef plaintext, + CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +CFDataRef _Nullable SecKeyCreateDecryptedData(SecKeyRef key, SecKeyAlgorithm algorithm, CFDataRef ciphertext, + CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + + + + + + + +typedef CFStringRef SecKeyKeyExchangeParameter __attribute__((swift_wrapper(enum))) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyKeyExchangeParameter kSecKeyKeyExchangeParameterRequestedSize +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +extern const SecKeyKeyExchangeParameter kSecKeyKeyExchangeParameterSharedInfo +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +CFDataRef _Nullable SecKeyCopyKeyExchangeResult(SecKeyRef privateKey, SecKeyAlgorithm algorithm, SecKeyRef publicKey, CFDictionaryRef parameters, CFErrorRef *error) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +typedef CFIndex SecKeyOperationType; enum { + kSecKeyOperationTypeSign = 0, + kSecKeyOperationTypeVerify = 1, + kSecKeyOperationTypeEncrypt = 2, + kSecKeyOperationTypeDecrypt = 3, + kSecKeyOperationTypeKeyExchange = 4, +} __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +Boolean SecKeyIsAlgorithmSupported(SecKeyRef key, SecKeyOperationType operation, SecKeyAlgorithm algorithm) +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin +extern const CFStringRef kSecPolicyAppleX509Basic + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleSSL + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleSMIME + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleEAP + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleIPsec + __attribute__((availability(ios,introduced=7.0))); + + + + +extern const CFStringRef kSecPolicyApplePKINITClient + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +extern const CFStringRef kSecPolicyApplePKINITServer + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +extern const CFStringRef kSecPolicyAppleCodeSigning + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyMacAppStoreReceipt + __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecPolicyAppleIDValidation + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleTimeStamping + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyAppleRevocation + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyApplePassbookSigning + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyApplePayIssuerEncryption + __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecPolicyOid + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyName + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyClient + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyRevocationFlags + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPolicyTeamIdentifier + __attribute__((availability(ios,introduced=7.0))); + + + + + + + +CFTypeID SecPolicyGetTypeID(void) + __attribute__((availability(ios,introduced=2.0))); +_Nullable +CFDictionaryRef SecPolicyCopyProperties(SecPolicyRef policyRef) + __attribute__((availability(ios,introduced=7.0))); + + + + + + + +SecPolicyRef SecPolicyCreateBasicX509(void) + __attribute__((availability(ios,introduced=2.0))); +SecPolicyRef SecPolicyCreateSSL(Boolean server, CFStringRef _Nullable hostname) + __attribute__((availability(ios,introduced=2.0))); +enum { + kSecRevocationOCSPMethod = (1 << 0), + kSecRevocationCRLMethod = (1 << 1), + kSecRevocationPreferCRL = (1 << 2), + kSecRevocationRequirePositiveResponse = (1 << 3), + kSecRevocationNetworkAccessDisabled = (1 << 4), + kSecRevocationUseAnyAvailableMethod = (kSecRevocationOCSPMethod | + kSecRevocationCRLMethod) +}; +_Nullable +SecPolicyRef SecPolicyCreateRevocation(CFOptionFlags revocationFlags) + __attribute__((availability(ios,introduced=7.0))); +_Nullable +SecPolicyRef SecPolicyCreateWithProperties(CFTypeRef policyIdentifier, + CFDictionaryRef _Nullable properties) + __attribute__((availability(ios,introduced=7.0))); +#pragma clang assume_nonnull end +} +extern "C" { + +#pragma clang assume_nonnull begin + + + + + + +typedef const struct __SecRandom * SecRandomRef; + + + +extern const SecRandomRef kSecRandomDefault + __attribute__((availability(ios,introduced=2.0))); +int SecRandomCopyBytes(SecRandomRef _Nullable rnd, size_t count, void *bytes) + __attribute__ ((warn_unused_result)) + __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin +extern const CFStringRef kSecImportExportPassphrase + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecImportExportKeychain + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecImportExportAccess + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kSecImportItemLabel + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecImportItemKeyID + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecImportItemTrust + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecImportItemCertChain + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +extern const CFStringRef kSecImportItemIdentity + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +OSStatus SecPKCS12Import(CFDataRef pkcs12_data, CFDictionaryRef options, CFArrayRef * _Nonnull __attribute__((cf_returns_retained)) items) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +} +extern "C" { + +#pragma clang assume_nonnull begin +typedef uint32_t SecTrustResultType; enum { + kSecTrustResultInvalid __attribute__((availability(ios,introduced=2_0))) = 0, + kSecTrustResultProceed __attribute__((availability(ios,introduced=2_0))) = 1, + kSecTrustResultConfirm __attribute__((availability(ios,introduced=2_0,deprecated=7_0,message="" ))) = 2, + kSecTrustResultDeny __attribute__((availability(ios,introduced=2_0))) = 3, + kSecTrustResultUnspecified __attribute__((availability(ios,introduced=2_0))) = 4, + kSecTrustResultRecoverableTrustFailure __attribute__((availability(ios,introduced=2_0))) = 5, + kSecTrustResultFatalTrustFailure __attribute__((availability(ios,introduced=2_0))) = 6, + kSecTrustResultOtherError __attribute__((availability(ios,introduced=2_0))) = 7 +}; + + + + + +typedef struct __attribute__((objc_bridge(id))) __SecTrust *SecTrustRef; +extern const CFStringRef kSecPropertyTypeTitle + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecPropertyTypeError + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustEvaluationDate + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustExtendedValidation + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustOrganizationName + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustResultValue + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustRevocationChecked + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustRevocationValidUntilDate + __attribute__((availability(ios,introduced=7.0))); +extern const CFStringRef kSecTrustCertificateTransparency + __attribute__((availability(ios,introduced=9.0))); +extern const CFStringRef kSecTrustCertificateTransparencyWhiteList + __attribute__((availability(ios,introduced=10.0,deprecated=11.0))); +typedef void (*SecTrustCallback)(SecTrustRef trustRef, SecTrustResultType trustResult); +CFTypeID SecTrustGetTypeID(void) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecTrustCreateWithCertificates(CFTypeRef certificates, + CFTypeRef _Nullable policies, SecTrustRef * _Nonnull __attribute__((cf_returns_retained)) trust) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecTrustSetPolicies(SecTrustRef trust, CFTypeRef policies) + __attribute__((availability(ios,introduced=6.0))); +OSStatus SecTrustCopyPolicies(SecTrustRef trust, CFArrayRef * _Nonnull __attribute__((cf_returns_retained)) policies) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustSetNetworkFetchAllowed(SecTrustRef trust, + Boolean allowFetch) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustGetNetworkFetchAllowed(SecTrustRef trust, + Boolean *allowFetch) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustSetAnchorCertificates(SecTrustRef trust, + CFArrayRef _Nullable anchorCertificates) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecTrustSetAnchorCertificatesOnly(SecTrustRef trust, + Boolean anchorCertificatesOnly) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecTrustCopyCustomAnchorCertificates(SecTrustRef trust, + CFArrayRef * _Nonnull __attribute__((cf_returns_retained)) anchors) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustSetVerifyDate(SecTrustRef trust, CFDateRef verifyDate) + __attribute__((availability(ios,introduced=2.0))); +CFAbsoluteTime SecTrustGetVerifyTime(SecTrustRef trust) + __attribute__((availability(ios,introduced=2.0))); +OSStatus SecTrustEvaluate(SecTrustRef trust, SecTrustResultType *result) + __attribute__((availability(macos,introduced=10.3,deprecated=10.15,replacement="SecTrustEvaluateWithError"))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,replacement="SecTrustEvaluateWithError"))) __attribute__((availability(watchos,introduced=1.0,deprecated=6.0,replacement="SecTrustEvaluateWithError"))) __attribute__((availability(tvos,introduced=2.0,deprecated=13.0,replacement="SecTrustEvaluateWithError"))); +OSStatus SecTrustEvaluateAsync(SecTrustRef trust, + dispatch_queue_t _Nullable queue, SecTrustCallback result) + __attribute__((availability(macos,introduced=10.7,deprecated=10.15,replacement="SecTrustEvaluateAsyncWithError"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,replacement="SecTrustEvaluateAsyncWithError"))) __attribute__((availability(watchos,introduced=1.0,deprecated=6.0,replacement="SecTrustEvaluateAsyncWithError"))) __attribute__((availability(tvos,introduced=7.0,deprecated=13.0,replacement="SecTrustEvaluateAsyncWithError"))); +__attribute__((warn_unused_result)) bool +SecTrustEvaluateWithError(SecTrustRef trust, CFErrorRef _Nullable * _Nullable __attribute__((cf_returns_retained)) error) + __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))); +typedef void (*SecTrustWithErrorCallback)(SecTrustRef trustRef, bool result, CFErrorRef _Nullable error); +OSStatus SecTrustEvaluateAsyncWithError(SecTrustRef trust, dispatch_queue_t queue, SecTrustWithErrorCallback result) + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +OSStatus SecTrustGetTrustResult(SecTrustRef trust, + SecTrustResultType *result) + __attribute__((availability(ios,introduced=7.0))); +_Nullable +SecKeyRef SecTrustCopyPublicKey(SecTrustRef trust) + __attribute__((availability(ios,introduced=2.0))); +CFIndex SecTrustGetCertificateCount(SecTrustRef trust) + __attribute__((availability(ios,introduced=2.0))); +_Nullable +SecCertificateRef SecTrustGetCertificateAtIndex(SecTrustRef trust, CFIndex ix) + __attribute__((availability(ios,introduced=2.0))); +CFDataRef SecTrustCopyExceptions(SecTrustRef trust) + __attribute__((availability(ios,introduced=4.0))); +bool SecTrustSetExceptions(SecTrustRef trust, CFDataRef _Nullable exceptions) + __attribute__((availability(ios,introduced=4.0))); +_Nullable +CFArrayRef SecTrustCopyProperties(SecTrustRef trust) + __attribute__((availability(ios,introduced=2.0))); +_Nullable +CFDictionaryRef SecTrustCopyResult(SecTrustRef trust) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustSetOCSPResponse(SecTrustRef trust, CFTypeRef _Nullable responseData) + __attribute__((availability(ios,introduced=7.0))); +OSStatus SecTrustSetSignedCertificateTimestamps(SecTrustRef trust, CFArrayRef _Nullable sctArray) + __attribute__((availability(macos,introduced=10.14.2))) __attribute__((availability(ios,introduced=12.1.1))) __attribute__((availability(tvos,introduced=12.1.1))) __attribute__((availability(watchos,introduced=5.1.1))); +#pragma clang assume_nonnull end +} +extern "C" { + +#pragma clang assume_nonnull begin +extern const CFStringRef kSecSharedPassword __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +void SecAddSharedWebCredential(CFStringRef fqdn, CFStringRef account, CFStringRef _Nullable password, + void (^completionHandler)(CFErrorRef _Nullable error)) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +void SecRequestSharedWebCredential(CFStringRef _Nullable fqdn, CFStringRef _Nullable account, + void (^completionHandler)(CFArrayRef _Nullable credentials, CFErrorRef _Nullable error)) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +_Nullable +CFStringRef SecCreateSharedWebCredentialPassword(void) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +#pragma clang assume_nonnull end + + + + + + +} +extern "C" { +__attribute__((visibility("default"))) void *sec_retain(void *obj); +__attribute__((visibility("default"))) void sec_release(void *obj); +} +// @protocol OS_sec_object /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_object_t; +typedef uint16_t SSLCipherSuite; + + + + + +enum +{ SSL_NULL_WITH_NULL_NULL = 0x0000, + SSL_RSA_WITH_NULL_MD5 = 0x0001, + SSL_RSA_WITH_NULL_SHA = 0x0002, + SSL_RSA_EXPORT_WITH_RC4_40_MD5 = 0x0003, + SSL_RSA_WITH_RC4_128_MD5 = 0x0004, + SSL_RSA_WITH_RC4_128_SHA = 0x0005, + SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 = 0x0006, + SSL_RSA_WITH_IDEA_CBC_SHA = 0x0007, + SSL_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0008, + SSL_RSA_WITH_DES_CBC_SHA = 0x0009, + SSL_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A, + SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x000B, + SSL_DH_DSS_WITH_DES_CBC_SHA = 0x000C, + SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D, + SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x000E, + SSL_DH_RSA_WITH_DES_CBC_SHA = 0x000F, + SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010, + SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA = 0x0011, + SSL_DHE_DSS_WITH_DES_CBC_SHA = 0x0012, + SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013, + SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA = 0x0014, + SSL_DHE_RSA_WITH_DES_CBC_SHA = 0x0015, + SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016, + SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 = 0x0017, + SSL_DH_anon_WITH_RC4_128_MD5 = 0x0018, + SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA = 0x0019, + SSL_DH_anon_WITH_DES_CBC_SHA = 0x001A, + SSL_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B, + SSL_FORTEZZA_DMS_WITH_NULL_SHA = 0x001C, + SSL_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA = 0x001D, + + + TLS_RSA_WITH_AES_128_CBC_SHA = 0x002F, + TLS_DH_DSS_WITH_AES_128_CBC_SHA = 0x0030, + TLS_DH_RSA_WITH_AES_128_CBC_SHA = 0x0031, + TLS_DHE_DSS_WITH_AES_128_CBC_SHA = 0x0032, + TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x0033, + TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x0034, + TLS_RSA_WITH_AES_256_CBC_SHA = 0x0035, + TLS_DH_DSS_WITH_AES_256_CBC_SHA = 0x0036, + TLS_DH_RSA_WITH_AES_256_CBC_SHA = 0x0037, + TLS_DHE_DSS_WITH_AES_256_CBC_SHA = 0x0038, + TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x0039, + TLS_DH_anon_WITH_AES_256_CBC_SHA = 0x003A, + + + TLS_ECDH_ECDSA_WITH_NULL_SHA = 0xC001, + TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0xC002, + TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC003, + TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 0xC004, + TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 0xC005, + TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0xC006, + TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0xC007, + TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0xC008, + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0xC009, + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0xC00A, + TLS_ECDH_RSA_WITH_NULL_SHA = 0xC00B, + TLS_ECDH_RSA_WITH_RC4_128_SHA = 0xC00C, + TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0xC00D, + TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = 0xC00E, + TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = 0xC00F, + TLS_ECDHE_RSA_WITH_NULL_SHA = 0xC010, + TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0xC011, + TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0xC012, + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0xC013, + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0xC014, + TLS_ECDH_anon_WITH_NULL_SHA = 0xC015, + TLS_ECDH_anon_WITH_RC4_128_SHA = 0xC016, + TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA = 0xC017, + TLS_ECDH_anon_WITH_AES_128_CBC_SHA = 0xC018, + TLS_ECDH_anon_WITH_AES_256_CBC_SHA = 0xC019, + + + TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA = 0xC035, + TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA = 0xC036, + + + TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xCCAB, + + + + + TLS_NULL_WITH_NULL_NULL = 0x0000, + + + TLS_RSA_WITH_NULL_MD5 = 0x0001, + TLS_RSA_WITH_NULL_SHA = 0x0002, + TLS_RSA_WITH_RC4_128_MD5 = 0x0004, + TLS_RSA_WITH_RC4_128_SHA = 0x0005, + TLS_RSA_WITH_3DES_EDE_CBC_SHA = 0x000A, + TLS_RSA_WITH_NULL_SHA256 = 0x003B, + TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x003C, + TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x003D, + + + TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA = 0x000D, + TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0010, + TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA = 0x0013, + TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x0016, + TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = 0x003E, + TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = 0x003F, + TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = 0x0040, + TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x0067, + TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = 0x0068, + TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = 0x0069, + TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = 0x006A, + TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x006B, + + + TLS_DH_anon_WITH_RC4_128_MD5 = 0x0018, + TLS_DH_anon_WITH_3DES_EDE_CBC_SHA = 0x001B, + TLS_DH_anon_WITH_AES_128_CBC_SHA256 = 0x006C, + TLS_DH_anon_WITH_AES_256_CBC_SHA256 = 0x006D, + + + TLS_PSK_WITH_RC4_128_SHA = 0x008A, + TLS_PSK_WITH_3DES_EDE_CBC_SHA = 0x008B, + TLS_PSK_WITH_AES_128_CBC_SHA = 0x008C, + TLS_PSK_WITH_AES_256_CBC_SHA = 0x008D, + TLS_DHE_PSK_WITH_RC4_128_SHA = 0x008E, + TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA = 0x008F, + TLS_DHE_PSK_WITH_AES_128_CBC_SHA = 0x0090, + TLS_DHE_PSK_WITH_AES_256_CBC_SHA = 0x0091, + TLS_RSA_PSK_WITH_RC4_128_SHA = 0x0092, + TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA = 0x0093, + TLS_RSA_PSK_WITH_AES_128_CBC_SHA = 0x0094, + TLS_RSA_PSK_WITH_AES_256_CBC_SHA = 0x0095, + + + TLS_PSK_WITH_NULL_SHA = 0x002C, + TLS_DHE_PSK_WITH_NULL_SHA = 0x002D, + TLS_RSA_PSK_WITH_NULL_SHA = 0x002E, + + + TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x009C, + TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x009D, + TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x009E, + TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x009F, + TLS_DH_RSA_WITH_AES_128_GCM_SHA256 = 0x00A0, + TLS_DH_RSA_WITH_AES_256_GCM_SHA384 = 0x00A1, + TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 = 0x00A2, + TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 = 0x00A3, + TLS_DH_DSS_WITH_AES_128_GCM_SHA256 = 0x00A4, + TLS_DH_DSS_WITH_AES_256_GCM_SHA384 = 0x00A5, + TLS_DH_anon_WITH_AES_128_GCM_SHA256 = 0x00A6, + TLS_DH_anon_WITH_AES_256_GCM_SHA384 = 0x00A7, + + + TLS_PSK_WITH_AES_128_GCM_SHA256 = 0x00A8, + TLS_PSK_WITH_AES_256_GCM_SHA384 = 0x00A9, + TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0x00AA, + TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0x00AB, + TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 = 0x00AC, + TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 = 0x00AD, + + TLS_PSK_WITH_AES_128_CBC_SHA256 = 0x00AE, + TLS_PSK_WITH_AES_256_CBC_SHA384 = 0x00AF, + TLS_PSK_WITH_NULL_SHA256 = 0x00B0, + TLS_PSK_WITH_NULL_SHA384 = 0x00B1, + + TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0x00B2, + TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0x00B3, + TLS_DHE_PSK_WITH_NULL_SHA256 = 0x00B4, + TLS_DHE_PSK_WITH_NULL_SHA384 = 0x00B5, + + TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 = 0x00B6, + TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 = 0x00B7, + TLS_RSA_PSK_WITH_NULL_SHA256 = 0x00B8, + TLS_RSA_PSK_WITH_NULL_SHA384 = 0x00B9, + + + + + TLS_AES_128_GCM_SHA256 = 0x1301, + TLS_AES_256_GCM_SHA384 = 0x1302, + TLS_CHACHA20_POLY1305_SHA256 = 0x1303, + TLS_AES_128_CCM_SHA256 = 0x1304, + TLS_AES_128_CCM_8_SHA256 = 0x1305, + + + + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC023, + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC024, + TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 0xC025, + TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 0xC026, + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0xC027, + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0xC028, + TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 0xC029, + TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 0xC02A, + + + + TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02B, + TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02C, + TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 0xC02D, + TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 0xC02E, + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0xC02F, + TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0xC030, + TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0xC031, + TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0xC032, + + + + TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA8, + TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA9, + + + TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0x00FF, + + + + SSL_RSA_WITH_RC2_CBC_MD5 = 0xFF80, + SSL_RSA_WITH_IDEA_CBC_MD5 = 0xFF81, + SSL_RSA_WITH_DES_CBC_MD5 = 0xFF82, + SSL_RSA_WITH_3DES_EDE_CBC_MD5 = 0xFF83, + SSL_NO_SUCH_CIPHERSUITE = 0xFFFF +}; + + + + + +typedef int SSLCiphersuiteGroup; enum { + kSSLCiphersuiteGroupDefault, + kSSLCiphersuiteGroupCompatibility, + kSSLCiphersuiteGroupLegacy, + kSSLCiphersuiteGroupATS, + kSSLCiphersuiteGroupATSCompatibility, +}; +// @protocol OS_sec_trust /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_trust_t; +// @protocol OS_sec_identity /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_identity_t; +// @protocol OS_sec_certificate /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_certificate_t; +typedef uint16_t tls_protocol_version_t; enum { + tls_protocol_version_TLSv10 __attribute__((swift_name("TLSv10"))) = 0x0301, + tls_protocol_version_TLSv11 __attribute__((swift_name("TLSv11"))) = 0x0302, + tls_protocol_version_TLSv12 __attribute__((swift_name("TLSv12"))) = 0x0303, + tls_protocol_version_TLSv13 __attribute__((swift_name("TLSv13"))) = 0x0304, + tls_protocol_version_DTLSv10 __attribute__((swift_name("DTLSv10"))) = 0xfeff, + tls_protocol_version_DTLSv12 __attribute__((swift_name("DTLSv12"))) = 0xfefd, +}; +typedef uint16_t tls_ciphersuite_t; enum { + tls_ciphersuite_RSA_WITH_3DES_EDE_CBC_SHA __attribute__((swift_name("RSA_WITH_3DES_EDE_CBC_SHA"))) = 0x000A, + tls_ciphersuite_RSA_WITH_AES_128_CBC_SHA __attribute__((swift_name("RSA_WITH_AES_128_CBC_SHA"))) = 0x002F, + tls_ciphersuite_RSA_WITH_AES_256_CBC_SHA __attribute__((swift_name("RSA_WITH_AES_256_CBC_SHA"))) = 0x0035, + tls_ciphersuite_RSA_WITH_AES_128_GCM_SHA256 __attribute__((swift_name("RSA_WITH_AES_128_GCM_SHA256"))) = 0x009C, + tls_ciphersuite_RSA_WITH_AES_256_GCM_SHA384 __attribute__((swift_name("RSA_WITH_AES_256_GCM_SHA384"))) = 0x009D, + tls_ciphersuite_RSA_WITH_AES_128_CBC_SHA256 __attribute__((swift_name("RSA_WITH_AES_128_CBC_SHA256"))) = 0x003C, + tls_ciphersuite_RSA_WITH_AES_256_CBC_SHA256 __attribute__((swift_name("RSA_WITH_AES_256_CBC_SHA256"))) = 0x003D, + tls_ciphersuite_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA __attribute__((swift_name("ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"))) = 0xC008, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_128_CBC_SHA __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_128_CBC_SHA"))) = 0xC009, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_256_CBC_SHA __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_256_CBC_SHA"))) = 0xC00A, + tls_ciphersuite_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA __attribute__((swift_name("ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"))) = 0xC012, + tls_ciphersuite_ECDHE_RSA_WITH_AES_128_CBC_SHA __attribute__((swift_name("ECDHE_RSA_WITH_AES_128_CBC_SHA"))) = 0xC013, + tls_ciphersuite_ECDHE_RSA_WITH_AES_256_CBC_SHA __attribute__((swift_name("ECDHE_RSA_WITH_AES_256_CBC_SHA"))) = 0xC014, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"))) = 0xC023, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"))) = 0xC024, + tls_ciphersuite_ECDHE_RSA_WITH_AES_128_CBC_SHA256 __attribute__((swift_name("ECDHE_RSA_WITH_AES_128_CBC_SHA256"))) = 0xC027, + tls_ciphersuite_ECDHE_RSA_WITH_AES_256_CBC_SHA384 __attribute__((swift_name("ECDHE_RSA_WITH_AES_256_CBC_SHA384"))) = 0xC028, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"))) = 0xC02B, + tls_ciphersuite_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 __attribute__((swift_name("ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"))) = 0xC02C, + tls_ciphersuite_ECDHE_RSA_WITH_AES_128_GCM_SHA256 __attribute__((swift_name("ECDHE_RSA_WITH_AES_128_GCM_SHA256"))) = 0xC02F, + tls_ciphersuite_ECDHE_RSA_WITH_AES_256_GCM_SHA384 __attribute__((swift_name("ECDHE_RSA_WITH_AES_256_GCM_SHA384"))) = 0xC030, + tls_ciphersuite_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 __attribute__((swift_name("ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"))) = 0xCCA8, + tls_ciphersuite_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 __attribute__((swift_name("ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"))) = 0xCCA9, + tls_ciphersuite_AES_128_GCM_SHA256 __attribute__((swift_name("AES_128_GCM_SHA256"))) = 0x1301, + tls_ciphersuite_AES_256_GCM_SHA384 __attribute__((swift_name("AES_256_GCM_SHA384"))) = 0x1302, + tls_ciphersuite_CHACHA20_POLY1305_SHA256 __attribute__((swift_name("CHACHA20_POLY1305_SHA256"))) = 0x1303, +}; +typedef uint16_t tls_ciphersuite_group_t; enum { + tls_ciphersuite_group_default, + tls_ciphersuite_group_compatibility, + tls_ciphersuite_group_legacy, + tls_ciphersuite_group_ats, + tls_ciphersuite_group_ats_compatibility, +}; + + + + + + + +typedef int SSLProtocol; enum { + kSSLProtocolUnknown __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 0, + kTLSProtocol1 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 4, + kTLSProtocol11 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 7, + kTLSProtocol12 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 8, + kDTLSProtocol1 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 9, + kTLSProtocol13 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 10, + kDTLSProtocol12 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 11, + kTLSProtocolMaxSupported __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 999, + kSSLProtocol2 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 1, + kSSLProtocol3 __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 2, + kSSLProtocol3Only __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 3, + kTLSProtocol1Only __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 5, + kSSLProtocolAll __attribute__((availability(ios,introduced=5_0,deprecated=13_0,message="" ))) = 6, +}; + +extern "C" { + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable sec_trust_t +sec_trust_create(SecTrustRef trust); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +SecTrustRef +sec_trust_copy_ref(sec_trust_t trust); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable sec_identity_t +sec_identity_create(SecIdentityRef identity); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable sec_identity_t +sec_identity_create_with_certificates(SecIdentityRef identity, CFArrayRef certificates); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +bool +sec_identity_access_certificates(sec_identity_t identity, + void (^handler)(sec_certificate_t certificate)); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +_Nullable SecIdentityRef +sec_identity_copy_ref(sec_identity_t identity); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +_Nullable CFArrayRef +sec_identity_copy_certificates_ref(sec_identity_t identity); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable sec_certificate_t +sec_certificate_create(SecCertificateRef certificate); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +SecCertificateRef +sec_certificate_copy_ref(sec_certificate_t certificate); +#pragma clang assume_nonnull end + + +} +// @protocol OS_sec_protocol_metadata /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_protocol_metadata_t; + + +extern "C" { + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +const char * _Nullable +sec_protocol_metadata_get_negotiated_protocol(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable dispatch_data_t +sec_protocol_metadata_copy_peer_public_key(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +tls_protocol_version_t +sec_protocol_metadata_get_negotiated_tls_protocol_version(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,replacement="sec_protocol_metadata_get_negotiated_tls_protocol_version"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,replacement="sec_protocol_metadata_get_negotiated_tls_protocol_version"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,replacement="sec_protocol_metadata_get_negotiated_tls_protocol_version"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,replacement="sec_protocol_metadata_get_negotiated_tls_protocol_version"))) + +SSLProtocol +sec_protocol_metadata_get_negotiated_protocol_version(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +tls_ciphersuite_t +sec_protocol_metadata_get_negotiated_tls_ciphersuite(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,replacement="sec_protocol_metadata_get_negotiated_tls_ciphersuite"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,replacement="sec_protocol_metadata_get_negotiated_tls_ciphersuite"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,replacement="sec_protocol_metadata_get_negotiated_tls_ciphersuite"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,replacement="sec_protocol_metadata_get_negotiated_tls_ciphersuite"))) + +__attribute__((availability(macCatalyst,unavailable))) +SSLCipherSuite +sec_protocol_metadata_get_negotiated_ciphersuite(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_get_early_data_accepted(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_access_peer_certificate_chain(sec_protocol_metadata_t metadata, + void (^handler)(sec_certificate_t certificate)); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_access_ocsp_response(sec_protocol_metadata_t metadata, + void (^handler)(dispatch_data_t ocsp_data)); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_access_supported_signature_algorithms(sec_protocol_metadata_t metadata, + void (^handler)(uint16_t signature_algorithm)); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_access_distinguished_names(sec_protocol_metadata_t metadata, + void (^handler)(dispatch_data_t distinguished_name)); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +bool +sec_protocol_metadata_access_pre_shared_keys(sec_protocol_metadata_t metadata, void (^handler)(dispatch_data_t psk, dispatch_data_t psk_identity)); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +const char * _Nullable +sec_protocol_metadata_get_server_name(sec_protocol_metadata_t metadata); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_peers_are_equal(sec_protocol_metadata_t metadataA, sec_protocol_metadata_t metadataB); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +bool +sec_protocol_metadata_challenge_parameters_are_equal(sec_protocol_metadata_t metadataA, sec_protocol_metadata_t metadataB); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable dispatch_data_t +sec_protocol_metadata_create_secret(sec_protocol_metadata_t metadata, size_t label_len, + const char *label, size_t exporter_length); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +__attribute__((__ns_returns_retained__)) _Nullable dispatch_data_t +sec_protocol_metadata_create_secret_with_context(sec_protocol_metadata_t metadata, size_t label_len, + const char *label, size_t context_len, + const uint8_t *context, size_t exporter_length); +#pragma clang assume_nonnull end + + +} +// @protocol OS_sec_protocol_options /* @end */ + typedef NSObject/**/ * __attribute__((objc_independent_class)) sec_protocol_options_t; + + +extern "C" { + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +bool +sec_protocol_options_are_equal(sec_protocol_options_t optionsA, sec_protocol_options_t optionsB); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_local_identity(sec_protocol_options_t options, sec_identity_t identity); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_append_tls_ciphersuite(sec_protocol_options_t options, tls_ciphersuite_t ciphersuite); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,message="Use sec_protocol_options_append_tls_ciphersuite"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,message="Use sec_protocol_options_append_tls_ciphersuite"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,message="Use sec_protocol_options_append_tls_ciphersuite"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,message="Use sec_protocol_options_append_tls_ciphersuite"))) +__attribute__((availability(macCatalyst,unavailable))) +void +sec_protocol_options_add_tls_ciphersuite(sec_protocol_options_t options, SSLCipherSuite ciphersuite); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_append_tls_ciphersuite_group(sec_protocol_options_t options, tls_ciphersuite_group_t group); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,message="Use sec_protocol_options_append_tls_ciphersuite_group"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,message="Use sec_protocol_options_append_tls_ciphersuite_group"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,message="Use sec_protocol_options_append_tls_ciphersuite_group"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,message="Use sec_protocol_options_append_tls_ciphersuite_group"))) +__attribute__((availability(macCatalyst,unavailable))) +void +sec_protocol_options_add_tls_ciphersuite_group(sec_protocol_options_t options, SSLCiphersuiteGroup group); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,replacement="sec_protocol_options_set_min_tls_protocol_version"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,replacement="sec_protocol_options_set_min_tls_protocol_version"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,replacement="sec_protocol_options_set_min_tls_protocol_version"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,replacement="sec_protocol_options_set_min_tls_protocol_version"))) + +__attribute__((availability(macCatalyst,unavailable))) +void +sec_protocol_options_set_tls_min_version(sec_protocol_options_t options, SSLProtocol version); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_set_min_tls_protocol_version(sec_protocol_options_t options, tls_protocol_version_t version); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +tls_protocol_version_t +sec_protocol_options_get_default_min_tls_protocol_version(void); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +tls_protocol_version_t +sec_protocol_options_get_default_min_dtls_protocol_version(void); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,replacement="sec_protocol_options_set_max_tls_protocol_version"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,replacement="sec_protocol_options_set_max_tls_protocol_version"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,replacement="sec_protocol_options_set_max_tls_protocol_version"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,replacement="sec_protocol_options_set_max_tls_protocol_version"))) + +__attribute__((availability(macCatalyst,unavailable))) +void +sec_protocol_options_set_tls_max_version(sec_protocol_options_t options, SSLProtocol version); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_set_max_tls_protocol_version(sec_protocol_options_t options, tls_protocol_version_t version); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +tls_protocol_version_t +sec_protocol_options_get_default_max_tls_protocol_version(void); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +tls_protocol_version_t +sec_protocol_options_get_default_max_dtls_protocol_version(void); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_add_tls_application_protocol(sec_protocol_options_t options, const char *application_protocol); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_server_name(sec_protocol_options_t options, const char *server_name); +__attribute__((availability(macos,introduced=10.14,deprecated=10.15,message="DHE ciphersuites are no longer supported"))) __attribute__((availability(ios,introduced=12.0,deprecated=13.0,message="DHE ciphersuites are no longer supported"))) __attribute__((availability(watchos,introduced=5.0,deprecated=6.0,message="DHE ciphersuites are no longer supported"))) __attribute__((availability(tvos,introduced=12.0,deprecated=13.0,message="DHE ciphersuites are no longer supported"))) +void +sec_protocol_options_set_tls_diffie_hellman_parameters(sec_protocol_options_t options, dispatch_data_t params); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_add_pre_shared_key(sec_protocol_options_t options, dispatch_data_t psk, dispatch_data_t psk_identity); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_set_tls_pre_shared_key_identity_hint(sec_protocol_options_t options, dispatch_data_t psk_identity_hint); +typedef void (*sec_protocol_pre_shared_key_selection_complete_t)(dispatch_data_t _Nullable psk_identity); +typedef void (*sec_protocol_pre_shared_key_selection_t)(sec_protocol_metadata_t metadata, dispatch_data_t _Nullable psk_identity_hint, sec_protocol_pre_shared_key_selection_complete_t complete); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +void +sec_protocol_options_set_pre_shared_key_selection_block(sec_protocol_options_t options, sec_protocol_pre_shared_key_selection_t psk_selection_block, dispatch_queue_t psk_selection_queue); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_tickets_enabled(sec_protocol_options_t options, bool tickets_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_is_fallback_attempt(sec_protocol_options_t options, bool is_fallback_attempt); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_resumption_enabled(sec_protocol_options_t options, bool resumption_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_false_start_enabled(sec_protocol_options_t options, bool false_start_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_ocsp_enabled(sec_protocol_options_t options, bool ocsp_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_sct_enabled(sec_protocol_options_t options, bool sct_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_tls_renegotiation_enabled(sec_protocol_options_t options, bool renegotiation_enabled); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_peer_authentication_required(sec_protocol_options_t options, bool peer_authentication_required); +typedef void (*sec_protocol_key_update_complete_t)(void); +typedef void (*sec_protocol_key_update_t)(sec_protocol_metadata_t metadata, sec_protocol_key_update_complete_t complete); +typedef void (*sec_protocol_challenge_complete_t)(sec_identity_t _Nullable identity); +typedef void (*sec_protocol_challenge_t)(sec_protocol_metadata_t metadata, sec_protocol_challenge_complete_t complete); +typedef void (*sec_protocol_verify_complete_t)(bool result); +typedef void (*sec_protocol_verify_t)(sec_protocol_metadata_t metadata, sec_trust_t trust_ref, sec_protocol_verify_complete_t complete); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_key_update_block(sec_protocol_options_t options, sec_protocol_key_update_t key_update_block, dispatch_queue_t key_update_queue); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_challenge_block(sec_protocol_options_t options, sec_protocol_challenge_t challenge_block, dispatch_queue_t challenge_queue); +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) +void +sec_protocol_options_set_verify_block(sec_protocol_options_t options, sec_protocol_verify_t verify_block, dispatch_queue_t verify_block_queue); +#pragma clang assume_nonnull end + + + + +} + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + +#pragma clang assume_nonnull begin +typedef NSUInteger NSURLCredentialPersistence; enum { + NSURLCredentialPersistenceNone, + NSURLCredentialPersistenceForSession, + NSURLCredentialPersistencePermanent, + NSURLCredentialPersistenceSynchronizable __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +}; + +// @class NSURLCredentialInternal; +#ifndef _REWRITER_typedef_NSURLCredentialInternal +#define _REWRITER_typedef_NSURLCredentialInternal +typedef struct objc_object NSURLCredentialInternal; +typedef struct {} _objc_exc_NSURLCredentialInternal; +#endif + + + + + + + + +#ifndef _REWRITER_typedef_NSURLCredential +#define _REWRITER_typedef_NSURLCredential +typedef struct objc_object NSURLCredential; +typedef struct {} _objc_exc_NSURLCredential; +#endif + +struct NSURLCredential_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLCredentialInternal *_internal; +}; + + + + + + +// @property (readonly) NSURLCredentialPersistence persistence; + +/* @end */ + + + + + +// @interface NSURLCredential(NSInternetPassword) +// - (instancetype)initWithUser:(NSString *)user password:(NSString *)password persistence:(NSURLCredentialPersistence)persistence; +// + (NSURLCredential *)credentialWithUser:(NSString *)user password:(NSString *)password persistence:(NSURLCredentialPersistence)persistence; + + + + + +// @property (nullable, readonly, copy) NSString *user; +// @property (nullable, readonly, copy) NSString *password; +// @property (readonly) BOOL hasPassword; + +/* @end */ + + + + + +// @interface NSURLCredential(NSClientCertificate) +// - (instancetype)initWithIdentity:(SecIdentityRef)identity certificates:(nullable NSArray *)certArray persistence:(NSURLCredentialPersistence)persistence __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSURLCredential *)credentialWithIdentity:(SecIdentityRef)identity certificates:(nullable NSArray *)certArray persistence:(NSURLCredentialPersistence)persistence __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (nullable, readonly) SecIdentityRef identity; + + + + + +// @property (readonly, copy) NSArray *certificates __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSURLCredential(NSServerTrust) + + + + + + +// - (instancetype)initWithTrust:(SecTrustRef)trust __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// + (NSURLCredential *)credentialForTrust:(SecTrustRef)trust __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + + +#pragma clang assume_nonnull begin + + + + + +extern "C" NSString * const NSURLProtectionSpaceHTTP __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLProtectionSpaceHTTPS __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLProtectionSpaceFTP __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLProtectionSpaceHTTPProxy; + + + + + +extern "C" NSString * const NSURLProtectionSpaceHTTPSProxy; + + + + + +extern "C" NSString * const NSURLProtectionSpaceFTPProxy; + + + + + +extern "C" NSString * const NSURLProtectionSpaceSOCKSProxy; + + + + + +extern "C" NSString * const NSURLAuthenticationMethodDefault; + + + + + + +extern "C" NSString * const NSURLAuthenticationMethodHTTPBasic; + + + + + +extern "C" NSString * const NSURLAuthenticationMethodHTTPDigest; + + + + + +extern "C" NSString * const NSURLAuthenticationMethodHTMLForm; + + + + + +extern "C" NSString * const NSURLAuthenticationMethodNTLM __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLAuthenticationMethodNegotiate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLAuthenticationMethodClientCertificate __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSString * const NSURLAuthenticationMethodServerTrust __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @class NSURLProtectionSpaceInternal; +#ifndef _REWRITER_typedef_NSURLProtectionSpaceInternal +#define _REWRITER_typedef_NSURLProtectionSpaceInternal +typedef struct objc_object NSURLProtectionSpaceInternal; +typedef struct {} _objc_exc_NSURLProtectionSpaceInternal; +#endif + + + + + + + + +#ifndef _REWRITER_typedef_NSURLProtectionSpace +#define _REWRITER_typedef_NSURLProtectionSpace +typedef struct objc_object NSURLProtectionSpace; +typedef struct {} _objc_exc_NSURLProtectionSpace; +#endif + +struct NSURLProtectionSpace_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLProtectionSpaceInternal *_internal; +}; + +// - (instancetype)initWithHost:(NSString *)host port:(NSInteger)port protocol:(nullable NSString *)protocol realm:(nullable NSString *)realm authenticationMethod:(nullable NSString *)authenticationMethod; +// - (instancetype)initWithProxyHost:(NSString *)host port:(NSInteger)port type:(nullable NSString *)type realm:(nullable NSString *)realm authenticationMethod:(nullable NSString *)authenticationMethod; +// @property (nullable, readonly, copy) NSString *realm; + + + + + +// @property (readonly) BOOL receivesCredentialSecurely; + + + + + +// @property (readonly) BOOL isProxy; + + + + + +// @property (readonly, copy) NSString *host; + + + + + +// @property (readonly) NSInteger port; + + + + + +// @property (nullable, readonly, copy) NSString *proxyType; + + + + + +// @property (nullable, readonly, copy) NSString *protocol; + + + + + +// @property (readonly, copy) NSString *authenticationMethod; + +/* @end */ + + + + + +// @interface NSURLProtectionSpace(NSClientCertificateSpace) + + + + + +// @property (nullable, readonly, copy) NSArray *distinguishedNames __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + + +// @interface NSURLProtectionSpace(NSServerTrustValidationSpace) + + + + + +// @property (nullable, readonly) SecTrustRef serverTrust __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSURLCredential; +#ifndef _REWRITER_typedef_NSURLCredential +#define _REWRITER_typedef_NSURLCredential +typedef struct objc_object NSURLCredential; +typedef struct {} _objc_exc_NSURLCredential; +#endif + +// @class NSURLSessionTask; +#ifndef _REWRITER_typedef_NSURLSessionTask +#define _REWRITER_typedef_NSURLSessionTask +typedef struct objc_object NSURLSessionTask; +typedef struct {} _objc_exc_NSURLSessionTask; +#endif + + +// @class NSURLCredentialStorageInternal; +#ifndef _REWRITER_typedef_NSURLCredentialStorageInternal +#define _REWRITER_typedef_NSURLCredentialStorageInternal +typedef struct objc_object NSURLCredentialStorageInternal; +typedef struct {} _objc_exc_NSURLCredentialStorageInternal; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + +#ifndef _REWRITER_typedef_NSURLCredentialStorage +#define _REWRITER_typedef_NSURLCredentialStorage +typedef struct objc_object NSURLCredentialStorage; +typedef struct {} _objc_exc_NSURLCredentialStorage; +#endif + +struct NSURLCredentialStorage_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLCredentialStorageInternal *_internal; +}; + + + + + + + +@property (class, readonly, strong) NSURLCredentialStorage *sharedCredentialStorage; + + + + + + + +// - (nullable NSDictionary *)credentialsForProtectionSpace:(NSURLProtectionSpace *)space; + + + + + + + +// @property (readonly, copy) NSDictionary *> *allCredentials; +// - (void)setCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)space; +// - (void)removeCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)space; +// - (void)removeCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)space options:(nullable NSDictionary *)options __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (nullable NSURLCredential *)defaultCredentialForProtectionSpace:(NSURLProtectionSpace *)space; +// - (void)setDefaultCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)space; + +/* @end */ + + +// @interface NSURLCredentialStorage (NSURLSessionTaskAdditions) +// - (void)getCredentialsForProtectionSpace:(NSURLProtectionSpace *)protectionSpace task:(NSURLSessionTask *)task completionHandler:(void (^) (NSDictionary * _Nullable credentials))completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)setCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)protectionSpace task:(NSURLSessionTask *)task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)removeCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)protectionSpace options:(nullable NSDictionary *)options task:(NSURLSessionTask *)task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)getDefaultCredentialForProtectionSpace:(NSURLProtectionSpace *)space task:(NSURLSessionTask *)task completionHandler:(void (^) (NSURLCredential * _Nullable credential))completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)setDefaultCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)protectionSpace task:(NSURLSessionTask *)task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + + + + + + +extern "C" NSNotificationName const NSURLCredentialStorageChangedNotification; + + + + + + + +extern "C" NSString *const NSURLCredentialStorageRemoveSynchronizableCredentials __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + +extern "C" { +#pragma clang assume_nonnull begin +extern const CFStringRef kCFErrorDomainCFNetwork __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFErrorDomainWinSock __attribute__((availability(ios,introduced=2_0))); +typedef int CFNetworkErrors; enum { + + kCFHostErrorHostNotFound = 1, + kCFHostErrorUnknown = 2, + + kCFSOCKSErrorUnknownClientVersion = 100, + kCFSOCKSErrorUnsupportedServerVersion = 101, + + kCFSOCKS4ErrorRequestFailed = 110, + kCFSOCKS4ErrorIdentdFailed = 111, + kCFSOCKS4ErrorIdConflict = 112, + kCFSOCKS4ErrorUnknownStatusCode = 113, + + kCFSOCKS5ErrorBadState = 120, + kCFSOCKS5ErrorBadResponseAddr = 121, + kCFSOCKS5ErrorBadCredentials = 122, + kCFSOCKS5ErrorUnsupportedNegotiationMethod = 123, + kCFSOCKS5ErrorNoAcceptableMethod = 124, + + kCFFTPErrorUnexpectedStatusCode = 200, + + kCFErrorHTTPAuthenticationTypeUnsupported = 300, + kCFErrorHTTPBadCredentials = 301, + kCFErrorHTTPConnectionLost = 302, + kCFErrorHTTPParseFailure = 303, + kCFErrorHTTPRedirectionLoopDetected = 304, + kCFErrorHTTPBadURL = 305, + kCFErrorHTTPProxyConnectionFailure = 306, + kCFErrorHTTPBadProxyCredentials = 307, + kCFErrorPACFileError = 308, + kCFErrorPACFileAuth = 309, + kCFErrorHTTPSProxyConnectionFailure = 310, + kCFStreamErrorHTTPSProxyFailureUnexpectedResponseToCONNECTMethod = 311, + + + kCFURLErrorBackgroundSessionInUseByAnotherProcess = -996, + kCFURLErrorBackgroundSessionWasDisconnected = -997, + kCFURLErrorUnknown = -998, + kCFURLErrorCancelled = -999, + kCFURLErrorBadURL = -1000, + kCFURLErrorTimedOut = -1001, + kCFURLErrorUnsupportedURL = -1002, + kCFURLErrorCannotFindHost = -1003, + kCFURLErrorCannotConnectToHost = -1004, + kCFURLErrorNetworkConnectionLost = -1005, + kCFURLErrorDNSLookupFailed = -1006, + kCFURLErrorHTTPTooManyRedirects = -1007, + kCFURLErrorResourceUnavailable = -1008, + kCFURLErrorNotConnectedToInternet = -1009, + kCFURLErrorRedirectToNonExistentLocation = -1010, + kCFURLErrorBadServerResponse = -1011, + kCFURLErrorUserCancelledAuthentication = -1012, + kCFURLErrorUserAuthenticationRequired = -1013, + kCFURLErrorZeroByteResource = -1014, + kCFURLErrorCannotDecodeRawData = -1015, + kCFURLErrorCannotDecodeContentData = -1016, + kCFURLErrorCannotParseResponse = -1017, + kCFURLErrorInternationalRoamingOff = -1018, + kCFURLErrorCallIsActive = -1019, + kCFURLErrorDataNotAllowed = -1020, + kCFURLErrorRequestBodyStreamExhausted = -1021, + kCFURLErrorAppTransportSecurityRequiresSecureConnection = -1022, + kCFURLErrorFileDoesNotExist = -1100, + kCFURLErrorFileIsDirectory = -1101, + kCFURLErrorNoPermissionsToReadFile = -1102, + kCFURLErrorDataLengthExceedsMaximum = -1103, + kCFURLErrorFileOutsideSafeArea = -1104, + + kCFURLErrorSecureConnectionFailed = -1200, + kCFURLErrorServerCertificateHasBadDate = -1201, + kCFURLErrorServerCertificateUntrusted = -1202, + kCFURLErrorServerCertificateHasUnknownRoot = -1203, + kCFURLErrorServerCertificateNotYetValid = -1204, + kCFURLErrorClientCertificateRejected = -1205, + kCFURLErrorClientCertificateRequired = -1206, + kCFURLErrorCannotLoadFromNetwork = -2000, + + kCFURLErrorCannotCreateFile = -3000, + kCFURLErrorCannotOpenFile = -3001, + kCFURLErrorCannotCloseFile = -3002, + kCFURLErrorCannotWriteToFile = -3003, + kCFURLErrorCannotRemoveFile = -3004, + kCFURLErrorCannotMoveFile = -3005, + kCFURLErrorDownloadDecodingFailedMidStream = -3006, + kCFURLErrorDownloadDecodingFailedToComplete = -3007, + + + kCFHTTPCookieCannotParseCookieFile = -4000, + + + kCFNetServiceErrorUnknown = -72000L, + kCFNetServiceErrorCollision = -72001L, + kCFNetServiceErrorNotFound = -72002L, + kCFNetServiceErrorInProgress = -72003L, + kCFNetServiceErrorBadArgument = -72004L, + kCFNetServiceErrorCancel = -72005L, + kCFNetServiceErrorInvalid = -72006L, + kCFNetServiceErrorTimeout = -72007L, + kCFNetServiceErrorDNSServiceFailure = -73000L +}; +extern const CFStringRef kCFURLErrorFailingURLErrorKey __attribute__((availability(ios,introduced=2_2))); +extern const CFStringRef kCFURLErrorFailingURLStringErrorKey __attribute__((availability(ios,introduced=2_2))); +extern const CFStringRef kCFGetAddrInfoFailureKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFSOCKSStatusCodeKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFSOCKSVersionKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFSOCKSNegotiationMethodKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFDNSServiceFailureKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFFTPStatusCodeKey __attribute__((availability(ios,introduced=2_0))); +#pragma clang assume_nonnull end + + +} + + + +extern "C" { +#pragma clang assume_nonnull begin + +#pragma pack(push, 2) + + + + + + + + +typedef struct __CFHost* CFHostRef; +extern const SInt32 kCFStreamErrorDomainNetDB __attribute__((availability(ios,introduced=2_0))); +extern const SInt32 kCFStreamErrorDomainSystemConfiguration __attribute__((availability(ios,introduced=2_0))); +typedef int CFHostInfoType; enum { + + + + + + kCFHostAddresses = 0, + + + + + kCFHostNames = 1, + + + + + + kCFHostReachability = 2 +}; +struct CFHostClientContext { + + + + + + + CFIndex version; + + + + + + void * _Nullable info; + CFAllocatorRetainCallBack _Nullable retain; + + + + + + CFAllocatorReleaseCallBack _Nullable release; + + + + + + + + CFAllocatorCopyDescriptionCallBack _Nullable copyDescription; +}; +typedef struct CFHostClientContext CFHostClientContext; +typedef void ( * CFHostClientCallBack)(CFHostRef theHost, CFHostInfoType typeInfo, const CFStreamError * _Nullable error, void * _Nullable info); +extern CFTypeID +CFHostGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFHostRef +CFHostCreateWithName(CFAllocatorRef _Nullable allocator, CFStringRef hostname) __attribute__((availability(ios,introduced=2_0))); +extern CFHostRef +CFHostCreateWithAddress(CFAllocatorRef _Nullable allocator, CFDataRef addr) __attribute__((availability(ios,introduced=2_0))); +extern CFHostRef +CFHostCreateCopy(CFAllocatorRef _Nullable alloc, CFHostRef host) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHostStartInfoResolution(CFHostRef theHost, CFHostInfoType info, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFArrayRef +CFHostGetAddressing(CFHostRef theHost, Boolean * _Nullable hasBeenResolved) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFArrayRef +CFHostGetNames(CFHostRef theHost, Boolean * _Nullable hasBeenResolved) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDataRef +CFHostGetReachability(CFHostRef theHost, Boolean * _Nullable hasBeenResolved) __attribute__((availability(ios,introduced=2_0))); +extern void +CFHostCancelInfoResolution(CFHostRef theHost, CFHostInfoType info) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHostSetClient(CFHostRef theHost, CFHostClientCallBack _Nullable clientCB, CFHostClientContext * _Nullable clientContext) __attribute__((availability(ios,introduced=2_0))); +extern void +CFHostScheduleWithRunLoop(CFHostRef theHost, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern void +CFHostUnscheduleFromRunLoop(CFHostRef theHost, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); + + + +#pragma pack(pop) +#pragma clang assume_nonnull end + +} + + + +extern "C" { +#pragma clang assume_nonnull begin + +#pragma pack(push, 2) +typedef struct __CFNetService* CFNetServiceRef; +typedef struct __CFNetServiceMonitor* CFNetServiceMonitorRef; +typedef struct __CFNetServiceBrowser* CFNetServiceBrowserRef; +extern const SInt32 kCFStreamErrorDomainMach __attribute__((availability(ios,introduced=2_0))); +extern const SInt32 kCFStreamErrorDomainNetServices __attribute__((availability(ios,introduced=2_0))); +typedef int CFNetServicesError; enum { + + + + + kCFNetServicesErrorUnknown = -72000L, + + + + + + + kCFNetServicesErrorCollision = -72001L, + + + + + kCFNetServicesErrorNotFound = -72002L, + + + + + + kCFNetServicesErrorInProgress = -72003L, + + + + + kCFNetServicesErrorBadArgument = -72004L, + + + + + kCFNetServicesErrorCancel = -72005L, + + + + + + kCFNetServicesErrorInvalid = -72006L, + + + + + + kCFNetServicesErrorTimeout = -72007L +}; +typedef int CFNetServiceMonitorType; enum { + + + + + kCFNetServiceMonitorTXT = 1 +}; +typedef CFOptionFlags CFNetServiceRegisterFlags; enum { + + + + + kCFNetServiceFlagNoAutoRename = 1 +}; +typedef CFOptionFlags CFNetServiceBrowserFlags; enum { + + + + + kCFNetServiceFlagMoreComing = 1, + + + + + kCFNetServiceFlagIsDomain = 2, + + + + + kCFNetServiceFlagIsDefault = 4, + + + + + kCFNetServiceFlagIsRegistrationDomain __attribute__((availability(ios,introduced=2_0,deprecated=2_0,message="" ))) = 4, + + + + + kCFNetServiceFlagRemove = 8 +}; +struct CFNetServiceClientContext { + + + + + + + CFIndex version; + + + + + + void * _Nullable info; + CFAllocatorRetainCallBack _Nullable retain; + + + + + + CFAllocatorReleaseCallBack _Nullable release; + + + + + + + + CFAllocatorCopyDescriptionCallBack _Nullable copyDescription; +}; +typedef struct CFNetServiceClientContext CFNetServiceClientContext; +typedef void ( * CFNetServiceClientCallBack)(CFNetServiceRef theService, CFStreamError * _Nullable error, void * _Nullable info); +typedef void ( * CFNetServiceMonitorClientCallBack)(CFNetServiceMonitorRef theMonitor, CFNetServiceRef _Nullable theService, CFNetServiceMonitorType typeInfo, CFDataRef _Nullable rdata, CFStreamError * _Nullable error, void * _Nullable info); +typedef void ( * CFNetServiceBrowserClientCallBack)(CFNetServiceBrowserRef browser, CFOptionFlags flags, CFTypeRef _Nullable domainOrService, CFStreamError * _Nullable error, void * _Nullable info); +extern CFTypeID +CFNetServiceGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFTypeID +CFNetServiceMonitorGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFTypeID +CFNetServiceBrowserGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFNetServiceRef +CFNetServiceCreate(CFAllocatorRef _Nullable alloc, CFStringRef domain, CFStringRef serviceType, CFStringRef name, SInt32 port) __attribute__((availability(ios,introduced=2_0))); +extern CFNetServiceRef +CFNetServiceCreateCopy(CFAllocatorRef _Nullable alloc, CFNetServiceRef service) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFNetServiceGetDomain(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFNetServiceGetType(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFNetServiceGetName(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceRegisterWithOptions(CFNetServiceRef theService, CFOptionFlags options, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceResolveWithTimeout(CFNetServiceRef theService, CFTimeInterval timeout, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceCancel(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFStringRef +CFNetServiceGetTargetHost(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern SInt32 +CFNetServiceGetPortNumber(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFArrayRef +CFNetServiceGetAddressing(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDataRef +CFNetServiceGetTXTData(CFNetServiceRef theService) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceSetTXTData(CFNetServiceRef theService, CFDataRef txtRecord) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDictionaryRef +CFNetServiceCreateDictionaryWithTXTData(CFAllocatorRef _Nullable alloc, CFDataRef txtRecord) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDataRef +CFNetServiceCreateTXTDataWithDictionary(CFAllocatorRef _Nullable alloc, CFDictionaryRef keyValuePairs) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceSetClient(CFNetServiceRef theService, CFNetServiceClientCallBack _Nullable clientCB, CFNetServiceClientContext * _Nullable clientContext) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceScheduleWithRunLoop(CFNetServiceRef theService, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceUnscheduleFromRunLoop(CFNetServiceRef theService, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern CFNetServiceMonitorRef +CFNetServiceMonitorCreate( + CFAllocatorRef _Nullable alloc, + CFNetServiceRef theService, + CFNetServiceMonitorClientCallBack clientCB, + CFNetServiceClientContext * clientContext) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceMonitorInvalidate(CFNetServiceMonitorRef monitor) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceMonitorStart(CFNetServiceMonitorRef monitor, CFNetServiceMonitorType recordType, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceMonitorStop(CFNetServiceMonitorRef monitor, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceMonitorScheduleWithRunLoop(CFNetServiceMonitorRef monitor, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceMonitorUnscheduleFromRunLoop(CFNetServiceMonitorRef monitor, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern CFNetServiceBrowserRef +CFNetServiceBrowserCreate(CFAllocatorRef _Nullable alloc, CFNetServiceBrowserClientCallBack clientCB, CFNetServiceClientContext *clientContext) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceBrowserInvalidate(CFNetServiceBrowserRef browser) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceBrowserSearchForDomains(CFNetServiceBrowserRef browser, Boolean registrationDomains, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceBrowserSearchForServices(CFNetServiceBrowserRef browser, CFStringRef domain, CFStringRef serviceType, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceBrowserStopSearch(CFNetServiceBrowserRef browser, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceBrowserScheduleWithRunLoop(CFNetServiceBrowserRef browser, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern void +CFNetServiceBrowserUnscheduleFromRunLoop(CFNetServiceBrowserRef browser, CFRunLoopRef runLoop, CFStringRef runLoopMode) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFNetServiceRegister(CFNetServiceRef theService, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=NA,deprecated=NA,message="" ))); +extern Boolean +CFNetServiceResolve(CFNetServiceRef theService, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=NA,deprecated=NA,message="" ))); + + + + + +#pragma pack(pop) +#pragma clang assume_nonnull end + +} + + + + + + + + +extern "C" { +#pragma clang assume_nonnull begin +extern const CFStringRef kCFStreamPropertySSLContext __attribute__((availability(ios,introduced=5_0))); +extern const CFStringRef kCFStreamPropertySSLPeerTrust __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamSSLValidatesCertificateChain __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertySSLSettings __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamSSLLevel __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamSSLPeerName __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamSSLCertificates __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamSSLIsServer __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamNetworkServiceType __attribute__((availability(ios,introduced=4_0))); + + +extern const CFStringRef kCFStreamNetworkServiceTypeVideo __attribute__((availability(ios,introduced=5_0))); +extern const CFStringRef kCFStreamNetworkServiceTypeVoice __attribute__((availability(ios,introduced=5_0))); +extern const CFStringRef kCFStreamNetworkServiceTypeBackground __attribute__((availability(ios,introduced=5_0))); +extern const CFStringRef kCFStreamNetworkServiceTypeResponsiveData __attribute__((availability(ios,introduced=6.0))); +extern const CFStringRef kCFStreamNetworkServiceTypeCallSignaling __attribute__((availability(ios,introduced=10_0))); +extern const CFStringRef kCFStreamNetworkServiceTypeAVStreaming __attribute__((availability(ios,introduced=6.0))); +extern const CFStringRef kCFStreamNetworkServiceTypeResponsiveAV __attribute__((availability(ios,introduced=6.0))); + + +extern const CFStringRef kCFStreamNetworkServiceTypeVoIP __attribute__((availability(ios,introduced=4_0,deprecated=9_0,message="" "use PushKit for VoIP control purposes"))); +extern const CFStringRef kCFStreamPropertyNoCellular __attribute__((availability(ios,introduced=5_0))); +extern const CFStringRef kCFStreamPropertyConnectionIsCellular __attribute__((availability(ios,introduced=6_0))); +extern const CFStringRef kCFStreamPropertyAllowExpensiveNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +extern const CFStringRef kCFStreamPropertyConnectionIsExpensive __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +extern const CFStringRef kCFStreamPropertyAllowConstrainedNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +extern const CFIndex kCFStreamErrorDomainWinSock __attribute__((availability(ios,introduced=2_0))); + +static __inline__ __attribute__((always_inline)) +SInt32 CFSocketStreamSOCKSGetErrorSubdomain(const CFStreamError* error) { + return ((error->error >> 16) & 0x0000FFFF); +} + +static __inline__ __attribute__((always_inline)) +SInt32 CFSocketStreamSOCKSGetError(const CFStreamError* error) { + return (error->error & 0x0000FFFF); +} + +enum { + kCFStreamErrorSOCKSSubDomainNone = 0, + kCFStreamErrorSOCKSSubDomainVersionCode = 1, + kCFStreamErrorSOCKS4SubDomainResponse = 2, + kCFStreamErrorSOCKS5SubDomainUserPass = 3, + kCFStreamErrorSOCKS5SubDomainMethod = 4, + kCFStreamErrorSOCKS5SubDomainResponse = 5 +}; + + + +enum { + kCFStreamErrorSOCKS5BadResponseAddr = 1, + kCFStreamErrorSOCKS5BadState = 2, + kCFStreamErrorSOCKSUnknownClientVersion = 3 +}; + + +enum { + kCFStreamErrorSOCKS4RequestFailed = 91, + kCFStreamErrorSOCKS4IdentdFailed = 92, + kCFStreamErrorSOCKS4IdConflict = 93 +}; + + +enum { + kSOCKS5NoAcceptableMethod = 0xFF +}; +extern const CFStringRef kCFStreamPropertyProxyLocalBypass __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertySocketRemoteHost __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertySocketRemoteNetService __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertySocketExtendedBackgroundIdleMode __attribute__((availability(ios,introduced=9_0))); +extern void +CFStreamCreatePairWithSocketToCFHost( + CFAllocatorRef _Nullable alloc, + CFHostRef host, + SInt32 port, + CFReadStreamRef _Nullable * _Nullable readStream, + CFWriteStreamRef _Nullable * _Nullable writeStream) __attribute__((availability(ios,introduced=2_0))); +extern void +CFStreamCreatePairWithSocketToNetService( + CFAllocatorRef _Nullable alloc, + CFNetServiceRef service, + CFReadStreamRef _Nullable * _Nullable readStream, + CFWriteStreamRef _Nullable * _Nullable writeStream) __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertySSLPeerCertificates __attribute__((availability(ios,introduced=2_0,deprecated=4_0,message="" ))); +extern const CFStringRef kCFStreamSSLAllowsExpiredCertificates __attribute__((availability(ios,introduced=2_0,deprecated=4_0,message="" ))); +extern const CFStringRef kCFStreamSSLAllowsExpiredRoots __attribute__((availability(ios,introduced=2_0,deprecated=4_0,message="" ))); +extern const CFStringRef kCFStreamSSLAllowsAnyRoot __attribute__((availability(ios,introduced=2_0,deprecated=4_0,message="" ))); +#pragma clang assume_nonnull end + + + + + + +} + + + +extern "C" { +#pragma clang assume_nonnull begin + + + + + + + + +extern const SInt32 kCFStreamErrorDomainFTP __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFStreamPropertyFTPUserName __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPPassword __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPUsePassiveMode __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPResourceSize __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPFetchResourceInfo __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPFileTransferOffset __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPAttemptPersistentConnection __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPProxy __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPProxyHost __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFStreamPropertyFTPProxyPort __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); + + + + + +extern const CFStringRef kCFStreamPropertyFTPProxyUser __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); + + + + + +extern const CFStringRef kCFStreamPropertyFTPProxyPassword __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceMode __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceName __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceOwner __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceGroup __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceLink __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceSize __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceType __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern const CFStringRef kCFFTPResourceModDate __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern CFReadStreamRef +CFReadStreamCreateWithFTPURL(CFAllocatorRef _Nullable alloc, CFURLRef ftpURL) __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern CFIndex +CFFTPCreateParsedResourceListing(CFAllocatorRef _Nullable alloc, const UInt8 *buffer, CFIndex bufferLength, CFDictionaryRef _Nullable * _Nullable parsed) __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +extern CFWriteStreamRef +CFWriteStreamCreateWithFTPURL(CFAllocatorRef _Nullable alloc, CFURLRef ftpURL) __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSessionAPI for ftp requests"))); +#pragma clang assume_nonnull end + + +} + + + + + + + +extern "C" { +#pragma clang assume_nonnull begin + + + + + + + + +extern const CFStringRef kCFHTTPVersion1_0 __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPVersion1_1 __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPVersion2_0 __attribute__((availability(ios,introduced=8_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeBasic __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeDigest __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeNTLM __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeKerberos __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeNegotiate __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeNegotiate2 __attribute__((availability(ios,introduced=3_0))); +extern const CFStringRef kCFHTTPAuthenticationSchemeXMobileMeAuthToken __attribute__((availability(ios,introduced=4_3))); +typedef struct __CFHTTPMessage* CFHTTPMessageRef; +extern CFTypeID +CFHTTPMessageGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFHTTPMessageRef +CFHTTPMessageCreateRequest(CFAllocatorRef _Nullable alloc, CFStringRef requestMethod, CFURLRef url, CFStringRef httpVersion) __attribute__((availability(ios,introduced=2_0))); +extern CFHTTPMessageRef +CFHTTPMessageCreateResponse( + CFAllocatorRef _Nullable alloc, + CFIndex statusCode, + CFStringRef _Nullable statusDescription, + CFStringRef httpVersion) __attribute__((availability(ios,introduced=2_0))); +extern CFHTTPMessageRef +CFHTTPMessageCreateEmpty(CFAllocatorRef _Nullable alloc, Boolean isRequest) __attribute__((availability(ios,introduced=2_0))); +extern CFHTTPMessageRef +CFHTTPMessageCreateCopy(CFAllocatorRef _Nullable alloc, CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageIsRequest(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFHTTPMessageCopyVersion(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDataRef +CFHTTPMessageCopyBody(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern void +CFHTTPMessageSetBody(CFHTTPMessageRef message, CFDataRef bodyData) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFStringRef +CFHTTPMessageCopyHeaderFieldValue(CFHTTPMessageRef message, CFStringRef headerField) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDictionaryRef +CFHTTPMessageCopyAllHeaderFields(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern void +CFHTTPMessageSetHeaderFieldValue(CFHTTPMessageRef message, CFStringRef headerField, CFStringRef _Nullable value) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageAppendBytes(CFHTTPMessageRef message, const UInt8 *newBytes, CFIndex numBytes) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageIsHeaderComplete(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFDataRef +CFHTTPMessageCopySerializedMessage(CFHTTPMessageRef message) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFURLRef +CFHTTPMessageCopyRequestURL(CFHTTPMessageRef request) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFStringRef +CFHTTPMessageCopyRequestMethod(CFHTTPMessageRef request) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageAddAuthentication( + CFHTTPMessageRef request, + CFHTTPMessageRef _Nullable authenticationFailureResponse, + CFStringRef username, + CFStringRef password, + CFStringRef _Nullable authenticationScheme, + Boolean forProxy) __attribute__((availability(ios,introduced=2_0))); +extern CFIndex +CFHTTPMessageGetResponseStatusCode(CFHTTPMessageRef response) __attribute__((availability(ios,introduced=2_0))); +extern _Nullable CFStringRef +CFHTTPMessageCopyResponseStatusLine(CFHTTPMessageRef response) __attribute__((availability(ios,introduced=2_0))); +#pragma clang assume_nonnull end + + + +} + + + +extern "C" { +#pragma clang assume_nonnull begin +extern const SInt32 kCFStreamErrorDomainHTTP __attribute__((availability(ios,introduced=2_0))); + + + + + + + +typedef int CFStreamErrorHTTP; enum { + + + + + kCFStreamErrorHTTPParseFailure = -1, + + + + + kCFStreamErrorHTTPRedirectionLoop = -2, + + + + + kCFStreamErrorHTTPBadURL = -3 +}; +extern const CFStringRef kCFStreamPropertyHTTPResponseHeader __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPFinalURL __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPFinalRequest __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPProxy __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPProxyHost __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPProxyPort __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPSProxyHost __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPSProxyPort __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPShouldAutoredirect __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPAttemptPersistentConnection __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern const CFStringRef kCFStreamPropertyHTTPRequestBytesWrittenCount __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern CFReadStreamRef +CFReadStreamCreateForHTTPRequest(CFAllocatorRef _Nullable alloc, CFHTTPMessageRef request) __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +extern CFReadStreamRef +CFReadStreamCreateForStreamedHTTPRequest(CFAllocatorRef _Nullable alloc, CFHTTPMessageRef requestHeaders, CFReadStreamRef requestBody) __attribute__((availability(ios,introduced=2_0,deprecated=9_0,message="" "Use NSURLSession API for http requests"))); +#pragma clang assume_nonnull end + + + + + +} + + + +extern "C" { +#pragma clang assume_nonnull begin + + + + + + + + +typedef struct _CFHTTPAuthentication* CFHTTPAuthenticationRef; +typedef int CFStreamErrorHTTPAuthentication; enum { + + + + + + kCFStreamErrorHTTPAuthenticationTypeUnsupported = -1000, + + + + + + kCFStreamErrorHTTPAuthenticationBadUserName = -1001, + + + + + + kCFStreamErrorHTTPAuthenticationBadPassword = -1002 +}; +extern const CFStringRef kCFHTTPAuthenticationUsername __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationPassword __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFHTTPAuthenticationAccountDomain __attribute__((availability(ios,introduced=2_0))); +extern CFTypeID +CFHTTPAuthenticationGetTypeID(void) __attribute__((availability(ios,introduced=2_0))); +extern CFHTTPAuthenticationRef +CFHTTPAuthenticationCreateFromResponse(CFAllocatorRef _Nullable alloc, CFHTTPMessageRef response) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPAuthenticationIsValid(CFHTTPAuthenticationRef auth, CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPAuthenticationAppliesToRequest(CFHTTPAuthenticationRef auth, CFHTTPMessageRef request) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPAuthenticationRequiresOrderedRequests(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageApplyCredentials( + CFHTTPMessageRef request, + CFHTTPAuthenticationRef auth, + CFStringRef _Nullable username, + CFStringRef _Nullable password, + CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPMessageApplyCredentialDictionary( + CFHTTPMessageRef request, + CFHTTPAuthenticationRef auth, + CFDictionaryRef dict, + CFStreamError * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFHTTPAuthenticationCopyRealm(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +extern CFArrayRef +CFHTTPAuthenticationCopyDomains(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +extern CFStringRef +CFHTTPAuthenticationCopyMethod(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPAuthenticationRequiresUserNameAndPassword(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +extern Boolean +CFHTTPAuthenticationRequiresAccountDomain(CFHTTPAuthenticationRef auth) __attribute__((availability(ios,introduced=2_0))); +#pragma clang assume_nonnull end + + + +} + + + +extern "C" { +#pragma clang assume_nonnull begin + + + + + + + + +typedef struct __CFNetDiagnostic* CFNetDiagnosticRef; + + + + + + + +typedef int CFNetDiagnosticStatusValues; enum { + + + + + kCFNetDiagnosticNoErr = 0, + + + + + kCFNetDiagnosticErr = -66560L, + + + + + kCFNetDiagnosticConnectionUp = -66559L, + kCFNetDiagnosticConnectionIndeterminate = -66558L, + + + + + kCFNetDiagnosticConnectionDown = -66557L + +} __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +typedef CFIndex CFNetDiagnosticStatus __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +extern CFNetDiagnosticRef +CFNetDiagnosticCreateWithStreams(CFAllocatorRef _Nullable alloc, CFReadStreamRef _Nullable readStream, CFWriteStreamRef _Nullable writeStream) __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +extern CFNetDiagnosticRef +CFNetDiagnosticCreateWithURL(CFAllocatorRef alloc, CFURLRef url) __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +extern void +CFNetDiagnosticSetName(CFNetDiagnosticRef details, CFStringRef name) __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +extern CFNetDiagnosticStatus +CFNetDiagnosticDiagnoseProblemInteractively(CFNetDiagnosticRef details) __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +extern CFNetDiagnosticStatus +CFNetDiagnosticCopyNetworkStatusPassively(CFNetDiagnosticRef details, CFStringRef _Nullable * _Nullable description) __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" ))); +#pragma clang assume_nonnull end + + + +} + + + + + + + +extern "C" { +#pragma clang assume_nonnull begin +extern _Nullable CFDictionaryRef +CFNetworkCopySystemProxySettings(void) __attribute__((availability(ios,introduced=2_0))); +extern CFArrayRef +CFNetworkCopyProxiesForURL(CFURLRef url, CFDictionaryRef proxySettings) __attribute__((availability(ios,introduced=2_0))); +typedef void ( * CFProxyAutoConfigurationResultCallback)(void *client, CFArrayRef proxyList, CFErrorRef _Nullable error); +extern _Nullable CFArrayRef +CFNetworkCopyProxiesForAutoConfigurationScript(CFStringRef proxyAutoConfigurationScript, CFURLRef targetURL, CFErrorRef * _Nullable error) __attribute__((availability(ios,introduced=2_0))); +extern CFRunLoopSourceRef +CFNetworkExecuteProxyAutoConfigurationScript( + CFStringRef proxyAutoConfigurationScript, + CFURLRef targetURL, + CFProxyAutoConfigurationResultCallback cb, + CFStreamClientContext * clientContext) __attribute__((availability(ios,introduced=2_0))); +extern CFRunLoopSourceRef +CFNetworkExecuteProxyAutoConfigurationURL( + CFURLRef proxyAutoConfigURL, + CFURLRef targetURL, + CFProxyAutoConfigurationResultCallback cb, + CFStreamClientContext * clientContext) __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyTypeKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyHostNameKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyPortNumberKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyAutoConfigurationURLKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyAutoConfigurationJavaScriptKey __attribute__((availability(ios,introduced=3_0))); +extern const CFStringRef kCFProxyUsernameKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyPasswordKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFProxyTypeNone __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeHTTP __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeHTTPS __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeSOCKS __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeFTP __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeAutoConfigurationURL __attribute__((availability(ios,introduced=2_0))); + + + + + +extern const CFStringRef kCFProxyTypeAutoConfigurationJavaScript __attribute__((availability(ios,introduced=3_0))); + + + + + +extern const CFStringRef kCFProxyAutoConfigurationHTTPResponseKey __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesExceptionsList __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesExcludeSimpleHostnames __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesFTPEnable __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesFTPPassive __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesFTPPort __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesFTPProxy __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesGopherEnable __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesGopherPort __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesGopherProxy __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesHTTPEnable __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesHTTPPort __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesHTTPProxy __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesHTTPSEnable __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesHTTPSPort __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesHTTPSProxy __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesRTSPEnable __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesRTSPPort __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesRTSPProxy __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesSOCKSEnable __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesSOCKSPort __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesSOCKSProxy __attribute__((availability(ios,introduced=NA))); +extern const CFStringRef kCFNetworkProxiesProxyAutoConfigEnable __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesProxyAutoConfigURLString __attribute__((availability(ios,introduced=2_0))); +extern const CFStringRef kCFNetworkProxiesProxyAutoConfigJavaScript __attribute__((availability(ios,introduced=3_0))); +extern const CFStringRef kCFNetworkProxiesProxyAutoDiscoveryEnable __attribute__((availability(ios,introduced=NA))); +#pragma clang assume_nonnull end + + +} + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + + + +extern "C" NSErrorDomain const NSURLErrorDomain; + + + + + +extern "C" NSString * const NSURLErrorFailingURLErrorKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern "C" NSString * const NSURLErrorFailingURLStringErrorKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern "C" NSString * const NSErrorFailingURLStringKey __attribute__((availability(macos,introduced=10.0,deprecated=10.6,message="Use NSURLErrorFailingURLStringErrorKey instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=4.0,message="Use NSURLErrorFailingURLStringErrorKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSURLErrorFailingURLStringErrorKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSURLErrorFailingURLStringErrorKey instead"))); + + + + + +extern "C" NSString * const NSURLErrorFailingURLPeerTrustErrorKey __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern "C" NSString * const NSURLErrorBackgroundTaskCancelledReasonKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +enum +{ + NSURLErrorCancelledReasonUserForceQuitApplication = 0, + NSURLErrorCancelledReasonBackgroundUpdatesDisabled = 1, + NSURLErrorCancelledReasonInsufficientSystemResources __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 2, + +} __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" NSErrorUserInfoKey const NSURLErrorNetworkUnavailableReasonKey __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + + + +typedef NSInteger NSURLErrorNetworkUnavailableReason; enum +{ + NSURLErrorNetworkUnavailableReasonCellular = 0, + NSURLErrorNetworkUnavailableReasonExpensive = 1, + NSURLErrorNetworkUnavailableReasonConstrained = 2, +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +enum +{ + NSURLErrorUnknown = -1, + NSURLErrorCancelled = -999, + NSURLErrorBadURL = -1000, + NSURLErrorTimedOut = -1001, + NSURLErrorUnsupportedURL = -1002, + NSURLErrorCannotFindHost = -1003, + NSURLErrorCannotConnectToHost = -1004, + NSURLErrorNetworkConnectionLost = -1005, + NSURLErrorDNSLookupFailed = -1006, + NSURLErrorHTTPTooManyRedirects = -1007, + NSURLErrorResourceUnavailable = -1008, + NSURLErrorNotConnectedToInternet = -1009, + NSURLErrorRedirectToNonExistentLocation = -1010, + NSURLErrorBadServerResponse = -1011, + NSURLErrorUserCancelledAuthentication = -1012, + NSURLErrorUserAuthenticationRequired = -1013, + NSURLErrorZeroByteResource = -1014, + NSURLErrorCannotDecodeRawData = -1015, + NSURLErrorCannotDecodeContentData = -1016, + NSURLErrorCannotParseResponse = -1017, + NSURLErrorAppTransportSecurityRequiresSecureConnection __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1022, + NSURLErrorFileDoesNotExist = -1100, + NSURLErrorFileIsDirectory = -1101, + NSURLErrorNoPermissionsToReadFile = -1102, + NSURLErrorDataLengthExceedsMaximum __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1103, + NSURLErrorFileOutsideSafeArea __attribute__((availability(macos,introduced=10.12.4))) __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(watchos,introduced=3.2))) __attribute__((availability(tvos,introduced=10.2))) = -1104, + + + NSURLErrorSecureConnectionFailed = -1200, + NSURLErrorServerCertificateHasBadDate = -1201, + NSURLErrorServerCertificateUntrusted = -1202, + NSURLErrorServerCertificateHasUnknownRoot = -1203, + NSURLErrorServerCertificateNotYetValid = -1204, + NSURLErrorClientCertificateRejected = -1205, + NSURLErrorClientCertificateRequired = -1206, + NSURLErrorCannotLoadFromNetwork = -2000, + + + NSURLErrorCannotCreateFile = -3000, + NSURLErrorCannotOpenFile = -3001, + NSURLErrorCannotCloseFile = -3002, + NSURLErrorCannotWriteToFile = -3003, + NSURLErrorCannotRemoveFile = -3004, + NSURLErrorCannotMoveFile = -3005, + NSURLErrorDownloadDecodingFailedMidStream = -3006, + NSURLErrorDownloadDecodingFailedToComplete =-3007, + + NSURLErrorInternationalRoamingOff __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1018, + NSURLErrorCallIsActive __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1019, + NSURLErrorDataNotAllowed __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1020, + NSURLErrorRequestBodyStreamExhausted __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -1021, + + NSURLErrorBackgroundSessionRequiresSharedContainer __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -995, + NSURLErrorBackgroundSessionInUseByAnotherProcess __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = -996, + NSURLErrorBackgroundSessionWasDisconnected __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0)))= -997, +}; +#pragma clang assume_nonnull end + +// @class NSCachedURLResponse; +#ifndef _REWRITER_typedef_NSCachedURLResponse +#define _REWRITER_typedef_NSCachedURLResponse +typedef struct objc_object NSCachedURLResponse; +typedef struct {} _objc_exc_NSCachedURLResponse; +#endif + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @class NSMutableURLRequest; +#ifndef _REWRITER_typedef_NSMutableURLRequest +#define _REWRITER_typedef_NSMutableURLRequest +typedef struct objc_object NSMutableURLRequest; +typedef struct {} _objc_exc_NSMutableURLRequest; +#endif + +// @class NSURLAuthenticationChallenge; +#ifndef _REWRITER_typedef_NSURLAuthenticationChallenge +#define _REWRITER_typedef_NSURLAuthenticationChallenge +typedef struct objc_object NSURLAuthenticationChallenge; +typedef struct {} _objc_exc_NSURLAuthenticationChallenge; +#endif + +// @class NSURLConnection; +#ifndef _REWRITER_typedef_NSURLConnection +#define _REWRITER_typedef_NSURLConnection +typedef struct objc_object NSURLConnection; +typedef struct {} _objc_exc_NSURLConnection; +#endif + +// @class NSURLProtocol; +#ifndef _REWRITER_typedef_NSURLProtocol +#define _REWRITER_typedef_NSURLProtocol +typedef struct objc_object NSURLProtocol; +typedef struct {} _objc_exc_NSURLProtocol; +#endif + +// @class NSURLProtocolInternal; +#ifndef _REWRITER_typedef_NSURLProtocolInternal +#define _REWRITER_typedef_NSURLProtocolInternal +typedef struct objc_object NSURLProtocolInternal; +typedef struct {} _objc_exc_NSURLProtocolInternal; +#endif + +// @class NSURLRequest; +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +// @class NSURLResponse; +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +// @class NSURLSessionTask; +#ifndef _REWRITER_typedef_NSURLSessionTask +#define _REWRITER_typedef_NSURLSessionTask +typedef struct objc_object NSURLSessionTask; +typedef struct {} _objc_exc_NSURLSessionTask; +#endif + + +#pragma clang assume_nonnull begin +// @protocol NSURLProtocolClient +// - (void)URLProtocol:(NSURLProtocol *)protocol wasRedirectedToRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse; +// - (void)URLProtocol:(NSURLProtocol *)protocol cachedResponseIsValid:(NSCachedURLResponse *)cachedResponse; +// - (void)URLProtocol:(NSURLProtocol *)protocol didReceiveResponse:(NSURLResponse *)response cacheStoragePolicy:(NSURLCacheStoragePolicy)policy; +// - (void)URLProtocol:(NSURLProtocol *)protocol didLoadData:(NSData *)data; + + + + + + + +// - (void)URLProtocolDidFinishLoading:(NSURLProtocol *)protocol; +// - (void)URLProtocol:(NSURLProtocol *)protocol didFailWithError:(NSError *)error; +// - (void)URLProtocol:(NSURLProtocol *)protocol didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + + + + + + + +// - (void)URLProtocol:(NSURLProtocol *)protocol didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge; + +/* @end */ + + +#ifndef _REWRITER_typedef_NSURLProtocol +#define _REWRITER_typedef_NSURLProtocol +typedef struct objc_object NSURLProtocol; +typedef struct {} _objc_exc_NSURLProtocol; +#endif + +struct NSURLProtocol_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLProtocolInternal *_internal; +}; + +// - (instancetype)initWithRequest:(NSURLRequest *)request cachedResponse:(nullable NSCachedURLResponse *)cachedResponse client:(nullable id )client __attribute__((objc_designated_initializer)); + + + + + +// @property (nullable, readonly, retain) id client; + + + + + +// @property (readonly, copy) NSURLRequest *request; + + + + + +// @property (nullable, readonly, copy) NSCachedURLResponse *cachedResponse; +// + (BOOL)canInitWithRequest:(NSURLRequest *)request; +// + (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request; +// + (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b; + + + + + + + +// - (void)startLoading; +// - (void)stopLoading; +// + (nullable id)propertyForKey:(NSString *)key inRequest:(NSURLRequest *)request; +// + (void)setProperty:(id)value forKey:(NSString *)key inRequest:(NSMutableURLRequest *)request; +// + (void)removePropertyForKey:(NSString *)key inRequest:(NSMutableURLRequest *)request; +// + (BOOL)registerClass:(Class)protocolClass; +// + (void)unregisterClass:(Class)protocolClass; + +/* @end */ + + + +// @interface NSURLProtocol (NSURLSessionTaskAdditions) +// + (BOOL)canInitWithTask:(NSURLSessionTask *)task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (instancetype)initWithTask:(NSURLSessionTask *)task cachedResponse:(nullable NSCachedURLResponse *)cachedResponse client:(nullable id )client __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, readonly, copy) NSURLSessionTask *task __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + +#pragma clang assume_nonnull end +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSInputStream; +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSURLRequestInternal; +#ifndef _REWRITER_typedef_NSURLRequestInternal +#define _REWRITER_typedef_NSURLRequestInternal +typedef struct objc_object NSURLRequestInternal; +typedef struct {} _objc_exc_NSURLRequestInternal; +#endif + + +#pragma clang assume_nonnull begin +typedef NSUInteger NSURLRequestCachePolicy; enum +{ + NSURLRequestUseProtocolCachePolicy = 0, + + NSURLRequestReloadIgnoringLocalCacheData = 1, + NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, + NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, + + NSURLRequestReturnCacheDataElseLoad = 2, + NSURLRequestReturnCacheDataDontLoad = 3, + + NSURLRequestReloadRevalidatingCacheData = 5, +}; +typedef NSUInteger NSURLRequestNetworkServiceType; enum +{ + NSURLNetworkServiceTypeDefault = 0, + NSURLNetworkServiceTypeVoIP __attribute__((availability(macos,introduced=10.7,deprecated=10.15,message="Use PushKit for VoIP control purposes"))) __attribute__((availability(ios,introduced=4.0,deprecated=13.0,message="Use PushKit for VoIP control purposes"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Use PushKit for VoIP control purposes"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Use PushKit for VoIP control purposes"))) = 1, + NSURLNetworkServiceTypeVideo = 2, + NSURLNetworkServiceTypeBackground = 3, + NSURLNetworkServiceTypeVoice = 4, + NSURLNetworkServiceTypeResponsiveData = 6, + NSURLNetworkServiceTypeAVStreaming __attribute__((availability(macosx,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 8 , + NSURLNetworkServiceTypeResponsiveAV __attribute__((availability(macosx,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 9, + NSURLNetworkServiceTypeCallSignaling __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) = 11, +}; + +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +struct NSURLRequest_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLRequestInternal *_internal; +}; + +// + (instancetype)requestWithURL:(NSURL *)URL; + + + + + + +@property (class, readonly) BOOL supportsSecureCoding; +// + (instancetype)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval; +// - (instancetype)initWithURL:(NSURL *)URL; +// - (instancetype)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval __attribute__((objc_designated_initializer)); + + + + + +// @property (nullable, readonly, copy) NSURL *URL; + + + + + +// @property (readonly) NSURLRequestCachePolicy cachePolicy; +// @property (readonly) NSTimeInterval timeoutInterval; +// @property (nullable, readonly, copy) NSURL *mainDocumentURL; + + + + + + + +// @property (readonly) NSURLRequestNetworkServiceType networkServiceType __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// @property (readonly) BOOL allowsCellularAccess __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// @property (readonly) BOOL allowsExpensiveNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + + + +// @property (readonly) BOOL allowsConstrainedNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + +#ifndef _REWRITER_typedef_NSMutableURLRequest +#define _REWRITER_typedef_NSMutableURLRequest +typedef struct objc_object NSMutableURLRequest; +typedef struct {} _objc_exc_NSMutableURLRequest; +#endif + +struct NSMutableURLRequest_IMPL { + struct NSURLRequest_IMPL NSURLRequest_IVARS; +}; + + + + + +// @property (nullable, copy) NSURL *URL; + + + + +// @property NSURLRequestCachePolicy cachePolicy; +// @property NSTimeInterval timeoutInterval; +// @property (nullable, copy) NSURL *mainDocumentURL; + + + + + + +// @property NSURLRequestNetworkServiceType networkServiceType __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// @property BOOL allowsCellularAccess __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// @property BOOL allowsExpensiveNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + + + +// @property BOOL allowsConstrainedNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +// @interface NSURLRequest (NSHTTPURLRequest) + + + + + +// @property (nullable, readonly, copy) NSString *HTTPMethod; + + + + + + + +// @property (nullable, readonly, copy) NSDictionary *allHTTPHeaderFields; +// - (nullable NSString *)valueForHTTPHeaderField:(NSString *)field; + + + + + + + +// @property (nullable, readonly, copy) NSData *HTTPBody; +// @property (nullable, readonly, retain) NSInputStream *HTTPBodyStream; +// @property (readonly) BOOL HTTPShouldHandleCookies; +// @property (readonly) BOOL HTTPShouldUsePipelining __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +// @interface NSMutableURLRequest (NSMutableHTTPURLRequest) + + + + +// @property (copy) NSString *HTTPMethod; +// @property (nullable, copy) NSDictionary *allHTTPHeaderFields; +// - (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field; +// - (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field; + + + + + + +// @property (nullable, copy) NSData *HTTPBody; +// @property (nullable, retain) NSInputStream *HTTPBodyStream; +// @property BOOL HTTPShouldHandleCookies; +// @property BOOL HTTPShouldUsePipelining __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSURLRequest; +#ifndef _REWRITER_typedef_NSURLRequest +#define _REWRITER_typedef_NSURLRequest +typedef struct objc_object NSURLRequest; +typedef struct {} _objc_exc_NSURLRequest; +#endif + +// @class NSURLResponseInternal; +#ifndef _REWRITER_typedef_NSURLResponseInternal +#define _REWRITER_typedef_NSURLResponseInternal +typedef struct objc_object NSURLResponseInternal; +typedef struct {} _objc_exc_NSURLResponseInternal; +#endif + + +#pragma clang assume_nonnull begin + +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +struct NSURLResponse_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURLResponseInternal *_internal; +}; + +// - (instancetype)initWithURL:(NSURL *)URL MIMEType:(nullable NSString *)MIMEType expectedContentLength:(NSInteger)length textEncodingName:(nullable NSString *)name __attribute__((objc_designated_initializer)); + + + + + +// @property (nullable, readonly, copy) NSURL *URL; +// @property (nullable, readonly, copy) NSString *MIMEType; +// @property (readonly) long long expectedContentLength; +// @property (nullable, readonly, copy) NSString *textEncodingName; +// @property (nullable, readonly, copy) NSString *suggestedFilename; + +/* @end */ + + + + +// @class NSHTTPURLResponseInternal; +#ifndef _REWRITER_typedef_NSHTTPURLResponseInternal +#define _REWRITER_typedef_NSHTTPURLResponseInternal +typedef struct objc_object NSHTTPURLResponseInternal; +typedef struct {} _objc_exc_NSHTTPURLResponseInternal; +#endif + + +#ifndef _REWRITER_typedef_NSHTTPURLResponse +#define _REWRITER_typedef_NSHTTPURLResponse +typedef struct objc_object NSHTTPURLResponse; +typedef struct {} _objc_exc_NSHTTPURLResponse; +#endif + +struct NSHTTPURLResponse_IMPL { + struct NSURLResponse_IMPL NSURLResponse_IVARS; + NSHTTPURLResponseInternal *_httpInternal; +}; + +// - (nullable instancetype)initWithURL:(NSURL *)url statusCode:(NSInteger)statusCode HTTPVersion:(nullable NSString *)HTTPVersion headerFields:(nullable NSDictionary *)headerFields __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (readonly) NSInteger statusCode; +// @property (readonly, copy) NSDictionary *allHeaderFields; +// - (nullable NSString *)valueForHTTPHeaderField:(NSString *)field __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// + (NSString *)localizedStringForStatusCode:(NSInteger)statusCode; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + +#pragma clang assume_nonnull begin + + +extern "C" NSString * const NSGlobalDomain; + +extern "C" NSString * const NSArgumentDomain; + +extern "C" NSString * const NSRegistrationDomain; + +#ifndef _REWRITER_typedef_NSUserDefaults +#define _REWRITER_typedef_NSUserDefaults +typedef struct objc_object NSUserDefaults; +typedef struct {} _objc_exc_NSUserDefaults; +#endif + +struct NSUserDefaults_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _kvo_; + CFStringRef _identifier_; + CFStringRef _container_; + void *_reserved[2]; +}; + + + + + +@property (class, readonly, strong) NSUserDefaults *standardUserDefaults; + + +// + (void)resetStandardUserDefaults; + + +// - (instancetype)init; + + +// - (nullable instancetype)initWithSuiteName:(nullable NSString *)suitename __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((objc_designated_initializer)); + + +// - (nullable id)initWithUser:(NSString *)username __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Use -init instead"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Use -init instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use -init instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use -init instead"))); + + + + +// - (nullable id)objectForKey:(NSString *)defaultName; + + + + +// - (void)setObject:(nullable id)value forKey:(NSString *)defaultName; + + +// - (void)removeObjectForKey:(NSString *)defaultName; + + +// - (nullable NSString *)stringForKey:(NSString *)defaultName; + + +// - (nullable NSArray *)arrayForKey:(NSString *)defaultName; + +// - (nullable NSDictionary *)dictionaryForKey:(NSString *)defaultName; + +// - (nullable NSData *)dataForKey:(NSString *)defaultName; + +// - (nullable NSArray *)stringArrayForKey:(NSString *)defaultName; + + + +// - (NSInteger)integerForKey:(NSString *)defaultName; + +// - (float)floatForKey:(NSString *)defaultName; + +// - (double)doubleForKey:(NSString *)defaultName; + + + + +// - (BOOL)boolForKey:(NSString *)defaultName; + + + +// - (nullable NSURL *)URLForKey:(NSString *)defaultName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName; + +// - (void)setFloat:(float)value forKey:(NSString *)defaultName; + +// - (void)setDouble:(double)value forKey:(NSString *)defaultName; + +// - (void)setBool:(BOOL)value forKey:(NSString *)defaultName; + +// - (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)registerDefaults:(NSDictionary *)registrationDictionary; + + + + +// - (void)addSuiteNamed:(NSString *)suiteName; + + + +// - (void)removeSuiteNamed:(NSString *)suiteName; + + + + +// - (NSDictionary *)dictionaryRepresentation; + + + + +// @property (readonly, copy) NSArray *volatileDomainNames; +// - (NSDictionary *)volatileDomainForName:(NSString *)domainName; +// - (void)setVolatileDomain:(NSDictionary *)domain forName:(NSString *)domainName; +// - (void)removeVolatileDomainForName:(NSString *)domainName; + + +// - (NSArray *)persistentDomainNames __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="Not recommended"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="Not recommended"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not recommended"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not recommended"))); + + +// - (nullable NSDictionary *)persistentDomainForName:(NSString *)domainName; + +// - (void)setPersistentDomain:(NSDictionary *)domain forName:(NSString *)domainName; + +// - (void)removePersistentDomainForName:(NSString *)domainName; +// - (BOOL)synchronize; + + +// - (BOOL)objectIsForcedForKey:(NSString *)key; + + +// - (BOOL)objectIsForcedForKey:(NSString *)key inDomain:(NSString *)domain; + +/* @end */ + + + + + +extern "C" NSNotificationName const NSUserDefaultsSizeLimitExceededNotification __attribute__((availability(ios,introduced=9.3))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + + + +extern "C" NSNotificationName const NSUbiquitousUserDefaultsNoCloudAccountNotification __attribute__((availability(ios,introduced=9.3))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + +extern "C" NSNotificationName const NSUbiquitousUserDefaultsDidChangeAccountsNotification __attribute__((availability(ios,introduced=9.3))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + +extern "C" NSNotificationName const NSUbiquitousUserDefaultsCompletedInitialSyncNotification __attribute__((availability(ios,introduced=9.3))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + + + +extern "C" NSNotificationName const NSUserDefaultsDidChangeNotification; +#pragma clang assume_nonnull end + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSString *NSValueTransformerName __attribute__((swift_wrapper(struct))); + +extern "C" NSValueTransformerName const NSNegateBooleanTransformerName __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSValueTransformerName const NSIsNilTransformerName __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSValueTransformerName const NSIsNotNilTransformerName __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSValueTransformerName const NSUnarchiveFromDataTransformerName __attribute__((availability(macos,introduced=10.3,deprecated=10.14,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(ios,introduced=3.0,deprecated=12.0,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,replacement="NSSecureUnarchiveFromDataTransformerName"))); +extern "C" NSValueTransformerName const NSKeyedUnarchiveFromDataTransformerName __attribute__((availability(macos,introduced=10.3,deprecated=10.14,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(ios,introduced=3.0,deprecated=12.0,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,replacement="NSSecureUnarchiveFromDataTransformerName"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,replacement="NSSecureUnarchiveFromDataTransformerName"))); +extern "C" NSValueTransformerName const NSSecureUnarchiveFromDataTransformerName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))); + +__attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSValueTransformer +#define _REWRITER_typedef_NSValueTransformer +typedef struct objc_object NSValueTransformer; +typedef struct {} _objc_exc_NSValueTransformer; +#endif + +struct NSValueTransformer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// + (void)setValueTransformer:(nullable NSValueTransformer *)transformer forName:(NSValueTransformerName)name; +// + (nullable NSValueTransformer *)valueTransformerForName:(NSValueTransformerName)name; +// + (NSArray *)valueTransformerNames; + + +// + (Class)transformedValueClass; +// + (BOOL)allowsReverseTransformation; + +// - (nullable id)transformedValue:(nullable id)value; +// - (nullable id)reverseTransformedValue:(nullable id)value; + +/* @end */ + + + +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))) + +#ifndef _REWRITER_typedef_NSSecureUnarchiveFromDataTransformer +#define _REWRITER_typedef_NSSecureUnarchiveFromDataTransformer +typedef struct objc_object NSSecureUnarchiveFromDataTransformer; +typedef struct {} _objc_exc_NSSecureUnarchiveFromDataTransformer; +#endif + +struct NSSecureUnarchiveFromDataTransformer_IMPL { + struct NSValueTransformer_IMPL NSValueTransformer_IVARS; +}; + + + + + + + +@property (class, readonly, copy) NSArray *allowedTopLevelClasses; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +// @protocol NSXMLParserDelegate; + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +typedef NSUInteger NSXMLParserExternalEntityResolvingPolicy; enum { + NSXMLParserResolveExternalEntitiesNever = 0, + NSXMLParserResolveExternalEntitiesNoNetwork, + NSXMLParserResolveExternalEntitiesSameOriginOnly, + NSXMLParserResolveExternalEntitiesAlways +}; + + +#ifndef _REWRITER_typedef_NSXMLParser +#define _REWRITER_typedef_NSXMLParser +typedef struct objc_object NSXMLParser; +typedef struct {} _objc_exc_NSXMLParser; +#endif + +struct NSXMLParser_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _reserved0; + id _delegate; + id _reserved1; + id _reserved2; + id _reserved3; +}; + +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url; +// - (instancetype)initWithData:(NSData *)data __attribute__((objc_designated_initializer)); +// - (instancetype)initWithStream:(NSInputStream *)stream __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (nullable, assign) id delegate; + +// @property BOOL shouldProcessNamespaces; +// @property BOOL shouldReportNamespacePrefixes; + + +// @property NSXMLParserExternalEntityResolvingPolicy externalEntityResolvingPolicy __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (nullable, copy) NSSet *allowedExternalEntityURLs __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (BOOL)parse; +// - (void)abortParsing; + +// @property (nullable, readonly, copy) NSError *parserError; + + + +// @property BOOL shouldResolveExternalEntities; + +/* @end */ + + + +// @interface NSXMLParser (NSXMLParserLocatorAdditions) +// @property (nullable, readonly, copy) NSString *publicID; +// @property (nullable, readonly, copy) NSString *systemID; +// @property (readonly) NSInteger lineNumber; +// @property (readonly) NSInteger columnNumber; + +/* @end */ + +// @protocol NSXMLParserDelegate +/* @optional */ + + +// - (void)parserDidStartDocument:(NSXMLParser *)parser; + +// - (void)parserDidEndDocument:(NSXMLParser *)parser; + + + +// - (void)parser:(NSXMLParser *)parser foundNotationDeclarationWithName:(NSString *)name publicID:(nullable NSString *)publicID systemID:(nullable NSString *)systemID; + +// - (void)parser:(NSXMLParser *)parser foundUnparsedEntityDeclarationWithName:(NSString *)name publicID:(nullable NSString *)publicID systemID:(nullable NSString *)systemID notationName:(nullable NSString *)notationName; + +// - (void)parser:(NSXMLParser *)parser foundAttributeDeclarationWithName:(NSString *)attributeName forElement:(NSString *)elementName type:(nullable NSString *)type defaultValue:(nullable NSString *)defaultValue; + +// - (void)parser:(NSXMLParser *)parser foundElementDeclarationWithName:(NSString *)elementName model:(NSString *)model; + +// - (void)parser:(NSXMLParser *)parser foundInternalEntityDeclarationWithName:(NSString *)name value:(nullable NSString *)value; + +// - (void)parser:(NSXMLParser *)parser foundExternalEntityDeclarationWithName:(NSString *)name publicID:(nullable NSString *)publicID systemID:(nullable NSString *)systemID; + +// - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary *)attributeDict; + + + + + + + +// - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName; + + +// - (void)parser:(NSXMLParser *)parser didStartMappingPrefix:(NSString *)prefix toURI:(NSString *)namespaceURI; + + + + +// - (void)parser:(NSXMLParser *)parser didEndMappingPrefix:(NSString *)prefix; + + +// - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; + + +// - (void)parser:(NSXMLParser *)parser foundIgnorableWhitespace:(NSString *)whitespaceString; + + +// - (void)parser:(NSXMLParser *)parser foundProcessingInstructionWithTarget:(NSString *)target data:(nullable NSString *)data; + + +// - (void)parser:(NSXMLParser *)parser foundComment:(NSString *)comment; + + +// - (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock; + + +// - (nullable NSData *)parser:(NSXMLParser *)parser resolveExternalEntityName:(NSString *)name systemID:(nullable NSString *)systemID; + + +// - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError; + + +// - (void)parser:(NSXMLParser *)parser validationErrorOccurred:(NSError *)validationError; + +/* @end */ + + +extern "C" NSErrorDomain const NSXMLParserErrorDomain __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSInteger NSXMLParserError; enum { + NSXMLParserInternalError = 1, + NSXMLParserOutOfMemoryError = 2, + NSXMLParserDocumentStartError = 3, + NSXMLParserEmptyDocumentError = 4, + NSXMLParserPrematureDocumentEndError = 5, + NSXMLParserInvalidHexCharacterRefError = 6, + NSXMLParserInvalidDecimalCharacterRefError = 7, + NSXMLParserInvalidCharacterRefError = 8, + NSXMLParserInvalidCharacterError = 9, + NSXMLParserCharacterRefAtEOFError = 10, + NSXMLParserCharacterRefInPrologError = 11, + NSXMLParserCharacterRefInEpilogError = 12, + NSXMLParserCharacterRefInDTDError = 13, + NSXMLParserEntityRefAtEOFError = 14, + NSXMLParserEntityRefInPrologError = 15, + NSXMLParserEntityRefInEpilogError = 16, + NSXMLParserEntityRefInDTDError = 17, + NSXMLParserParsedEntityRefAtEOFError = 18, + NSXMLParserParsedEntityRefInPrologError = 19, + NSXMLParserParsedEntityRefInEpilogError = 20, + NSXMLParserParsedEntityRefInInternalSubsetError = 21, + NSXMLParserEntityReferenceWithoutNameError = 22, + NSXMLParserEntityReferenceMissingSemiError = 23, + NSXMLParserParsedEntityRefNoNameError = 24, + NSXMLParserParsedEntityRefMissingSemiError = 25, + NSXMLParserUndeclaredEntityError = 26, + NSXMLParserUnparsedEntityError = 28, + NSXMLParserEntityIsExternalError = 29, + NSXMLParserEntityIsParameterError = 30, + NSXMLParserUnknownEncodingError = 31, + NSXMLParserEncodingNotSupportedError = 32, + NSXMLParserStringNotStartedError = 33, + NSXMLParserStringNotClosedError = 34, + NSXMLParserNamespaceDeclarationError = 35, + NSXMLParserEntityNotStartedError = 36, + NSXMLParserEntityNotFinishedError = 37, + NSXMLParserLessThanSymbolInAttributeError = 38, + NSXMLParserAttributeNotStartedError = 39, + NSXMLParserAttributeNotFinishedError = 40, + NSXMLParserAttributeHasNoValueError = 41, + NSXMLParserAttributeRedefinedError = 42, + NSXMLParserLiteralNotStartedError = 43, + NSXMLParserLiteralNotFinishedError = 44, + NSXMLParserCommentNotFinishedError = 45, + NSXMLParserProcessingInstructionNotStartedError = 46, + NSXMLParserProcessingInstructionNotFinishedError = 47, + NSXMLParserNotationNotStartedError = 48, + NSXMLParserNotationNotFinishedError = 49, + NSXMLParserAttributeListNotStartedError = 50, + NSXMLParserAttributeListNotFinishedError = 51, + NSXMLParserMixedContentDeclNotStartedError = 52, + NSXMLParserMixedContentDeclNotFinishedError = 53, + NSXMLParserElementContentDeclNotStartedError = 54, + NSXMLParserElementContentDeclNotFinishedError = 55, + NSXMLParserXMLDeclNotStartedError = 56, + NSXMLParserXMLDeclNotFinishedError = 57, + NSXMLParserConditionalSectionNotStartedError = 58, + NSXMLParserConditionalSectionNotFinishedError = 59, + NSXMLParserExternalSubsetNotFinishedError = 60, + NSXMLParserDOCTYPEDeclNotFinishedError = 61, + NSXMLParserMisplacedCDATAEndStringError = 62, + NSXMLParserCDATANotFinishedError = 63, + NSXMLParserMisplacedXMLDeclarationError = 64, + NSXMLParserSpaceRequiredError = 65, + NSXMLParserSeparatorRequiredError = 66, + NSXMLParserNMTOKENRequiredError = 67, + NSXMLParserNAMERequiredError = 68, + NSXMLParserPCDATARequiredError = 69, + NSXMLParserURIRequiredError = 70, + NSXMLParserPublicIdentifierRequiredError = 71, + NSXMLParserLTRequiredError = 72, + NSXMLParserGTRequiredError = 73, + NSXMLParserLTSlashRequiredError = 74, + NSXMLParserEqualExpectedError = 75, + NSXMLParserTagNameMismatchError = 76, + NSXMLParserUnfinishedTagError = 77, + NSXMLParserStandaloneValueError = 78, + NSXMLParserInvalidEncodingNameError = 79, + NSXMLParserCommentContainsDoubleHyphenError = 80, + NSXMLParserInvalidEncodingError = 81, + NSXMLParserExternalStandaloneEntityError = 82, + NSXMLParserInvalidConditionalSectionError = 83, + NSXMLParserEntityValueRequiredError = 84, + NSXMLParserNotWellBalancedError = 85, + NSXMLParserExtraContentError = 86, + NSXMLParserInvalidCharacterInEntityError = 87, + NSXMLParserParsedEntityRefInInternalError = 88, + NSXMLParserEntityRefLoopError = 89, + NSXMLParserEntityBoundaryError = 90, + NSXMLParserInvalidURIError = 91, + NSXMLParserURIFragmentError = 92, + NSXMLParserNoDTDError = 94, + NSXMLParserDelegateAbortedParseError = 512 +}; +#pragma clang assume_nonnull end + + + + + +extern "C" { + +typedef uid_t au_id_t; +typedef pid_t au_asid_t; +typedef u_int16_t au_event_t; +typedef u_int16_t au_emod_t; +typedef u_int32_t au_class_t; +typedef u_int64_t au_asflgs_t __attribute__ ((aligned(8))); +typedef unsigned char au_ctlmode_t; + +struct au_tid { + dev_t port; + u_int32_t machine; +}; +typedef struct au_tid au_tid_t; + +struct au_tid_addr { + dev_t at_port; + u_int32_t at_type; + u_int32_t at_addr[4]; +}; +typedef struct au_tid_addr au_tid_addr_t; + +struct au_mask { + unsigned int am_success; + unsigned int am_failure; +}; +typedef struct au_mask au_mask_t; + +struct auditinfo { + au_id_t ai_auid; + au_mask_t ai_mask; + au_tid_t ai_termid; + au_asid_t ai_asid; +}; +typedef struct auditinfo auditinfo_t; + +struct auditinfo_addr { + au_id_t ai_auid; + au_mask_t ai_mask; + au_tid_addr_t ai_termid; + au_asid_t ai_asid; + au_asflgs_t ai_flags; +}; +typedef struct auditinfo_addr auditinfo_addr_t; + +struct auditpinfo { + pid_t ap_pid; + au_id_t ap_auid; + au_mask_t ap_mask; + au_tid_t ap_termid; + au_asid_t ap_asid; +}; +typedef struct auditpinfo auditpinfo_t; + +struct auditpinfo_addr { + pid_t ap_pid; + au_id_t ap_auid; + au_mask_t ap_mask; + au_tid_addr_t ap_termid; + au_asid_t ap_asid; + au_asflgs_t ap_flags; +}; +typedef struct auditpinfo_addr auditpinfo_addr_t; + +struct au_session { + auditinfo_addr_t *as_aia_p; + au_mask_t as_mask; +}; +typedef struct au_session au_session_t; + +struct au_expire_after { + time_t age; + size_t size; + unsigned char op_type; +}; +typedef struct au_expire_after au_expire_after_t; + + + + +typedef struct au_token token_t; +struct au_qctrl { + int aq_hiwater; + + + int aq_lowater; + + + int aq_bufsz; + int aq_delay; + int aq_minfree; +}; +typedef struct au_qctrl au_qctrl_t; + + + + +struct audit_stat { + unsigned int as_version; + unsigned int as_numevent; + int as_generated; + int as_nonattrib; + int as_kernel; + int as_audit; + int as_auditctl; + int as_enqueue; + int as_written; + int as_wblocked; + int as_rblocked; + int as_dropped; + int as_totalsize; + unsigned int as_memused; +}; +typedef struct audit_stat au_stat_t; + + + + +struct audit_fstat { + u_int64_t af_filesz; + u_int64_t af_currsz; +}; +typedef struct audit_fstat au_fstat_t; + + + + +struct au_evclass_map { + au_event_t ec_number; + au_class_t ec_class; +}; +typedef struct au_evclass_map au_evclass_map_t; + + + + + +int audit(const void *, int); +int auditon(int, void *, int); +int auditctl(const char *); +int getauid(au_id_t *); +int setauid(const au_id_t *); +int getaudit_addr(struct auditinfo_addr *, int); +int setaudit_addr(const struct auditinfo_addr *, int); +int getaudit(struct auditinfo *) +__attribute__((availability(ios,introduced=2.0,deprecated=6.0))); + +int setaudit(const struct auditinfo *) +__attribute__((availability(ios,introduced=2.0,deprecated=6.0))); +mach_port_name_t audit_session_self(void); +au_asid_t audit_session_join(mach_port_name_t port); +int audit_session_port(au_asid_t asid, mach_port_name_t *portname); + + + + +} +// @class NSMutableDictionary; +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_NSLock +#define _REWRITER_typedef_NSLock +typedef struct objc_object NSLock; +typedef struct {} _objc_exc_NSLock; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @class NSXPCConnection; +#ifndef _REWRITER_typedef_NSXPCConnection +#define _REWRITER_typedef_NSXPCConnection +typedef struct objc_object NSXPCConnection; +typedef struct {} _objc_exc_NSXPCConnection; +#endif + +#ifndef _REWRITER_typedef_NSXPCListener +#define _REWRITER_typedef_NSXPCListener +typedef struct objc_object NSXPCListener; +typedef struct {} _objc_exc_NSXPCListener; +#endif + +#ifndef _REWRITER_typedef_NSXPCInterface +#define _REWRITER_typedef_NSXPCInterface +typedef struct objc_object NSXPCInterface; +typedef struct {} _objc_exc_NSXPCInterface; +#endif + +#ifndef _REWRITER_typedef_NSXPCListenerEndpoint +#define _REWRITER_typedef_NSXPCListenerEndpoint +typedef struct objc_object NSXPCListenerEndpoint; +typedef struct {} _objc_exc_NSXPCListenerEndpoint; +#endif + +// @protocol NSXPCListenerDelegate; + +#pragma clang assume_nonnull begin + + +// @protocol NSXPCProxyCreating + + +// - (id)remoteObjectProxy; + + +// - (id)remoteObjectProxyWithErrorHandler:(void (^)(NSError *error))handler; + +/* @optional */ + + +// - (id)synchronousRemoteObjectProxyWithErrorHandler:(void (^)(NSError *error))handler __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + + +typedef NSUInteger NSXPCConnectionOptions; enum { + + NSXPCConnectionPrivileged = (1 << 12UL) +} __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSXPCConnection +#define _REWRITER_typedef_NSXPCConnection +typedef struct objc_object NSXPCConnection; +typedef struct {} _objc_exc_NSXPCConnection; +#endif + +struct NSXPCConnection_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_xconnection; + id _repliesExpected; + dispatch_queue_t _userQueue; + uint32_t _state; + uint32_t _state2; + void (*_interruptionHandler)(); + void (*_invalidationHandler)(); + id _exportInfo; + id _repliesRequested; + id _importInfo; + id _otherInfo; + id _reserved1; + NSXPCInterface *_remoteObjectInterface; + NSString *_serviceName; + NSXPCListenerEndpoint *_endpoint; + id _eCache; + id _dCache; +}; + + + +// - (instancetype)initWithServiceName:(NSString *)serviceName __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (nullable, readonly, copy) NSString *serviceName; + + +// - (instancetype)initWithMachServiceName:(NSString *)name options:(NSXPCConnectionOptions)options __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (instancetype)initWithListenerEndpoint:(NSXPCListenerEndpoint *)endpoint; +// @property (readonly, retain) NSXPCListenerEndpoint *endpoint; + + +// @property (nullable, retain) NSXPCInterface *exportedInterface; + + +// @property (nullable, retain) id exportedObject; + + +// @property (nullable, retain) NSXPCInterface *remoteObjectInterface; + + +// @property (readonly, retain) id remoteObjectProxy; + +// - (id)remoteObjectProxyWithErrorHandler:(void (^)(NSError *error))handler; + + +// - (id)synchronousRemoteObjectProxyWithErrorHandler:(void (^)(NSError *error))handler __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, copy) void (^interruptionHandler)(void); + + + + +// @property (nullable, copy) void (^invalidationHandler)(void); + + +// - (void)resume; + + +// - (void)suspend; + + +// - (void)invalidate; + + +// @property (readonly) au_asid_t auditSessionIdentifier; +// @property (readonly) pid_t processIdentifier; +// @property (readonly) uid_t effectiveUserIdentifier; +// @property (readonly) gid_t effectiveGroupIdentifier; + + +// + (nullable NSXPCConnection *)currentConnection __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (void)scheduleSendBarrierBlock:(void (^)(void))block __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSXPCListener +#define _REWRITER_typedef_NSXPCListener +typedef struct objc_object NSXPCListener; +typedef struct {} _objc_exc_NSXPCListener; +#endif + +struct NSXPCListener_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_xconnection; + dispatch_queue_t _userQueue; + void *reserved0; + id _delegate; + NSString *_serviceName; + uint64_t _state; + id _reserved1; + id _reserved2; +}; + + + +// + (NSXPCListener *)serviceListener; + + +// + (NSXPCListener *)anonymousListener; + + +// - (instancetype)initWithMachServiceName:(NSString *)name __attribute__((objc_designated_initializer)) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, weak) id delegate; + + +// @property (readonly, retain) NSXPCListenerEndpoint *endpoint; + + +// - (void)resume; + + +// - (void)suspend; + + +// - (void)invalidate; + +/* @end */ + + +// @protocol NSXPCListenerDelegate +/* @optional */ + +// - (BOOL)listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSXPCInterface +#define _REWRITER_typedef_NSXPCInterface +typedef struct objc_object NSXPCInterface; +typedef struct {} _objc_exc_NSXPCInterface; +#endif + +struct NSXPCInterface_IMPL { + struct NSObject_IMPL NSObject_IVARS; + Protocol *_protocol; + void *_reserved2; + id _reserved1; +}; + + + +// + (NSXPCInterface *)interfaceWithProtocol:(Protocol *)protocol; + + +// @property (assign) Protocol *protocol; + + + +// - (void)setClasses:(NSSet *)classes forSelector:(SEL)sel argumentIndex:(NSUInteger)arg ofReply:(BOOL)ofReply; +// - (NSSet *)classesForSelector:(SEL)sel argumentIndex:(NSUInteger)arg ofReply:(BOOL)ofReply; + + +// - (void)setInterface:(NSXPCInterface *)ifc forSelector:(SEL)sel argumentIndex:(NSUInteger)arg ofReply:(BOOL)ofReply; +// - (nullable NSXPCInterface *)interfaceForSelector:(SEL)sel argumentIndex:(NSUInteger)arg ofReply:(BOOL)ofReply; + + + + + + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSXPCListenerEndpoint +#define _REWRITER_typedef_NSXPCListenerEndpoint +typedef struct objc_object NSXPCListenerEndpoint; +typedef struct {} _objc_exc_NSXPCListenerEndpoint; +#endif + +struct NSXPCListenerEndpoint_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_internal; +}; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSXPCCoder +#define _REWRITER_typedef_NSXPCCoder +typedef struct objc_object NSXPCCoder; +typedef struct {} _objc_exc_NSXPCCoder; +#endif + +struct NSXPCCoder_IMPL { + struct NSCoder_IMPL NSCoder_IVARS; + id _userInfo; + id _reserved1; +}; + +// @property (nullable, retain) id userInfo; + + +// @property (nullable, readonly, strong) NSXPCConnection *connection __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + +enum { + + NSFileNoSuchFileError = 4, + NSFileLockingError = 255, + NSFileReadUnknownError = 256, + NSFileReadNoPermissionError = 257, + NSFileReadInvalidFileNameError = 258, + NSFileReadCorruptFileError = 259, + NSFileReadNoSuchFileError = 260, + NSFileReadInapplicableStringEncodingError = 261, + NSFileReadUnsupportedSchemeError = 262, + NSFileReadTooLargeError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 263, + NSFileReadUnknownStringEncodingError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 264, + NSFileWriteUnknownError = 512, + NSFileWriteNoPermissionError = 513, + NSFileWriteInvalidFileNameError = 514, + NSFileWriteFileExistsError __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 516, + NSFileWriteInapplicableStringEncodingError = 517, + NSFileWriteUnsupportedSchemeError = 518, + NSFileWriteOutOfSpaceError = 640, + NSFileWriteVolumeReadOnlyError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 642, + + + NSFileManagerUnmountUnknownError __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 768, + NSFileManagerUnmountBusyError __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 769, + + + NSKeyValueValidationError = 1024, + NSFormattingError = 2048, + NSUserCancelledError = 3072, + NSFeatureUnsupportedError __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3328, + + + NSExecutableNotLoadableError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3584, + NSExecutableArchitectureMismatchError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3585, + NSExecutableRuntimeMismatchError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3586, + NSExecutableLoadError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3587, + NSExecutableLinkError __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3588, + + + NSFileErrorMinimum = 0, + NSFileErrorMaximum = 1023, + + NSValidationErrorMinimum = 1024, + NSValidationErrorMaximum = 2047, + + NSExecutableErrorMinimum __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3584, + NSExecutableErrorMaximum __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3839, + + NSFormattingErrorMinimum = 2048, + NSFormattingErrorMaximum = 2559, + + NSPropertyListReadCorruptError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3840, + NSPropertyListReadUnknownVersionError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3841, + NSPropertyListReadStreamError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3842, + NSPropertyListWriteStreamError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3851, + NSPropertyListWriteInvalidError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3852, + + NSPropertyListErrorMinimum __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3840, + NSPropertyListErrorMaximum __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4095, + + NSXPCConnectionInterrupted __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4097, + NSXPCConnectionInvalid __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4099, + NSXPCConnectionReplyInvalid __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4101, + + NSXPCConnectionErrorMinimum __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4096, + NSXPCConnectionErrorMaximum __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4224, + + NSUbiquitousFileUnavailableError __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4353, + NSUbiquitousFileNotUploadedDueToQuotaError __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4354, + NSUbiquitousFileUbiquityServerNotAvailable __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4355, + + NSUbiquitousFileErrorMinimum __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4352, + NSUbiquitousFileErrorMaximum __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4607, + + NSUserActivityHandoffFailedError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4608, + NSUserActivityConnectionUnavailableError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4609, + NSUserActivityRemoteApplicationTimedOutError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4610, + NSUserActivityHandoffUserInfoTooLargeError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4611, + + NSUserActivityErrorMinimum __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4608, + NSUserActivityErrorMaximum __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4863, + + NSCoderReadCorruptError __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4864, + NSCoderValueNotFoundError __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4865, + NSCoderInvalidValueError __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))) = 4866, + NSCoderErrorMinimum __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4864, + NSCoderErrorMaximum __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4991, + + NSBundleErrorMinimum __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 4992, + NSBundleErrorMaximum __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 5119, + + NSBundleOnDemandResourceOutOfSpaceError __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 4992, + NSBundleOnDemandResourceExceededMaximumSizeError __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 4993, + NSBundleOnDemandResourceInvalidTagError __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) = 4994, + + NSCloudSharingNetworkFailureError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5120, + NSCloudSharingQuotaExceededError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5121, + NSCloudSharingTooManyParticipantsError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5122, + NSCloudSharingConflictError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5123, + NSCloudSharingNoPermissionError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5124, + NSCloudSharingOtherError __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5375, + + NSCloudSharingErrorMinimum __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5120, + NSCloudSharingErrorMaximum __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 5375, + + NSCompressionFailedError __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 5376, + NSDecompressionFailedError __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 5377, + + NSCompressionErrorMinimum __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 5376, + NSCompressionErrorMaximum __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) = 5503, + +}; + + + + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSByteCountFormatterUnits; enum { + + NSByteCountFormatterUseDefault = 0, + + NSByteCountFormatterUseBytes = 1UL << 0, + NSByteCountFormatterUseKB = 1UL << 1, + NSByteCountFormatterUseMB = 1UL << 2, + NSByteCountFormatterUseGB = 1UL << 3, + NSByteCountFormatterUseTB = 1UL << 4, + NSByteCountFormatterUsePB = 1UL << 5, + NSByteCountFormatterUseEB = 1UL << 6, + NSByteCountFormatterUseZB = 1UL << 7, + NSByteCountFormatterUseYBOrHigher = 0x0FFUL << 8, + + NSByteCountFormatterUseAll = 0x0FFFFUL +}; + +typedef NSInteger NSByteCountFormatterCountStyle; enum { + + NSByteCountFormatterCountStyleFile = 0, + + NSByteCountFormatterCountStyleMemory = 1, + + NSByteCountFormatterCountStyleDecimal = 2, + NSByteCountFormatterCountStyleBinary = 3 +}; + + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSByteCountFormatter +#define _REWRITER_typedef_NSByteCountFormatter +typedef struct objc_object NSByteCountFormatter; +typedef struct {} _objc_exc_NSByteCountFormatter; +#endif + +struct NSByteCountFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + unsigned int _allowedUnits; + char _countStyle; + BOOL _allowsNonnumericFormatting; + BOOL _includesUnit; + BOOL _includesCount; + BOOL _includesActualByteCount; + BOOL _adaptive; + BOOL _zeroPadsFractionDigits; + int _formattingContext; + int _reserved[5]; +}; + + + + +// + (NSString *)stringFromByteCount:(long long)byteCount countStyle:(NSByteCountFormatterCountStyle)countStyle; + + + +// - (NSString *)stringFromByteCount:(long long)byteCount; + + + + + +// + (NSString *)stringFromMeasurement:(NSMeasurement *)measurement countStyle:(NSByteCountFormatterCountStyle)countStyle __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + + + + + +// - (NSString *)stringFromMeasurement:(NSMeasurement *)measurement __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + + + + + +// - (nullable NSString *)stringForObjectValue:(nullable id)obj; + + + +// @property NSByteCountFormatterUnits allowedUnits; + + + +// @property NSByteCountFormatterCountStyle countStyle; + + + +// @property BOOL allowsNonnumericFormatting; + + + +// @property BOOL includesUnit; +// @property BOOL includesCount; + + + +// @property BOOL includesActualByteCount; + + + +// @property (getter=isAdaptive) BOOL adaptive; + + + +// @property BOOL zeroPadsFractionDigits; + + + +// @property NSFormattingContext formattingContext __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @protocol NSCacheDelegate; + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSCache +#define _REWRITER_typedef_NSCache +typedef struct objc_object NSCache; +typedef struct {} _objc_exc_NSCache; +#endif + +struct NSCache_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _delegate; + void *_private[5]; + void *_reserved; +}; + + +// @property (copy) NSString *name; + +// @property (nullable, assign) id delegate; + +// - (nullable ObjectType)objectForKey:(KeyType)key; +// - (void)setObject:(ObjectType)obj forKey:(KeyType)key; +// - (void)setObject:(ObjectType)obj forKey:(KeyType)key cost:(NSUInteger)g; +// - (void)removeObjectForKey:(KeyType)key; + +// - (void)removeAllObjects; + +// @property NSUInteger totalCostLimit; +// @property NSUInteger countLimit; +// @property BOOL evictsObjectsWithDiscardedContent; + +/* @end */ + + +// @protocol NSCacheDelegate +/* @optional */ +// - (void)cache:(NSCache *)cache willEvictObject:(id)obj; +/* @end */ + +#pragma clang assume_nonnull end + + + + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSPredicate +#define _REWRITER_typedef_NSPredicate +typedef struct objc_object NSPredicate; +typedef struct {} _objc_exc_NSPredicate; +#endif + + struct _predicateFlags { + unsigned int _evaluationBlocked : 1; + unsigned int _reservedPredicateFlags : 31; + } ; +struct NSPredicate_IMPL { + struct NSObject_IMPL NSObject_IVARS; + + struct _predicateFlags _predicateFlags; + uint32_t reserved; +}; + + + +// + (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat argumentArray:(nullable NSArray *)arguments; +// + (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat, ...; +// + (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat arguments:(va_list)argList; + +// + (nullable NSPredicate *)predicateFromMetadataQueryString:(NSString *)queryString __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// + (NSPredicate *)predicateWithValue:(BOOL)value; + +// + (NSPredicate*)predicateWithBlock:(BOOL (^)(id _Nullable evaluatedObject, NSDictionary * _Nullable bindings))block __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSString *predicateFormat; + +// - (instancetype)predicateWithSubstitutionVariables:(NSDictionary *)variables; + +// - (BOOL)evaluateWithObject:(nullable id)object; + +// - (BOOL)evaluateWithObject:(nullable id)object substitutionVariables:(nullable NSDictionary *)bindings __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (void)allowEvaluation __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSArray (NSPredicateSupport) +// - (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate; +/* @end */ + + +// @interface NSMutableArray (NSPredicateSupport) +// - (void)filterUsingPredicate:(NSPredicate *)predicate; +/* @end */ + + + +// @interface NSSet (NSPredicateSupport) +// - (NSSet *)filteredSetUsingPredicate:(NSPredicate *)predicate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + +// @interface NSMutableSet (NSPredicateSupport) +// - (void)filterUsingPredicate:(NSPredicate *)predicate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +/* @end */ + + +// @interface NSOrderedSet (NSPredicateSupport) + +// - (NSOrderedSet *)filteredOrderedSetUsingPredicate:(NSPredicate *)p __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSMutableOrderedSet (NSPredicateSupport) + +// - (void)filterUsingPredicate:(NSPredicate *)p __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + +typedef NSUInteger NSComparisonPredicateOptions; enum { + NSCaseInsensitivePredicateOption = 0x01, + NSDiacriticInsensitivePredicateOption = 0x02, + NSNormalizedPredicateOption __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 0x04, +}; + + +typedef NSUInteger NSComparisonPredicateModifier; enum { + NSDirectPredicateModifier = 0, + NSAllPredicateModifier, + NSAnyPredicateModifier +}; + + + +typedef NSUInteger NSPredicateOperatorType; enum { + NSLessThanPredicateOperatorType = 0, + NSLessThanOrEqualToPredicateOperatorType, + NSGreaterThanPredicateOperatorType, + NSGreaterThanOrEqualToPredicateOperatorType, + NSEqualToPredicateOperatorType, + NSNotEqualToPredicateOperatorType, + NSMatchesPredicateOperatorType, + NSLikePredicateOperatorType, + NSBeginsWithPredicateOperatorType, + NSEndsWithPredicateOperatorType, + NSInPredicateOperatorType, + NSCustomSelectorPredicateOperatorType, + NSContainsPredicateOperatorType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 99, + NSBetweenPredicateOperatorType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +}; + +// @class NSPredicateOperator; +#ifndef _REWRITER_typedef_NSPredicateOperator +#define _REWRITER_typedef_NSPredicateOperator +typedef struct objc_object NSPredicateOperator; +typedef struct {} _objc_exc_NSPredicateOperator; +#endif + +// @class NSExpression; +#ifndef _REWRITER_typedef_NSExpression +#define _REWRITER_typedef_NSExpression +typedef struct objc_object NSExpression; +typedef struct {} _objc_exc_NSExpression; +#endif + + + + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSComparisonPredicate +#define _REWRITER_typedef_NSComparisonPredicate +typedef struct objc_object NSComparisonPredicate; +typedef struct {} _objc_exc_NSComparisonPredicate; +#endif + +struct NSComparisonPredicate_IMPL { + struct NSPredicate_IMPL NSPredicate_IVARS; + void *_reserved2; + NSPredicateOperator *_predicateOperator; + NSExpression *_lhs; + NSExpression *_rhs; +}; + + +// + (NSComparisonPredicate *)predicateWithLeftExpression:(NSExpression *)lhs rightExpression:(NSExpression *)rhs modifier:(NSComparisonPredicateModifier)modifier type:(NSPredicateOperatorType)type options:(NSComparisonPredicateOptions)options; +// + (NSComparisonPredicate *)predicateWithLeftExpression:(NSExpression *)lhs rightExpression:(NSExpression *)rhs customSelector:(SEL)selector; + +// - (instancetype)initWithLeftExpression:(NSExpression *)lhs rightExpression:(NSExpression *)rhs modifier:(NSComparisonPredicateModifier)modifier type:(NSPredicateOperatorType)type options:(NSComparisonPredicateOptions)options __attribute__((objc_designated_initializer)); +// - (instancetype)initWithLeftExpression:(NSExpression *)lhs rightExpression:(NSExpression *)rhs customSelector:(SEL)selector __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (readonly) NSPredicateOperatorType predicateOperatorType; +// @property (readonly) NSComparisonPredicateModifier comparisonPredicateModifier; +// @property (readonly, retain) NSExpression *leftExpression; +// @property (readonly, retain) NSExpression *rightExpression; +// @property (nullable, readonly) SEL customSelector; +// @property (readonly) NSComparisonPredicateOptions options; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef NSUInteger NSCompoundPredicateType; enum { + NSNotPredicateType = 0, + NSAndPredicateType, + NSOrPredicateType, +}; + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSCompoundPredicate +#define _REWRITER_typedef_NSCompoundPredicate +typedef struct objc_object NSCompoundPredicate; +typedef struct {} _objc_exc_NSCompoundPredicate; +#endif + +struct NSCompoundPredicate_IMPL { + struct NSPredicate_IMPL NSPredicate_IVARS; + void *_reserved2; + NSUInteger _type; + NSArray *_subpredicates; +}; + + +// - (instancetype)initWithType:(NSCompoundPredicateType)type subpredicates:(NSArray *)subpredicates __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (readonly) NSCompoundPredicateType compoundPredicateType; +// @property (readonly, copy) NSArray *subpredicates; + + +// + (NSCompoundPredicate *)andPredicateWithSubpredicates:(NSArray *)subpredicates __attribute__((swift_name("init(andPredicateWithSubpredicates:)"))); +// + (NSCompoundPredicate *)orPredicateWithSubpredicates:(NSArray *)subpredicates __attribute__((swift_name("init(orPredicateWithSubpredicates:)"))); +// + (NSCompoundPredicate *)notPredicateWithSubpredicate:(NSPredicate *)predicate __attribute__((swift_name("init(notPredicateWithSubpredicate:)"))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +typedef NSInteger NSDateComponentsFormatterUnitsStyle; enum { + NSDateComponentsFormatterUnitsStylePositional = 0, + NSDateComponentsFormatterUnitsStyleAbbreviated, + NSDateComponentsFormatterUnitsStyleShort, + NSDateComponentsFormatterUnitsStyleFull, + NSDateComponentsFormatterUnitsStyleSpellOut, + NSDateComponentsFormatterUnitsStyleBrief __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) +}; + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +typedef NSUInteger NSDateComponentsFormatterZeroFormattingBehavior; enum { + NSDateComponentsFormatterZeroFormattingBehaviorNone = (0), + NSDateComponentsFormatterZeroFormattingBehaviorDefault = (1 << 0), + + NSDateComponentsFormatterZeroFormattingBehaviorDropLeading = (1 << 1), + NSDateComponentsFormatterZeroFormattingBehaviorDropMiddle = (1 << 2), + NSDateComponentsFormatterZeroFormattingBehaviorDropTrailing = (1 << 3), + NSDateComponentsFormatterZeroFormattingBehaviorDropAll = (NSDateComponentsFormatterZeroFormattingBehaviorDropLeading | NSDateComponentsFormatterZeroFormattingBehaviorDropMiddle | NSDateComponentsFormatterZeroFormattingBehaviorDropTrailing), + + NSDateComponentsFormatterZeroFormattingBehaviorPad = (1 << 16), +}; + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSDateComponentsFormatter +#define _REWRITER_typedef_NSDateComponentsFormatter +typedef struct objc_object NSDateComponentsFormatter; +typedef struct {} _objc_exc_NSDateComponentsFormatter; +#endif + +struct NSDateComponentsFormatter_IMPL { + struct NSFormatter_IMPL NSFormatter_IVARS; + pthread_mutex_t _lock; + void *_fmt; + void *_unused; + NSString *_fmtLocaleIdent; + NSCalendar *_calendar; + NSDate *_referenceDate; + NSNumberFormatter *_unitFormatter; + NSCalendarUnit _allowedUnits; + NSFormattingContext _formattingContext; + NSDateComponentsFormatterUnitsStyle _unitsStyle; + NSDateComponentsFormatterZeroFormattingBehavior _zeroFormattingBehavior; + NSInteger _maximumUnitCount; + BOOL _allowsFractionalUnits; + BOOL _collapsesLargestUnit; + BOOL _includesApproximationPhrase; + BOOL _includesTimeRemainingPhrase; + void *_reserved; +}; + + + + +// - (nullable NSString *)stringForObjectValue:(nullable id)obj; + + + +// - (nullable NSString *)stringFromDateComponents:(NSDateComponents *)components; + + + + + + + +// - (nullable NSString *)stringFromDate:(NSDate *)startDate toDate:(NSDate *)endDate; + + + +// - (nullable NSString *)stringFromTimeInterval:(NSTimeInterval)ti; + + +// + (nullable NSString *)localizedStringFromDateComponents:(NSDateComponents *)components unitsStyle:(NSDateComponentsFormatterUnitsStyle) unitsStyle; + + + +// @property NSDateComponentsFormatterUnitsStyle unitsStyle; +// @property NSCalendarUnit allowedUnits; + + + + + +// @property NSDateComponentsFormatterZeroFormattingBehavior zeroFormattingBehavior; + + + +// @property (nullable, copy) NSCalendar *calendar; + + + +// @property (nullable, copy) NSDate *referenceDate __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// @property BOOL allowsFractionalUnits; +// @property NSInteger maximumUnitCount; + + + +// @property BOOL collapsesLargestUnit; + + + +// @property BOOL includesApproximationPhrase; + + + +// @property BOOL includesTimeRemainingPhrase; + + + + +// @property NSFormattingContext formattingContext; + + + +// - (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string errorDescription:(out NSString * _Nullable * _Nullable)error; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSMutableDictionary; +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +// @class NSPredicate; +#ifndef _REWRITER_typedef_NSPredicate +#define _REWRITER_typedef_NSPredicate +typedef struct objc_object NSPredicate; +typedef struct {} _objc_exc_NSPredicate; +#endif + + +#pragma clang assume_nonnull begin + + + +typedef NSUInteger NSExpressionType; enum { + NSConstantValueExpressionType = 0, + NSEvaluatedObjectExpressionType, + NSVariableExpressionType, + NSKeyPathExpressionType, + NSFunctionExpressionType, + NSUnionSetExpressionType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSIntersectSetExpressionType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSMinusSetExpressionType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSSubqueryExpressionType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 13, + NSAggregateExpressionType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 14, + NSAnyKeyExpressionType __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 15, + NSBlockExpressionType = 19, + NSConditionalExpressionType __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 20 + +}; + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSExpression +#define _REWRITER_typedef_NSExpression +typedef struct objc_object NSExpression; +typedef struct {} _objc_exc_NSExpression; +#endif + + struct _expressionFlags { + unsigned int _evaluationBlocked : 1; + unsigned int _reservedExpressionFlags : 31; + } ; +struct NSExpression_IMPL { + struct NSObject_IMPL NSObject_IVARS; + + struct _expressionFlags _expressionFlags; + uint32_t reserved; + NSExpressionType _expressionType; +}; + + +// + (NSExpression *)expressionWithFormat:(NSString *)expressionFormat argumentArray:(NSArray *)arguments __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionWithFormat:(NSString *)expressionFormat, ... __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionWithFormat:(NSString *)expressionFormat arguments:(va_list)argList __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// + (NSExpression *)expressionForConstantValue:(nullable id)obj; +// + (NSExpression *)expressionForEvaluatedObject; +// + (NSExpression *)expressionForVariable:(NSString *)string; +// + (NSExpression *)expressionForKeyPath:(NSString *)keyPath; +// + (NSExpression *)expressionForFunction:(NSString *)name arguments:(NSArray *)parameters; +// + (NSExpression *)expressionForAggregate:(NSArray *)subexpressions __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForUnionSet:(NSExpression *)left with:(NSExpression *)right __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForIntersectSet:(NSExpression *)left with:(NSExpression *)right __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForMinusSet:(NSExpression *)left with:(NSExpression *)right __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForSubquery:(NSExpression *)expression usingIteratorVariable:(NSString *)variable predicate:(NSPredicate *)predicate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForFunction:(NSExpression *)target selectorName:(NSString *)name arguments:(nullable NSArray *)parameters __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForAnyKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForBlock:(id (^)(id _Nullable evaluatedObject, NSArray *expressions, NSMutableDictionary * _Nullable context))block arguments:(nullable NSArray *)arguments __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// + (NSExpression *)expressionForConditional:(NSPredicate *)predicate trueExpression:(NSExpression *)trueExpression falseExpression:(NSExpression *)falseExpression __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// - (instancetype)initWithExpressionType:(NSExpressionType)type __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property (readonly) NSExpressionType expressionType; +// @property (nullable, readonly, retain) id constantValue; +// @property (readonly, copy) NSString *keyPath; +// @property (readonly, copy) NSString *function; +// @property (readonly, copy) NSString *variable; +// @property (readonly, copy) NSExpression *operand; +// @property (nullable, readonly, copy) NSArray *arguments; + +// @property (readonly, retain) id collection __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSPredicate *predicate __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSExpression *leftExpression __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSExpression *rightExpression __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (readonly, copy) NSExpression *trueExpression __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly, copy) NSExpression *falseExpression __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) id (^expressionBlock)(id _Nullable, NSArray *, NSMutableDictionary * _Nullable) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (nullable id)expressionValueWithObject:(nullable id)object context:(nullable NSMutableDictionary *)context; + +// - (void)allowEvaluation __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSExtensionContext +#define _REWRITER_typedef_NSExtensionContext +typedef struct objc_object NSExtensionContext; +typedef struct {} _objc_exc_NSExtensionContext; +#endif + +struct NSExtensionContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property(readonly, copy, nonatomic) NSArray *inputItems; + + +// - (void)completeRequestReturningItems:(nullable NSArray *)items completionHandler:(void(^ _Nullable)(BOOL expired))completionHandler; + + +// - (void)cancelRequestWithError:(NSError *)error; + + +// - (void)openURL:(NSURL *)URL completionHandler:(void (^ _Nullable)(BOOL success))completionHandler; + +/* @end */ + + + +extern "C" NSString * _Null_unspecified const NSExtensionItemsAndErrorsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSString * _Null_unspecified const NSExtensionHostWillEnterForegroundNotification __attribute__((availability(ios,introduced=8.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + +extern "C" NSString * _Null_unspecified const NSExtensionHostDidEnterBackgroundNotification __attribute__((availability(ios,introduced=8.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + +extern "C" NSString * _Null_unspecified const NSExtensionHostWillResignActiveNotification __attribute__((availability(ios,introduced=8.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + +extern "C" NSString * _Null_unspecified const NSExtensionHostDidBecomeActiveNotification __attribute__((availability(ios,introduced=8.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSExtensionItem +#define _REWRITER_typedef_NSExtensionItem +typedef struct objc_object NSExtensionItem; +typedef struct {} _objc_exc_NSExtensionItem; +#endif + +struct NSExtensionItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property(nullable, copy, nonatomic) NSAttributedString *attributedTitle; + + +// @property(nullable, copy, nonatomic) NSAttributedString *attributedContentText; + + +// @property(nullable, copy, nonatomic) NSArray *attachments; + + +// @property(nullable, copy, nonatomic) NSDictionary *userInfo; + +/* @end */ + + + +extern "C" NSString * _Null_unspecified const NSExtensionItemAttributedTitleKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * _Null_unspecified const NSExtensionItemAttributedContentTextKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * _Null_unspecified const NSExtensionItemAttachmentsKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +// @class NSExtensionContext; +#ifndef _REWRITER_typedef_NSExtensionContext +#define _REWRITER_typedef_NSExtensionContext +typedef struct objc_object NSExtensionContext; +typedef struct {} _objc_exc_NSExtensionContext; +#endif + + + +// @protocol NSExtensionRequestHandling + +/* @required */ + + +// - (void)beginRequestWithExtensionContext:(NSExtensionContext *)context; + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + + +// @protocol NSFilePresenter; + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSFileCoordinatorReadingOptions; enum { + + + + NSFileCoordinatorReadingWithoutChanges = 1 << 0, + + + + NSFileCoordinatorReadingResolvesSymbolicLink = 1 << 1, + + + + NSFileCoordinatorReadingImmediatelyAvailableMetadataOnly __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1 << 2, + + + + + + NSFileCoordinatorReadingForUploading __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1 << 3, + +}; + +typedef NSUInteger NSFileCoordinatorWritingOptions; enum { + NSFileCoordinatorWritingForDeleting = 1 << 0, + + + + + + NSFileCoordinatorWritingForMoving = 1 << 1, + + + + NSFileCoordinatorWritingForMerging = 1 << 2, + + + + + + + + NSFileCoordinatorWritingForReplacing = 1 << 3, + + + + NSFileCoordinatorWritingContentIndependentMetadataOnly __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1 << 4 + +}; + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSFileAccessIntent +#define _REWRITER_typedef_NSFileAccessIntent +typedef struct objc_object NSFileAccessIntent; +typedef struct {} _objc_exc_NSFileAccessIntent; +#endif + +struct NSFileAccessIntent_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURL *_url; + BOOL _isRead; + NSInteger _options; +}; + +// + (instancetype)readingIntentWithURL:(NSURL *)url options:(NSFileCoordinatorReadingOptions)options; +// + (instancetype)writingIntentWithURL:(NSURL *)url options:(NSFileCoordinatorWritingOptions)options; +// @property (readonly, copy) NSURL *URL; +/* @end */ + + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSFileCoordinator +#define _REWRITER_typedef_NSFileCoordinator +typedef struct objc_object NSFileCoordinator; +typedef struct {} _objc_exc_NSFileCoordinator; +#endif + +struct NSFileCoordinator_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _accessArbiter; + id _fileReactor; + id _purposeID; + NSURL *_recentFilePresenterURL; + id _accessClaimIDOrIDs; + BOOL _isCancelled; + NSMutableDictionary *_movedItems; +}; + + + + + + + + +// + (void)addFilePresenter:(id)filePresenter; +// + (void)removeFilePresenter:(id)filePresenter; +@property (class, readonly, copy) NSArray> *filePresenters; +// - (instancetype)initWithFilePresenter:(nullable id)filePresenterOrNil __attribute__((objc_designated_initializer)); +// @property (copy) NSString *purposeIdentifier __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)coordinateAccessWithIntents:(NSArray *)intents queue:(NSOperationQueue *)queue byAccessor:(void (^)(NSError * _Nullable error))accessor __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)coordinateReadingItemAtURL:(NSURL *)url options:(NSFileCoordinatorReadingOptions)options error:(NSError **)outError byAccessor:(void (__attribute__((noescape)) ^)(NSURL *newURL))reader; +// - (void)coordinateWritingItemAtURL:(NSURL *)url options:(NSFileCoordinatorWritingOptions)options error:(NSError **)outError byAccessor:(void (__attribute__((noescape)) ^)(NSURL *newURL))writer; +// - (void)coordinateReadingItemAtURL:(NSURL *)readingURL options:(NSFileCoordinatorReadingOptions)readingOptions writingItemAtURL:(NSURL *)writingURL options:(NSFileCoordinatorWritingOptions)writingOptions error:(NSError **)outError byAccessor:(void (__attribute__((noescape)) ^)(NSURL *newReadingURL, NSURL *newWritingURL))readerWriter; +// - (void)coordinateWritingItemAtURL:(NSURL *)url1 options:(NSFileCoordinatorWritingOptions)options1 writingItemAtURL:(NSURL *)url2 options:(NSFileCoordinatorWritingOptions)options2 error:(NSError **)outError byAccessor:(void (__attribute__((noescape)) ^)(NSURL *newURL1, NSURL *newURL2))writer; +// - (void)prepareForReadingItemsAtURLs:(NSArray *)readingURLs options:(NSFileCoordinatorReadingOptions)readingOptions writingItemsAtURLs:(NSArray *)writingURLs options:(NSFileCoordinatorWritingOptions)writingOptions error:(NSError **)outError byAccessor:(void (__attribute__((noescape)) ^)(void (^completionHandler)(void)))batchAccessor; +// - (void)itemAtURL:(NSURL *)oldURL willMoveToURL:(NSURL *)newURL __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)itemAtURL:(NSURL *)oldURL didMoveToURL:(NSURL *)newURL; + + + + + + + +// - (void)itemAtURL:(NSURL *)url didChangeUbiquityAttributes:(NSSet *)attributes __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (void)cancel; + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSFileVersion +#define _REWRITER_typedef_NSFileVersion +typedef struct objc_object NSFileVersion; +typedef struct {} _objc_exc_NSFileVersion; +#endif + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + + +#pragma clang assume_nonnull begin + + + + + + + +// @protocol NSFilePresenter + +/* @required */ + + + + + +// @property (nullable, readonly, copy) NSURL *presentedItemURL; + + + + + +// @property (readonly, retain) NSOperationQueue *presentedItemOperationQueue; + +/* @optional */ + + + +// @property (nullable, readonly, copy) NSURL *primaryPresentedItemURL __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + +// - (void)relinquishPresentedItemToReader:(void (^)(void (^ _Nullable reacquirer)(void)))reader; + + + + + +// - (void)relinquishPresentedItemToWriter:(void (^)(void (^ _Nullable reacquirer)(void)))writer; + + + + + + + +// - (void)savePresentedItemChangesWithCompletionHandler:(void (^)(NSError * _Nullable errorOrNil))completionHandler; + + + + + + + +// - (void)accommodatePresentedItemDeletionWithCompletionHandler:(void (^)(NSError * _Nullable errorOrNil))completionHandler; +// - (void)presentedItemDidMoveToURL:(NSURL *)newURL; +// - (void)presentedItemDidChange; + + + + + +// - (void)presentedItemDidChangeUbiquityAttributes:(NSSet *)attributes __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// @property (readonly, strong) NSSet *observedPresentedItemUbiquityAttributes __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + +// - (void)presentedItemDidGainVersion:(NSFileVersion *)version; +// - (void)presentedItemDidLoseVersion:(NSFileVersion *)version; +// - (void)presentedItemDidResolveConflictVersion:(NSFileVersion *)version; +// - (void)accommodatePresentedSubitemDeletionAtURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable errorOrNil))completionHandler; + + + + + +// - (void)presentedSubitemDidAppearAtURL:(NSURL *)url; + + + + + +// - (void)presentedSubitemAtURL:(NSURL *)oldURL didMoveToURL:(NSURL *)newURL; + + + + + +// - (void)presentedSubitemDidChangeAtURL:(NSURL *)url; + + + +// - (void)presentedSubitemAtURL:(NSURL *)url didGainVersion:(NSFileVersion *)version; +// - (void)presentedSubitemAtURL:(NSURL *)url didLoseVersion:(NSFileVersion *)version; +// - (void)presentedSubitemAtURL:(NSURL *)url didResolveConflictVersion:(NSFileVersion *)version; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDate +#define _REWRITER_typedef_NSDate +typedef struct objc_object NSDate; +typedef struct {} _objc_exc_NSDate; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSPersonNameComponents +#define _REWRITER_typedef_NSPersonNameComponents +typedef struct objc_object NSPersonNameComponents; +typedef struct {} _objc_exc_NSPersonNameComponents; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSFileVersionAddingOptions; enum { + + + + NSFileVersionAddingByMoving = 1 << 0 + +}; + +typedef NSUInteger NSFileVersionReplacingOptions; enum { + + + + NSFileVersionReplacingByMoving = 1 << 0 + +}; + + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSFileVersion +#define _REWRITER_typedef_NSFileVersion +typedef struct objc_object NSFileVersion; +typedef struct {} _objc_exc_NSFileVersion; +#endif + +struct NSFileVersion_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSURL *_fileURL; + id _addition; + id _deadVersionIdentifier; + id _nonLocalVersion; + NSURL *_contentsURL; + BOOL _isBackup; + NSString *_localizedName; + NSString *_localizedComputerName; + NSDate *_modificationDate; + BOOL _isResolved; + BOOL _contentsURLIsAccessed; + id _reserved; + NSString *_name; +}; + + + + +// + (nullable NSFileVersion *)currentVersionOfItemAtURL:(NSURL *)url; + + + +// + (nullable NSArray *)otherVersionsOfItemAtURL:(NSURL *)url; + + + +// + (nullable NSArray *)unresolvedConflictVersionsOfItemAtURL:(NSURL *)url; + + + + + + + +// + (void)getNonlocalVersionsOfItemAtURL:(NSURL *)url completionHandler:(void (^)(NSArray * _Nullable nonlocalFileVersions, NSError * _Nullable error))completionHandler __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (nullable NSFileVersion *)versionOfItemAtURL:(NSURL *)url forPersistentIdentifier:(id)persistentIdentifier; + + + + + + + +// + (nullable NSFileVersion *)addVersionOfItemAtURL:(NSURL *)url withContentsOfURL:(NSURL *)contentsURL options:(NSFileVersionAddingOptions)options error:(NSError **)outError __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// + (NSURL *)temporaryDirectoryURLForNewVersionOfItemAtURL:(NSURL *)url __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// @property (readonly, copy) NSURL *URL; + + + +// @property (nullable, readonly, copy) NSString *localizedName; + + + +// @property (nullable, readonly, copy) NSString *localizedNameOfSavingComputer; + + + +// @property (nullable, readonly, copy) NSPersonNameComponents *originatorNameComponents __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// @property (nullable, readonly, copy) NSDate *modificationDate; + + + +// @property (readonly, retain) id persistentIdentifier; + + + +// @property (readonly, getter=isConflict) BOOL conflict; + + + + + + + +// @property (getter=isResolved) BOOL resolved; +// @property (getter=isDiscardable) BOOL discardable __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// @property (readonly) BOOL hasLocalContents __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly) BOOL hasThumbnail __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (nullable NSURL *)replaceItemAtURL:(NSURL *)url options:(NSFileVersionReplacingOptions)options error:(NSError **)error; + + + + + + + +// - (BOOL)removeAndReturnError:(NSError **)outError; + + + + + +// + (BOOL)removeOtherVersionsOfItemAtURL:(NSURL *)url error:(NSError **)outError; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSFileWrapperReadingOptions; enum { + + + + NSFileWrapperReadingImmediate = 1 << 0, + + + + NSFileWrapperReadingWithoutMapping = 1 << 1 + +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSUInteger NSFileWrapperWritingOptions; enum { + + + + NSFileWrapperWritingAtomic = 1 << 0, + + + + NSFileWrapperWritingWithNameUpdating = 1 << 1 + +} __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSFileWrapper +#define _REWRITER_typedef_NSFileWrapper +typedef struct objc_object NSFileWrapper; +typedef struct {} _objc_exc_NSFileWrapper; +#endif + +struct NSFileWrapper_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSDictionary *_fileAttributes; + NSString *_preferredFileName; + NSString *_fileName; + id _contents; + id _icon; + id _moreVars; +}; + + + + + + +// - (nullable instancetype)initWithURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError **)outError __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (instancetype)initDirectoryWithFileWrappers:(NSDictionary *)childrenByPreferredName __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initRegularFileWithContents:(NSData *)contents __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initSymbolicLinkWithDestinationURL:(NSURL *)url __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (nullable instancetype)initWithSerializedRepresentation:(NSData *)serializeRepresentation __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)inCoder __attribute__((objc_designated_initializer)); + + + + + +// @property (readonly, getter=isDirectory) BOOL directory; +// @property (readonly, getter=isRegularFile) BOOL regularFile; +// @property (readonly, getter=isSymbolicLink) BOOL symbolicLink; + + + + + +// @property (nullable, copy) NSString *preferredFilename; + + + +// @property (nullable, copy) NSString *filename; + + + +// @property (copy) NSDictionary *fileAttributes; +// - (BOOL)matchesContentsOfURL:(NSURL *)url __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (BOOL)readFromURL:(NSURL *)url options:(NSFileWrapperReadingOptions)options error:(NSError **)outError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (BOOL)writeToURL:(NSURL *)url options:(NSFileWrapperWritingOptions)options originalContentsURL:(nullable NSURL *)originalContentsURL error:(NSError **)outError __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (nullable, readonly, copy) NSData *serializedRepresentation; + + + + + + + +// - (NSString *)addFileWrapper:(NSFileWrapper *)child; + + + +// - (NSString *)addRegularFileWithContents:(NSData *)data preferredFilename:(NSString *)fileName; + + + +// - (void)removeFileWrapper:(NSFileWrapper *)child; + + + +// @property (nullable, readonly, copy) NSDictionary *fileWrappers; + + + +// - (nullable NSString *)keyForFileWrapper:(NSFileWrapper *)child; + + + + + + + +// @property (nullable, readonly, copy) NSData *regularFileContents; + + + + + + + +// @property (nullable, readonly, copy) NSURL *symbolicLinkDestinationURL __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSOrthography +#define _REWRITER_typedef_NSOrthography +typedef struct objc_object NSOrthography; +typedef struct {} _objc_exc_NSOrthography; +#endif + +#ifndef _REWRITER_typedef_NSValue +#define _REWRITER_typedef_NSValue +typedef struct objc_object NSValue; +typedef struct {} _objc_exc_NSValue; +#endif + + +#pragma clang assume_nonnull begin + + + + + +typedef NSString *NSLinguisticTagScheme __attribute__((swift_wrapper(struct))); + +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeTokenType __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeLexicalClass __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeNameType __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeNameTypeOrLexicalClass __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeLemma __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeLanguage __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTagScheme const NSLinguisticTagSchemeScript __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +typedef NSString *NSLinguisticTag __attribute__((swift_wrapper(struct))); + + +extern "C" NSLinguisticTag const NSLinguisticTagWord __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagPunctuation __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagWhitespace __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOther __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSLinguisticTag const NSLinguisticTagNoun __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagVerb __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagAdjective __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagAdverb __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagPronoun __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagDeterminer __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagParticle __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagPreposition __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagConjunction __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagInterjection __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagClassifier __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagIdiom __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOtherWord __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagSentenceTerminator __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOpenQuote __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagCloseQuote __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOpenParenthesis __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagCloseParenthesis __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagWordJoiner __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagDash __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOtherPunctuation __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagParagraphBreak __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOtherWhitespace __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSLinguisticTag const NSLinguisticTagPersonalName __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagPlaceName __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSLinguisticTag const NSLinguisticTagOrganizationName __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +typedef NSInteger NSLinguisticTaggerUnit; enum { + NSLinguisticTaggerUnitWord, + NSLinguisticTaggerUnitSentence, + NSLinguisticTaggerUnitParagraph, + NSLinguisticTaggerUnitDocument +}; + + +typedef NSUInteger NSLinguisticTaggerOptions; enum { + NSLinguisticTaggerOmitWords = 1 << 0, + NSLinguisticTaggerOmitPunctuation = 1 << 1, + NSLinguisticTaggerOmitWhitespace = 1 << 2, + NSLinguisticTaggerOmitOther = 1 << 3, + NSLinguisticTaggerJoinNames = 1 << 4 +}; + + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLinguisticTagger +#define _REWRITER_typedef_NSLinguisticTagger +typedef struct objc_object NSLinguisticTagger; +typedef struct {} _objc_exc_NSLinguisticTagger; +#endif + +struct NSLinguisticTagger_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSArray *_schemes; + NSUInteger _options; + NSString *_string; + id _orthographyArray; + id _tokenArray; + void *_reserved; +}; + + + + +// - (instancetype)initWithTagSchemes:(NSArray *)tagSchemes options:(NSUInteger)opts __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *tagSchemes __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, retain) NSString *string __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// + (NSArray *)availableTagSchemesForUnit:(NSLinguisticTaggerUnit)unit language:(NSString *)language __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// + (NSArray *)availableTagSchemesForLanguage:(NSString *)language __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)setOrthography:(nullable NSOrthography *)orthography range:(NSRange)range __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSOrthography *)orthographyAtIndex:(NSUInteger)charIndex effectiveRange:(nullable NSRangePointer)effectiveRange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)stringEditedInRange:(NSRange)newRange changeInLength:(NSInteger)delta __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (NSRange)tokenRangeAtIndex:(NSUInteger)charIndex unit:(NSLinguisticTaggerUnit)unit __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// - (NSRange)sentenceRangeForRange:(NSRange)range __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)enumerateTagsInRange:(NSRange)range unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options usingBlock:(void (__attribute__((noescape)) ^)(NSLinguisticTag _Nullable tag, NSRange tokenRange, BOOL *stop))block __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (nullable NSLinguisticTag)tagAtIndex:(NSUInteger)charIndex unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme tokenRange:(nullable NSRangePointer)tokenRange __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSArray *)tagsInRange:(NSRange)range unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options tokenRanges:(NSArray * _Nullable * _Nullable)tokenRanges __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// - (void)enumerateTagsInRange:(NSRange)range scheme:(NSLinguisticTagScheme)tagScheme options:(NSLinguisticTaggerOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(NSLinguisticTag _Nullable tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop))block __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (nullable NSLinguisticTag)tagAtIndex:(NSUInteger)charIndex scheme:(NSLinguisticTagScheme)scheme tokenRange:(nullable NSRangePointer)tokenRange sentenceRange:(nullable NSRangePointer)sentenceRange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (NSArray *)tagsInRange:(NSRange)range scheme:(NSString *)tagScheme options:(NSLinguisticTaggerOptions)opts tokenRanges:(NSArray * _Nullable * _Nullable)tokenRanges __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, readonly, copy) NSString *dominantLanguage __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// + (nullable NSString *)dominantLanguageForString:(NSString *)string __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// + (nullable NSLinguisticTag)tagForString:(NSString *)string atIndex:(NSUInteger)charIndex unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme orthography:(nullable NSOrthography *)orthography tokenRange:(nullable NSRangePointer)tokenRange __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// + (NSArray *)tagsForString:(NSString *)string range:(NSRange)range unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options orthography:(nullable NSOrthography *)orthography tokenRanges:(NSArray * _Nullable * _Nullable)tokenRanges __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// + (void)enumerateTagsForString:(NSString *)string range:(NSRange)range unit:(NSLinguisticTaggerUnit)unit scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options orthography:(nullable NSOrthography *)orthography usingBlock:(void (__attribute__((noescape)) ^)(NSLinguisticTag _Nullable tag, NSRange tokenRange, BOOL *stop))block __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// - (nullable NSArray *)possibleTagsAtIndex:(NSUInteger)charIndex scheme:(NSString *)tagScheme tokenRange:(nullable NSRangePointer)tokenRange sentenceRange:(nullable NSRangePointer)sentenceRange scores:(NSArray * _Nullable * _Nullable)scores __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + +// @interface NSString (NSLinguisticAnalysis) + + + +// - (NSArray *)linguisticTagsInRange:(NSRange)range scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options orthography:(nullable NSOrthography *)orthography tokenRanges:(NSArray * _Nullable * _Nullable)tokenRanges __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateLinguisticTagsInRange:(NSRange)range scheme:(NSLinguisticTagScheme)scheme options:(NSLinguisticTaggerOptions)options orthography:(nullable NSOrthography *)orthography usingBlock:(void (__attribute__((noescape)) ^)(NSLinguisticTag _Nullable tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop))block __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" NSString * const NSMetadataItemFSNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemDisplayNameKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemURLKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemPathKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemFSSizeKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemFSCreationDateKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemFSContentChangeDateKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemContentTypeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataItemContentTypeTreeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSString * const NSMetadataItemIsUbiquitousKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSString * const NSMetadataUbiquitousItemHasUnresolvedConflictsKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemIsDownloadedKey __attribute__((availability(macos,introduced=10.7,deprecated=10.9,message="Use NSMetadataUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use NSMetadataUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Use NSMetadataUbiquitousItemDownloadingStatusKey instead"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Use NSMetadataUbiquitousItemDownloadingStatusKey instead"))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadingStatusKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadingStatusNotDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadingStatusDownloaded __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadingStatusCurrent __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemIsDownloadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemIsUploadedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemIsUploadingKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemPercentDownloadedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemPercentUploadedKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemUploadingErrorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemDownloadRequestedKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemIsExternalDocumentKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemContainerDisplayNameKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataUbiquitousItemURLInLocalContainerKey __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSString * const NSMetadataUbiquitousItemIsSharedKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemCurrentUserRoleKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemCurrentUserPermissionsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemOwnerNameComponentsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemMostRecentEditorNameComponentsKey __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" NSString * const NSMetadataUbiquitousSharedItemRoleOwner __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemRoleParticipant __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" NSString * const NSMetadataUbiquitousSharedItemPermissionsReadOnly __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataUbiquitousSharedItemPermissionsReadWrite __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + +extern "C" NSString * const NSMetadataItemAttributeChangeDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemKeywordsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemTitleKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAuthorsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemEditorsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemParticipantsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemProjectsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDownloadedDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemWhereFromsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCommentKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCopyrightKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLastUsedDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemContentCreationDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemContentModificationDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDateAddedKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDurationSecondsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemContactKeywordsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemVersionKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemPixelHeightKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPixelWidthKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPixelCountKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemColorSpaceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemBitsPerSampleKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFlashOnOffKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFocalLengthKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAcquisitionMakeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAcquisitionModelKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemISOSpeedKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemOrientationKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLayerNamesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemWhiteBalanceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemApertureKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemProfileNameKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemResolutionWidthDPIKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemResolutionHeightDPIKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExposureModeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExposureTimeSecondsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemEXIFVersionKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemCameraOwnerKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFocalLength35mmKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLensModelKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemEXIFGPSVersionKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAltitudeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLatitudeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLongitudeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemSpeedKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemTimestampKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSTrackKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemImageDirectionKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemNamedLocationKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemGPSStatusKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSMeasureModeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDOPKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSMapDatumKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDestLatitudeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDestLongitudeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDestBearingKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDestDistanceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSProcessingMethodKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSAreaInformationKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDateStampKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGPSDifferentalKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemCodecsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMediaTypesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemStreamableKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemTotalBitRateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemVideoBitRateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAudioBitRateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDeliveryTypeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemAlbumKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemHasAlphaChannelKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRedEyeOnOffKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMeteringModeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMaxApertureKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFNumberKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExposureProgramKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExposureTimeStringKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemHeadlineKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemInstructionsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCityKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemStateOrProvinceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCountryKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemTextContentKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemAudioSampleRateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAudioChannelCountKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemTempoKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemKeySignatureKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemTimeSignatureKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAudioEncodingApplicationKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemComposerKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLyricistKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAudioTrackNumberKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRecordingDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMusicalGenreKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemIsGeneralMIDISequenceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRecordingYearKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemOrganizationsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemLanguagesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRightsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPublishersKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemContributorsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCoverageKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemSubjectKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemThemeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDescriptionKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemIdentifierKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAudiencesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemNumberOfPagesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPageWidthKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPageHeightKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemSecurityMethodKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemCreatorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemEncodingApplicationsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDueDateKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemStarRatingKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPhoneNumbersKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemEmailAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemInstantMessageAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemKindKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRecipientsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFinderCommentKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemFontsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemAppleLoopsRootKeyKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAppleLoopsKeyFilterTypeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAppleLoopsLoopModeKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAppleLoopDescriptorsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMusicalInstrumentCategoryKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemMusicalInstrumentNameKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemCFBundleIdentifierKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemInformationKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemDirectorKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemProducerKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemGenreKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemPerformersKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemOriginalFormatKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemOriginalSourceKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAuthorEmailAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRecipientEmailAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemAuthorAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemRecipientAddressesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemIsLikelyJunkKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExecutableArchitecturesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemExecutablePlatformKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataItemApplicationCategoriesKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataItemIsApplicationManagedKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSPredicate +#define _REWRITER_typedef_NSPredicate +typedef struct objc_object NSPredicate; +typedef struct {} _objc_exc_NSPredicate; +#endif + +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + +#ifndef _REWRITER_typedef_NSSortDescriptor +#define _REWRITER_typedef_NSSortDescriptor +typedef struct objc_object NSSortDescriptor; +typedef struct {} _objc_exc_NSSortDescriptor; +#endif + +// @class NSMetadataItem; +#ifndef _REWRITER_typedef_NSMetadataItem +#define _REWRITER_typedef_NSMetadataItem +typedef struct objc_object NSMetadataItem; +typedef struct {} _objc_exc_NSMetadataItem; +#endif + +#ifndef _REWRITER_typedef_NSMetadataQueryAttributeValueTuple +#define _REWRITER_typedef_NSMetadataQueryAttributeValueTuple +typedef struct objc_object NSMetadataQueryAttributeValueTuple; +typedef struct {} _objc_exc_NSMetadataQueryAttributeValueTuple; +#endif + +#ifndef _REWRITER_typedef_NSMetadataQueryResultGroup +#define _REWRITER_typedef_NSMetadataQueryResultGroup +typedef struct objc_object NSMetadataQueryResultGroup; +typedef struct {} _objc_exc_NSMetadataQueryResultGroup; +#endif + +// @protocol NSMetadataQueryDelegate; + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMetadataQuery +#define _REWRITER_typedef_NSMetadataQuery +typedef struct objc_object NSMetadataQuery; +typedef struct {} _objc_exc_NSMetadataQuery; +#endif + +struct NSMetadataQuery_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSUInteger _flags; + NSTimeInterval _interval; + id _private[11]; + void *_reserved; +}; + + +// @property (nullable, assign) id delegate; +// @property (nullable, copy) NSPredicate *predicate; +// @property (copy) NSArray *sortDescriptors; +// @property (copy) NSArray *valueListAttributes; +// @property (nullable, copy) NSArray *groupingAttributes; +// @property NSTimeInterval notificationBatchingInterval; + +// @property (copy) NSArray *searchScopes; + + + + + +// @property (nullable, copy) NSArray *searchItems __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (nullable, retain) NSOperationQueue *operationQueue __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (BOOL)startQuery; +// - (void)stopQuery; + +// @property (readonly, getter=isStarted) BOOL started; +// @property (readonly, getter=isGathering) BOOL gathering; +// @property (readonly, getter=isStopped) BOOL stopped; + +// - (void)disableUpdates; +// - (void)enableUpdates; + + + +// @property (readonly) NSUInteger resultCount; +// - (id)resultAtIndex:(NSUInteger)idx; + +// - (void)enumerateResultsUsingBlock:(void (__attribute__((noescape)) ^)(id result, NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (void)enumerateResultsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (__attribute__((noescape)) ^)(id result, NSUInteger idx, BOOL *stop))block __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly, copy) NSArray *results; + +// - (NSUInteger)indexOfResult:(id)result; + +// @property (readonly, copy) NSDictionary *> *valueLists; + +// @property (readonly, copy) NSArray *groupedResults; + +// - (nullable id)valueOfAttribute:(NSString *)attrName forResultAtIndex:(NSUInteger)idx; + +/* @end */ + + +// @protocol NSMetadataQueryDelegate +/* @optional */ + +// - (id)metadataQuery:(NSMetadataQuery *)query replacementObjectForResultObject:(NSMetadataItem *)result; +// - (id)metadataQuery:(NSMetadataQuery *)query replacementValueForAttribute:(NSString *)attrName value:(id)attrValue; + +/* @end */ + + + +extern "C" NSNotificationName const NSMetadataQueryDidStartGatheringNotification __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSMetadataQueryGatheringProgressNotification __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSMetadataQueryDidFinishGatheringNotification __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSMetadataQueryDidUpdateNotification __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSString * const NSMetadataQueryUpdateAddedItemsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataQueryUpdateChangedItemsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataQueryUpdateRemovedItemsKey __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSString * const NSMetadataQueryResultContentRelevanceAttribute __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSString * const NSMetadataQueryUserHomeScope __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataQueryLocalComputerScope __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataQueryNetworkScope __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" NSString * const NSMetadataQueryIndexedLocalComputerScope __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSString * const NSMetadataQueryIndexedNetworkScope __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern "C" NSString * const NSMetadataQueryUbiquitousDocumentsScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataQueryUbiquitousDataScope __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMetadataItem +#define _REWRITER_typedef_NSMetadataItem +typedef struct objc_object NSMetadataItem; +typedef struct {} _objc_exc_NSMetadataItem; +#endif + +struct NSMetadataItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _item; + void *_reserved; +}; + + +// - (nullable instancetype)initWithURL:(NSURL *)url __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// - (nullable id)valueForAttribute:(NSString *)key; +// - (nullable NSDictionary *)valuesForAttributes:(NSArray *)keys; + +// @property (readonly, copy) NSArray *attributes; + +/* @end */ + + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMetadataQueryAttributeValueTuple +#define _REWRITER_typedef_NSMetadataQueryAttributeValueTuple +typedef struct objc_object NSMetadataQueryAttributeValueTuple; +typedef struct {} _objc_exc_NSMetadataQueryAttributeValueTuple; +#endif + +struct NSMetadataQueryAttributeValueTuple_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _attr; + id _value; + NSUInteger _count; + void *_reserved; +}; + + +// @property (readonly, copy) NSString *attribute; +// @property (nullable, readonly, retain) id value; +// @property (readonly) NSUInteger count; + +/* @end */ + + +__attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSMetadataQueryResultGroup +#define _REWRITER_typedef_NSMetadataQueryResultGroup +typedef struct objc_object NSMetadataQueryResultGroup; +typedef struct {} _objc_exc_NSMetadataQueryResultGroup; +#endif + +struct NSMetadataQueryResultGroup_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _private[9]; + NSUInteger _private2[1]; + void *_reserved; +}; + + +// @property (readonly, copy) NSString *attribute; +// @property (readonly, retain) id value; + +// @property (nullable, readonly, copy) NSArray *subgroups; + +// @property (readonly) NSUInteger resultCount; +// - (id)resultAtIndex:(NSUInteger)idx; + +// @property (readonly, copy) NSArray *results; + +/* @end */ + +#pragma clang assume_nonnull end + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSNumber +#define _REWRITER_typedef_NSNumber +typedef struct objc_object NSNumber; +typedef struct {} _objc_exc_NSNumber; +#endif + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @protocol NSNetServiceDelegate, NSNetServiceBrowserDelegate; + +#pragma clang assume_nonnull begin + + + +extern "C" NSString * const NSNetServicesErrorCode; +extern "C" NSErrorDomain const NSNetServicesErrorDomain; + +typedef NSInteger NSNetServicesError; enum { + + + + NSNetServicesUnknownError = -72000L, + + + + NSNetServicesCollisionError = -72001L, + + + + NSNetServicesNotFoundError = -72002L, + + + + NSNetServicesActivityInProgress = -72003L, + + + + NSNetServicesBadArgumentError = -72004L, + + + + NSNetServicesCancelledError = -72005L, + + + + NSNetServicesInvalidError = -72006L, + + + + NSNetServicesTimeoutError = -72007L, + +}; + + +typedef NSUInteger NSNetServiceOptions; enum { + + + + + NSNetServiceNoAutoRename = 1UL << 0, + NSNetServiceListenForConnections __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 1UL << 1 +}; + + + + + +__attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_NSNetService +#define _REWRITER_typedef_NSNetService +typedef struct objc_object NSNetService; +typedef struct {} _objc_exc_NSNetService; +#endif + +struct NSNetService_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _netService; + id _delegate; + id _reserved; +}; + + + + +// - (instancetype)initWithDomain:(NSString *)domain type:(NSString *)type name:(NSString *)name port:(int)port __attribute__((objc_designated_initializer)); + + + + + +// - (instancetype)initWithDomain:(NSString *)domain type:(NSString *)type name:(NSString *)name; + + + +// - (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; +// - (void)removeFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; + + + +// @property (nullable, assign) id delegate; + + + +// @property BOOL includesPeerToPeer __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// @property (readonly, copy) NSString *name; + + + +// @property (readonly, copy) NSString *type; + + + +// @property (readonly, copy) NSString *domain; + + + +// @property (nullable, readonly, copy) NSString *hostName; + + + +// @property (nullable, readonly, copy) NSArray *addresses; + + + +// @property (readonly) NSInteger port __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// - (void)publish; + + + + + +// - (void)publishWithOptions:(NSNetServiceOptions)options __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (void)resolve __attribute__((availability(macos,introduced=10.2,deprecated=10.4,message="Not supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,message="Not supported"))); + + + +// - (void)stop; + + + +// + (NSDictionary *)dictionaryFromTXTRecordData:(NSData *)txtData; + + + +// + (NSData *)dataFromTXTRecordDictionary:(NSDictionary *)txtDictionary; + + + +// - (void)resolveWithTimeout:(NSTimeInterval)timeout; + + + +// - (BOOL)getInputStream:(out __attribute__((objc_ownership(strong))) NSInputStream * _Nullable * _Nullable)inputStream outputStream:(out __attribute__((objc_ownership(strong))) NSOutputStream * _Nullable * _Nullable)outputStream; + + + +// - (BOOL)setTXTRecordData:(nullable NSData *)recordData; + + + +// - (nullable NSData *)TXTRecordData; + + + +// - (void)startMonitoring; + + + +// - (void)stopMonitoring; + + +/* @end */ + + + + +__attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_NSNetServiceBrowser +#define _REWRITER_typedef_NSNetServiceBrowser +typedef struct objc_object NSNetServiceBrowser; +typedef struct {} _objc_exc_NSNetServiceBrowser; +#endif + +struct NSNetServiceBrowser_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _netServiceBrowser; + id _delegate; + void *_reserved; +}; + + +// - (instancetype)init; + + + +// @property (nullable, assign) id delegate; + + + +// @property BOOL includesPeerToPeer __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +// - (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; +// - (void)removeFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSRunLoopMode)mode; + + + +// - (void)searchForBrowsableDomains; + + + +// - (void)searchForRegistrationDomains; + + + +// - (void)searchForServicesOfType:(NSString *)type inDomain:(NSString *)domainString; + + + +// - (void)stop; + +/* @end */ + + + + +__attribute__((availability(watchos,unavailable))) +// @protocol NSNetServiceDelegate +/* @optional */ + + + +// - (void)netServiceWillPublish:(NSNetService *)sender; + + + +// - (void)netServiceDidPublish:(NSNetService *)sender; + + + +// - (void)netService:(NSNetService *)sender didNotPublish:(NSDictionary *)errorDict; + + + +// - (void)netServiceWillResolve:(NSNetService *)sender; + + + +// - (void)netServiceDidResolveAddress:(NSNetService *)sender; + + + +// - (void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict; + + + +// - (void)netServiceDidStop:(NSNetService *)sender; + + + +// - (void)netService:(NSNetService *)sender didUpdateTXTRecordData:(NSData *)data; +// - (void)netService:(NSNetService *)sender didAcceptConnectionWithInputStream:(NSInputStream *)inputStream outputStream:(NSOutputStream *)outputStream __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +/* @end */ + + + + +__attribute__((availability(watchos,unavailable))) +// @protocol NSNetServiceBrowserDelegate +/* @optional */ + + + +// - (void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)browser; + + + +// - (void)netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)browser; + + + +// - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didNotSearch:(NSDictionary *)errorDict; + + + +// - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didFindDomain:(NSString *)domainString moreComing:(BOOL)moreComing; + + + +// - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didFindService:(NSNetService *)service moreComing:(BOOL)moreComing; + + + +// - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didRemoveDomain:(NSString *)domainString moreComing:(BOOL)moreComing; + + + +// - (void)netServiceBrowser:(NSNetServiceBrowser *)browser didRemoveService:(NSNetService *)service moreComing:(BOOL)moreComing; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_NSUbiquitousKeyValueStore +#define _REWRITER_typedef_NSUbiquitousKeyValueStore +typedef struct objc_object NSUbiquitousKeyValueStore; +typedef struct {} _objc_exc_NSUbiquitousKeyValueStore; +#endif + +struct NSUbiquitousKeyValueStore_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _private1; + id _private2; + id _private3; + void *_private4; + void *_reserved[3]; + int _daemonWakeToken; +}; + + +@property (class, readonly, strong) NSUbiquitousKeyValueStore *defaultStore; + +// - (nullable id)objectForKey:(NSString *)aKey; +// - (void)setObject:(nullable id)anObject forKey:(NSString *)aKey; +// - (void)removeObjectForKey:(NSString *)aKey; + +// - (nullable NSString *)stringForKey:(NSString *)aKey; +// - (nullable NSArray *)arrayForKey:(NSString *)aKey; +// - (nullable NSDictionary *)dictionaryForKey:(NSString *)aKey; +// - (nullable NSData *)dataForKey:(NSString *)aKey; +// - (long long)longLongForKey:(NSString *)aKey; +// - (double)doubleForKey:(NSString *)aKey; +// - (BOOL)boolForKey:(NSString *)aKey; + +// - (void)setString:(nullable NSString *)aString forKey:(NSString *)aKey; +// - (void)setData:(nullable NSData *)aData forKey:(NSString *)aKey; +// - (void)setArray:(nullable NSArray *)anArray forKey:(NSString *)aKey; +// - (void)setDictionary:(nullable NSDictionary *)aDictionary forKey:(NSString *)aKey; +// - (void)setLongLong:(long long)value forKey:(NSString *)aKey; +// - (void)setDouble:(double)value forKey:(NSString *)aKey; +// - (void)setBool:(BOOL)value forKey:(NSString *)aKey; + +// @property (readonly, copy) NSDictionary *dictionaryRepresentation; + +// - (BOOL)synchronize; + +/* @end */ + + +extern "C" NSNotificationName const NSUbiquitousKeyValueStoreDidChangeExternallyNotification __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSUbiquitousKeyValueStoreChangeReasonKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSString * const NSUbiquitousKeyValueStoreChangedKeysKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +enum { + NSUbiquitousKeyValueStoreServerChange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSUbiquitousKeyValueStoreInitialSyncChange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSUbiquitousKeyValueStoreQuotaViolationChange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))), + NSUbiquitousKeyValueStoreAccountChange __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) +}; +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + + +static const NSUInteger NSUndoCloseGroupingRunLoopOrdering = 350000; + +__attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSUndoManager +#define _REWRITER_typedef_NSUndoManager +typedef struct objc_object NSUndoManager; +typedef struct {} _objc_exc_NSUndoManager; +#endif + +struct NSUndoManager_IMPL { + struct NSObject_IMPL NSObject_IVARS; + id _undoStack; + id _redoStack; + NSArray *_runLoopModes; + uint64_t _NSUndoManagerPrivate1; + id _target; + id _proxy; + void *_NSUndoManagerPrivate2; + void *_NSUndoManagerPrivate3; +}; + + + + +// - (void)beginUndoGrouping; +// - (void)endUndoGrouping; + + +// @property (readonly) NSInteger groupingLevel; + + + + +// - (void)disableUndoRegistration; +// - (void)enableUndoRegistration; +// @property (readonly, getter=isUndoRegistrationEnabled) BOOL undoRegistrationEnabled; + + + +// @property BOOL groupsByEvent; + + + + + + +// @property NSUInteger levelsOfUndo; + + + + + + +// @property (copy) NSArray *runLoopModes; + + + +// - (void)undo; + + + +// - (void)redo; + + +// - (void)undoNestedGroup; + + + +// @property (readonly) BOOL canUndo; +// @property (readonly) BOOL canRedo; + + +// @property (readonly, getter=isUndoing) BOOL undoing; +// @property (readonly, getter=isRedoing) BOOL redoing; + + + + + +// - (void)removeAllActions; + +// - (void)removeAllActionsWithTarget:(id)target; + + + +// - (void)registerUndoWithTarget:(id)target selector:(SEL)selector object:(nullable id)anObject; + + + +// - (id)prepareWithInvocationTarget:(id)target; +// - (void)registerUndoWithTarget:(id)target handler:(void (^)(id target))undoHandler __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((swift_private)); + +// - (void)setActionIsDiscardable:(BOOL)discardable __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern "C" NSString * const NSUndoManagerGroupIsDiscardableKey __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @property (readonly) BOOL undoActionIsDiscardable __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (readonly) BOOL redoActionIsDiscardable __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// @property (readonly, copy) NSString *undoActionName; +// @property (readonly, copy) NSString *redoActionName; + + + +// - (void)setActionName:(NSString *)actionName; + + + + + +// @property (readonly, copy) NSString *undoMenuItemTitle; +// @property (readonly, copy) NSString *redoMenuItemTitle; + + + + + + +// - (NSString *)undoMenuTitleForUndoActionName:(NSString *)actionName; +// - (NSString *)redoMenuTitleForUndoActionName:(NSString *)actionName; + + + + +/* @end */ + + +extern "C" NSNotificationName const NSUndoManagerCheckpointNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern "C" NSNotificationName const NSUndoManagerWillUndoChangeNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSUndoManagerWillRedoChangeNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSNotificationName const NSUndoManagerDidUndoChangeNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSUndoManagerDidRedoChangeNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +extern "C" NSNotificationName const NSUndoManagerDidOpenUndoGroupNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" NSNotificationName const NSUndoManagerWillCloseUndoGroupNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +extern "C" NSNotificationName const NSUndoManagerDidCloseUndoGroupNotification __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end +extern "C" { + + +#pragma clang assume_nonnull begin +struct SSLContext; +typedef struct __attribute__((objc_bridge(id))) SSLContext *SSLContextRef; + + +typedef const void *SSLConnectionRef; + + +typedef int SSLSessionOption; enum { + + + + + + + + kSSLSessionOptionBreakOnServerAuth __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 0, + + + + + kSSLSessionOptionBreakOnCertRequested __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 1, + + + + + + + kSSLSessionOptionBreakOnClientAuth __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 2, + + + + + + kSSLSessionOptionFalseStart __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 3, + + + + + + kSSLSessionOptionSendOneByteRecord __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 4, + + + + + kSSLSessionOptionAllowServerIdentityChange __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 5, + + + + + kSSLSessionOptionFallback __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 6, + + + + kSSLSessionOptionBreakOnClientHello __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 7, + + + + kSSLSessionOptionAllowRenegotiation __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 8, + + + + kSSLSessionOptionEnableSessionTickets __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) = 9, +}; + + +typedef int SSLSessionState; enum { + kSSLIdle __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLHandshake __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLConnected __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLClosed __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLAborted __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) +}; + + + + + +typedef int SSLClientCertificateState; enum { + + kSSLClientCertNone __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + + kSSLClientCertRequested __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + + + + + + + kSSLClientCertSent __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + + + + + kSSLClientCertRejected __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) +}; +typedef OSStatus +(*SSLReadFunc) (SSLConnectionRef connection, + void *data, + + + size_t *dataLength); +typedef OSStatus +(*SSLWriteFunc) (SSLConnectionRef connection, + const void *data, + size_t *dataLength); +typedef int SSLProtocolSide; enum +{ + kSSLServerSide __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLClientSide __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) +}; + +typedef int SSLConnectionType; enum +{ + kSSLStreamType __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))), + kSSLDatagramType __attribute__((availability(ios,introduced=2_0,deprecated=13_0,message="" ))) +}; + + + + + + +extern const CFStringRef kSSLSessionConfig_default +__attribute__((availability(macos,introduced=10.2,deprecated=10.13,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=11.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_ATSv1 +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_ATSv1_noPFS +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_standard +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_RC4_fallback +__attribute__((availability(macos,introduced=10.2,deprecated=10.13,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=11.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_TLSv1_fallback +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_TLSv1_RC4_fallback +__attribute__((availability(macos,introduced=10.2,deprecated=10.13,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=11.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_legacy +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_legacy_DHE +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_anonymous +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_3DES_fallback +__attribute__((availability(macos,introduced=10.2,deprecated=10.13,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=11.0,message="No longer supported. Use Network.framework."))); + + +extern const CFStringRef kSSLSessionConfig_TLSv1_3DES_fallback +__attribute__((availability(macos,introduced=10.2,deprecated=10.13,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=11.0,message="No longer supported. Use Network.framework."))); +CFTypeID +SSLContextGetTypeID(void) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +_Nullable +SSLContextRef +SSLCreateContext(CFAllocatorRef _Nullable alloc, SSLProtocolSide protocolSide, SSLConnectionType connectionType) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetSessionState (SSLContextRef context, + SSLSessionState *state) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetSessionOption (SSLContextRef context, + SSLSessionOption option, + Boolean value) + __attribute__((availability(macos,introduced=10.6,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetSessionOption (SSLContextRef context, + SSLSessionOption option, + Boolean *value) + __attribute__((availability(macos,introduced=10.6,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetIOFuncs (SSLContextRef context, + SSLReadFunc readFunc, + SSLWriteFunc writeFunc) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetSessionConfig(SSLContextRef context, + CFStringRef config) + __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetProtocolVersionMin (SSLContextRef context, + SSLProtocol minVersion) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetProtocolVersionMin (SSLContextRef context, + SSLProtocol *minVersion) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetProtocolVersionMax (SSLContextRef context, + SSLProtocol maxVersion) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetProtocolVersionMax (SSLContextRef context, + SSLProtocol *maxVersion) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetCertificate (SSLContextRef context, + CFArrayRef _Nullable certRefs) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetConnection (SSLContextRef context, + SSLConnectionRef _Nullable connection) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetConnection (SSLContextRef context, + SSLConnectionRef * _Nonnull __attribute__((cf_returns_not_retained)) connection) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetPeerDomainName (SSLContextRef context, + const char * _Nullable peerName, + size_t peerNameLen) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetPeerDomainNameLength (SSLContextRef context, + size_t *peerNameLen) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetPeerDomainName (SSLContextRef context, + char *peerName, + size_t *peerNameLen) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLCopyRequestedPeerNameLength (SSLContextRef ctx, + size_t *peerNameLen) + __attribute__((availability(macos,introduced=10.11,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=9.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLCopyRequestedPeerName (SSLContextRef context, + char *peerName, + size_t *peerNameLen) + __attribute__((availability(macos,introduced=10.11,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=9.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetDatagramHelloCookie (SSLContextRef dtlsContext, + const void * _Nullable cookie, + size_t cookieLen) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetMaxDatagramRecordSize (SSLContextRef dtlsContext, + size_t maxSize) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetMaxDatagramRecordSize (SSLContextRef dtlsContext, + size_t *maxSize) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetNegotiatedProtocolVersion (SSLContextRef context, + SSLProtocol *protocol) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetNumberSupportedCiphers (SSLContextRef context, + size_t *numCiphers) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetSupportedCiphers (SSLContextRef context, + SSLCipherSuite *ciphers, + size_t *numCiphers) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetNumberEnabledCiphers (SSLContextRef context, + size_t *numCiphers) +__attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetEnabledCiphers (SSLContextRef context, + const SSLCipherSuite *ciphers, + size_t numCiphers) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetEnabledCiphers (SSLContextRef context, + SSLCipherSuite *ciphers, + size_t *numCiphers) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetSessionTicketsEnabled (SSLContextRef context, + Boolean enabled) + __attribute__((availability(macos,introduced=10.13,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLCopyPeerTrust (SSLContextRef context, + SecTrustRef * _Nonnull __attribute__((cf_returns_retained)) trust) + __attribute__((availability(macos,introduced=10.6,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetPeerID (SSLContextRef context, + const void * _Nullable peerID, + size_t peerIDLen) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetPeerID (SSLContextRef context, + const void * _Nullable * _Nonnull peerID, + size_t *peerIDLen) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetNegotiatedCipher (SSLContextRef context, + SSLCipherSuite *cipherSuite) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetALPNProtocols (SSLContextRef context, + CFArrayRef protocols) + __attribute__((availability(macos,introduced=10.13,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLCopyALPNProtocols (SSLContextRef context, + CFArrayRef _Nullable * _Nonnull protocols) + __attribute__((availability(macos,introduced=10.13,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetOCSPResponse (SSLContextRef context, + CFDataRef _Nonnull response) + __attribute__((availability(macos,introduced=10.13,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetEncryptionCertificate (SSLContextRef context, + CFArrayRef certRefs) + __attribute__((availability(macos,introduced=10.2,deprecated=10.11,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=9.0,message="No longer supported. Use Network.framework."))); + + + + + + +typedef int SSLAuthenticate; enum { + kNeverAuthenticate, + kAlwaysAuthenticate, + kTryAuthenticate +}; +OSStatus +SSLSetClientSideAuthenticate (SSLContextRef context, + SSLAuthenticate auth) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLAddDistinguishedName (SSLContextRef context, + const void * _Nullable derDN, + size_t derDNLen) + __attribute__((availability(macos,introduced=10.4,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLCopyDistinguishedNames (SSLContextRef context, + CFArrayRef * _Nonnull __attribute__((cf_returns_retained)) names) + __attribute__((availability(macos,introduced=10.5,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetClientCertificateState (SSLContextRef context, + SSLClientCertificateState *clientState) + __attribute__((availability(macos,introduced=10.3,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLHandshake (SSLContextRef context) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLReHandshake (SSLContextRef context) + __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLWrite (SSLContextRef context, + const void * _Nullable data, + size_t dataLength, + size_t *processed) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLRead (SSLContextRef context, + void * data, + size_t dataLength, + size_t *processed) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetBufferedReadSize (SSLContextRef context, + size_t *bufferSize) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLGetDatagramWriteSize (SSLContextRef dtlsContext, + size_t *bufSize) + __attribute__((availability(macos,introduced=10.8,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); + + + + + + + +OSStatus +SSLClose (SSLContextRef context) + __attribute__((availability(macos,introduced=10.2,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=5.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +OSStatus +SSLSetError (SSLContextRef context, + OSStatus status) + __attribute__((availability(macos,introduced=10.13,deprecated=10.15,message="No longer supported. Use Network.framework."))) __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="No longer supported. Use Network.framework."))); +#pragma clang assume_nonnull end + + + + + + +} + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSError; +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSInputStream; +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +// @class NSOutputStream; +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + +// @class NSOperationQueue; +#ifndef _REWRITER_typedef_NSOperationQueue +#define _REWRITER_typedef_NSOperationQueue +typedef struct objc_object NSOperationQueue; +typedef struct {} _objc_exc_NSOperationQueue; +#endif + + +// @class NSURLCache; +#ifndef _REWRITER_typedef_NSURLCache +#define _REWRITER_typedef_NSURLCache +typedef struct objc_object NSURLCache; +typedef struct {} _objc_exc_NSURLCache; +#endif + +// @class NSURLResponse; +#ifndef _REWRITER_typedef_NSURLResponse +#define _REWRITER_typedef_NSURLResponse +typedef struct objc_object NSURLResponse; +typedef struct {} _objc_exc_NSURLResponse; +#endif + +// @class NSHTTPURLResponse; +#ifndef _REWRITER_typedef_NSHTTPURLResponse +#define _REWRITER_typedef_NSHTTPURLResponse +typedef struct objc_object NSHTTPURLResponse; +typedef struct {} _objc_exc_NSHTTPURLResponse; +#endif + +// @class NSHTTPCookie; +#ifndef _REWRITER_typedef_NSHTTPCookie +#define _REWRITER_typedef_NSHTTPCookie +typedef struct objc_object NSHTTPCookie; +typedef struct {} _objc_exc_NSHTTPCookie; +#endif + +// @class NSCachedURLResponse; +#ifndef _REWRITER_typedef_NSCachedURLResponse +#define _REWRITER_typedef_NSCachedURLResponse +typedef struct objc_object NSCachedURLResponse; +typedef struct {} _objc_exc_NSCachedURLResponse; +#endif + +// @class NSURLAuthenticationChallenge; +#ifndef _REWRITER_typedef_NSURLAuthenticationChallenge +#define _REWRITER_typedef_NSURLAuthenticationChallenge +typedef struct objc_object NSURLAuthenticationChallenge; +typedef struct {} _objc_exc_NSURLAuthenticationChallenge; +#endif + +// @class NSURLProtectionSpace; +#ifndef _REWRITER_typedef_NSURLProtectionSpace +#define _REWRITER_typedef_NSURLProtectionSpace +typedef struct objc_object NSURLProtectionSpace; +typedef struct {} _objc_exc_NSURLProtectionSpace; +#endif + +// @class NSURLCredential; +#ifndef _REWRITER_typedef_NSURLCredential +#define _REWRITER_typedef_NSURLCredential +typedef struct objc_object NSURLCredential; +typedef struct {} _objc_exc_NSURLCredential; +#endif + +// @class NSURLCredentialStorage; +#ifndef _REWRITER_typedef_NSURLCredentialStorage +#define _REWRITER_typedef_NSURLCredentialStorage +typedef struct objc_object NSURLCredentialStorage; +typedef struct {} _objc_exc_NSURLCredentialStorage; +#endif + +// @class NSURLSessionDataTask; +#ifndef _REWRITER_typedef_NSURLSessionDataTask +#define _REWRITER_typedef_NSURLSessionDataTask +typedef struct objc_object NSURLSessionDataTask; +typedef struct {} _objc_exc_NSURLSessionDataTask; +#endif + +// @class NSURLSessionUploadTask; +#ifndef _REWRITER_typedef_NSURLSessionUploadTask +#define _REWRITER_typedef_NSURLSessionUploadTask +typedef struct objc_object NSURLSessionUploadTask; +typedef struct {} _objc_exc_NSURLSessionUploadTask; +#endif + +// @class NSURLSessionDownloadTask; +#ifndef _REWRITER_typedef_NSURLSessionDownloadTask +#define _REWRITER_typedef_NSURLSessionDownloadTask +typedef struct objc_object NSURLSessionDownloadTask; +typedef struct {} _objc_exc_NSURLSessionDownloadTask; +#endif + +// @class NSNetService; +#ifndef _REWRITER_typedef_NSNetService +#define _REWRITER_typedef_NSNetService +typedef struct objc_object NSNetService; +typedef struct {} _objc_exc_NSNetService; +#endif + +// @class NSURLSession; +#ifndef _REWRITER_typedef_NSURLSession +#define _REWRITER_typedef_NSURLSession +typedef struct objc_object NSURLSession; +typedef struct {} _objc_exc_NSURLSession; +#endif + +// @class NSURLSessionDataTask; +#ifndef _REWRITER_typedef_NSURLSessionDataTask +#define _REWRITER_typedef_NSURLSessionDataTask +typedef struct objc_object NSURLSessionDataTask; +typedef struct {} _objc_exc_NSURLSessionDataTask; +#endif + +// @class NSURLSessionUploadTask; +#ifndef _REWRITER_typedef_NSURLSessionUploadTask +#define _REWRITER_typedef_NSURLSessionUploadTask +typedef struct objc_object NSURLSessionUploadTask; +typedef struct {} _objc_exc_NSURLSessionUploadTask; +#endif + +// @class NSURLSessionDownloadTask; +#ifndef _REWRITER_typedef_NSURLSessionDownloadTask +#define _REWRITER_typedef_NSURLSessionDownloadTask +typedef struct objc_object NSURLSessionDownloadTask; +typedef struct {} _objc_exc_NSURLSessionDownloadTask; +#endif + +// @class NSURLSessionStreamTask; +#ifndef _REWRITER_typedef_NSURLSessionStreamTask +#define _REWRITER_typedef_NSURLSessionStreamTask +typedef struct objc_object NSURLSessionStreamTask; +typedef struct {} _objc_exc_NSURLSessionStreamTask; +#endif + +// @class NSURLSessionWebSocketTask; +#ifndef _REWRITER_typedef_NSURLSessionWebSocketTask +#define _REWRITER_typedef_NSURLSessionWebSocketTask +typedef struct objc_object NSURLSessionWebSocketTask; +typedef struct {} _objc_exc_NSURLSessionWebSocketTask; +#endif + + +// @class NSURLSessionConfiguration; +#ifndef _REWRITER_typedef_NSURLSessionConfiguration +#define _REWRITER_typedef_NSURLSessionConfiguration +typedef struct objc_object NSURLSessionConfiguration; +typedef struct {} _objc_exc_NSURLSessionConfiguration; +#endif + +// @protocol NSURLSessionDelegate; + +// @class NSURLSessionTaskMetrics; +#ifndef _REWRITER_typedef_NSURLSessionTaskMetrics +#define _REWRITER_typedef_NSURLSessionTaskMetrics +typedef struct objc_object NSURLSessionTaskMetrics; +typedef struct {} _objc_exc_NSURLSessionTaskMetrics; +#endif + +// @class NSDateInterval; +#ifndef _REWRITER_typedef_NSDateInterval +#define _REWRITER_typedef_NSDateInterval +typedef struct objc_object NSDateInterval; +typedef struct {} _objc_exc_NSDateInterval; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" const int64_t NSURLSessionTransferSizeUnknown __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSURLSession +#define _REWRITER_typedef_NSURLSession +typedef struct objc_object NSURLSession; +typedef struct {} _objc_exc_NSURLSession; +#endif + +struct NSURLSession_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + +@property (class, readonly, strong) NSURLSession *sharedSession; +// + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration; +// + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id )delegate delegateQueue:(nullable NSOperationQueue *)queue; + +// @property (readonly, retain) NSOperationQueue *delegateQueue; +// @property (nullable, readonly, retain) id delegate; +// @property (readonly, copy) NSURLSessionConfiguration *configuration; + + + + + +// @property (nullable, copy) NSString *sessionDescription; +// - (void)finishTasksAndInvalidate; + + + + + + +// - (void)invalidateAndCancel; + +// - (void)resetWithCompletionHandler:(void (^)(void))completionHandler; +// - (void)flushWithCompletionHandler:(void (^)(void))completionHandler; + +// - (void)getTasksWithCompletionHandler:(void (^)(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks))completionHandler; + +// - (void)getAllTasksWithCompletionHandler:(void (^)(NSArray<__kindof NSURLSessionTask *> *tasks))completionHandler __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +// - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request; + + +// - (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url; + + +// - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL; + + +// - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData; + + +// - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request; + + +// - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request; + + +// - (NSURLSessionDownloadTask *)downloadTaskWithURL:(NSURL *)url; + + +// - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData; + + + +// - (NSURLSessionStreamTask *)streamTaskWithHostName:(NSString *)hostname port:(NSInteger)port __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// - (NSURLSessionStreamTask *)streamTaskWithNetService:(NSNetService *)service __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + +// - (NSURLSessionWebSocketTask *)webSocketTaskWithURL:(NSURL *)url __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// - (NSURLSessionWebSocketTask *)webSocketTaskWithURL:(NSURL *)url protocols:(NSArray*)protocols __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// - (NSURLSessionWebSocketTask *)webSocketTaskWithRequest:(NSURLRequest *)request __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use +[NSURLSession sessionWithConfiguration:] or other class methods to create instances"))); + +/* @end */ + +// @interface NSURLSession (NSURLSessionAsynchronousConvenience) +// - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; +// - (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; + + + + +// - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL completionHandler:(void (^)(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; +// - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(nullable NSData *)bodyData completionHandler:(void (^)(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; + + + + + + + +// - (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; +// - (NSURLSessionDownloadTask *)downloadTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; +// - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData completionHandler:(void (^)(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error))completionHandler; + +/* @end */ + + +typedef NSInteger NSURLSessionTaskState; enum { + NSURLSessionTaskStateRunning = 0, + NSURLSessionTaskStateSuspended = 1, + NSURLSessionTaskStateCanceling = 2, + NSURLSessionTaskStateCompleted = 3, +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSURLSessionTask +#define _REWRITER_typedef_NSURLSessionTask +typedef struct objc_object NSURLSessionTask; +typedef struct {} _objc_exc_NSURLSessionTask; +#endif + +struct NSURLSessionTask_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (readonly) NSUInteger taskIdentifier; +// @property (nullable, readonly, copy) NSURLRequest *originalRequest; +// @property (nullable, readonly, copy) NSURLRequest *currentRequest; +// @property (nullable, readonly, copy) NSURLResponse *response; + + + + + +// @property (readonly, strong) NSProgress *progress __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property (nullable, copy) NSDate *earliestBeginDate __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + + +// @property int64_t countOfBytesClientExpectsToSend __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property int64_t countOfBytesClientExpectsToReceive __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property (readonly) int64_t countOfBytesReceived; + + +// @property (readonly) int64_t countOfBytesSent; + + +// @property (readonly) int64_t countOfBytesExpectedToSend; + + +// @property (readonly) int64_t countOfBytesExpectedToReceive; + + + + + +// @property (nullable, copy) NSString *taskDescription; + + + + + + + +// - (void)cancel; + + + + +// @property (readonly) NSURLSessionTaskState state; + + + + + +// @property (nullable, readonly, copy) NSError *error; +// - (void)suspend; +// - (void)resume; +// @property float priority __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Not supported"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Not supported"))); + +/* @end */ + + +extern "C" const float NSURLSessionTaskPriorityDefault __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" const float NSURLSessionTaskPriorityLow __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern "C" const float NSURLSessionTaskPriorityHigh __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +#ifndef _REWRITER_typedef_NSURLSessionDataTask +#define _REWRITER_typedef_NSURLSessionDataTask +typedef struct objc_object NSURLSessionDataTask; +typedef struct {} _objc_exc_NSURLSessionDataTask; +#endif + +struct NSURLSessionDataTask_IMPL { + struct NSURLSessionTask_IMPL NSURLSessionTask_IVARS; +}; + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession dataTaskWithRequest:] or other NSURLSession methods to create instances"))); + +/* @end */ + + + + + + + + + +#ifndef _REWRITER_typedef_NSURLSessionUploadTask +#define _REWRITER_typedef_NSURLSessionUploadTask +typedef struct objc_object NSURLSessionUploadTask; +typedef struct {} _objc_exc_NSURLSessionUploadTask; +#endif + +struct NSURLSessionUploadTask_IMPL { + struct NSURLSessionDataTask_IMPL NSURLSessionDataTask_IVARS; +}; + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession uploadTaskWithStreamedRequest:] or other NSURLSession methods to create instances"))); + +/* @end */ + + + + + + + +#ifndef _REWRITER_typedef_NSURLSessionDownloadTask +#define _REWRITER_typedef_NSURLSessionDownloadTask +typedef struct objc_object NSURLSessionDownloadTask; +typedef struct {} _objc_exc_NSURLSessionDownloadTask; +#endif + +struct NSURLSessionDownloadTask_IMPL { + struct NSURLSessionTask_IMPL NSURLSessionTask_IVARS; +}; + +// - (void)cancelByProducingResumeData:(void (^)(NSData * _Nullable resumeData))completionHandler; + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession downloadTaskWithRequest:] or other NSURLSession methods to create instances"))); + +/* @end */ + +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSURLSessionStreamTask +#define _REWRITER_typedef_NSURLSessionStreamTask +typedef struct objc_object NSURLSessionStreamTask; +typedef struct {} _objc_exc_NSURLSessionStreamTask; +#endif + +struct NSURLSessionStreamTask_IMPL { + struct NSURLSessionTask_IMPL NSURLSessionTask_IVARS; +}; + + + + + + + +// - (void)readDataOfMinLength:(NSUInteger)minBytes maxLength:(NSUInteger)maxBytes timeout:(NSTimeInterval)timeout completionHandler:(void (^) (NSData * _Nullable data, BOOL atEOF, NSError * _Nullable error))completionHandler; + + + + + + +// - (void)writeData:(NSData *)data timeout:(NSTimeInterval)timeout completionHandler:(void (^) (NSError * _Nullable error))completionHandler; + + + + + + + +// - (void)captureStreams; + + + + + + + +// - (void)closeWrite; + + + + + +// - (void)closeRead; + + + + + + +// - (void)startSecureConnection; + + + + + + + +// - (void)stopSecureConnection __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="TLS cannot be disabled once it is enabled"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="TLS cannot be disabled once it is enabled"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="TLS cannot be disabled once it is enabled"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="TLS cannot be disabled once it is enabled"))); + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use -[NSURLSession streamTaskWithHostName:port:] or other NSURLSession methods to create instances"))); + +/* @end */ + + +typedef NSInteger NSURLSessionWebSocketMessageType; enum { + NSURLSessionWebSocketMessageTypeData = 0, + NSURLSessionWebSocketMessageTypeString = 1, +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSURLSessionWebSocketMessage +#define _REWRITER_typedef_NSURLSessionWebSocketMessage +typedef struct objc_object NSURLSessionWebSocketMessage; +typedef struct {} _objc_exc_NSURLSessionWebSocketMessage; +#endif + +struct NSURLSessionWebSocketMessage_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithData:(NSData *)data __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initWithString:(NSString *)string __attribute__((objc_designated_initializer)); + +// @property (readonly) NSURLSessionWebSocketMessageType type; +// @property (nullable, readonly, copy) NSData *data; +// @property (nullable, readonly, copy) NSString *string; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + + + + +typedef NSInteger NSURLSessionWebSocketCloseCode; enum +{ + NSURLSessionWebSocketCloseCodeInvalid = 0, + NSURLSessionWebSocketCloseCodeNormalClosure = 1000, + NSURLSessionWebSocketCloseCodeGoingAway = 1001, + NSURLSessionWebSocketCloseCodeProtocolError = 1002, + NSURLSessionWebSocketCloseCodeUnsupportedData = 1003, + NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005, + NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006, + NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007, + NSURLSessionWebSocketCloseCodePolicyViolation = 1008, + NSURLSessionWebSocketCloseCodeMessageTooBig = 1009, + NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = 1010, + NSURLSessionWebSocketCloseCodeInternalServerError = 1011, + NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015, +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) + +#ifndef _REWRITER_typedef_NSURLSessionWebSocketTask +#define _REWRITER_typedef_NSURLSessionWebSocketTask +typedef struct objc_object NSURLSessionWebSocketTask; +typedef struct {} _objc_exc_NSURLSessionWebSocketTask; +#endif + +struct NSURLSessionWebSocketTask_IMPL { + struct NSURLSessionTask_IMPL NSURLSessionTask_IVARS; +}; + + + + + + + +// - (void)sendMessage:(NSURLSessionWebSocketMessage *)message completionHandler:(void (^)(NSError * _Nullable error))completionHandler; + + + + + +// - (void)receiveMessageWithCompletionHandler:(void (^)(NSURLSessionWebSocketMessage* _Nullable message, NSError * _Nullable error))completionHandler; + + + + + + +// - (void)sendPingWithPongReceiveHandler:(void (^)(NSError* _Nullable error))pongReceiveHandler; + + + + +// - (void)cancelWithCloseCode:(NSURLSessionWebSocketCloseCode)closeCode reason:(NSData * _Nullable)reason; + +// @property NSInteger maximumMessageSize; +// @property (readonly) NSURLSessionWebSocketCloseCode closeCode; +// @property (nullable, readonly, copy) NSData *closeReason; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +typedef NSInteger NSURLSessionMultipathServiceType; enum +{ + NSURLSessionMultipathServiceTypeNone = 0, + NSURLSessionMultipathServiceTypeHandover = 1, + NSURLSessionMultipathServiceTypeInteractive = 2, + NSURLSessionMultipathServiceTypeAggregate = 3 +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_name("URLSessionConfiguration.MultipathServiceType"))); +__attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSURLSessionConfiguration +#define _REWRITER_typedef_NSURLSessionConfiguration +typedef struct objc_object NSURLSessionConfiguration; +typedef struct {} _objc_exc_NSURLSessionConfiguration; +#endif + +struct NSURLSessionConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (class, readonly, strong) NSURLSessionConfiguration *defaultSessionConfiguration; +@property (class, readonly, strong) NSURLSessionConfiguration *ephemeralSessionConfiguration; + +// + (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// @property (nullable, readonly, copy) NSString *identifier; + + +// @property NSURLRequestCachePolicy requestCachePolicy; + + +// @property NSTimeInterval timeoutIntervalForRequest; + + +// @property NSTimeInterval timeoutIntervalForResource; + + +// @property NSURLRequestNetworkServiceType networkServiceType; + + +// @property BOOL allowsCellularAccess; + + +// @property BOOL allowsExpensiveNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// @property BOOL allowsConstrainedNetworkAccess __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property BOOL waitsForConnectivity __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// @property (getter=isDiscretionary) BOOL discretionary __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +// @property (nullable, copy) NSString *sharedContainerIdentifier __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// @property BOOL sessionSendsLaunchEvents __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + + +// @property (nullable, copy) NSDictionary *connectionProxyDictionary; + + +// @property SSLProtocol TLSMinimumSupportedProtocol __attribute__((availability(macos,introduced=10.9,deprecated=100000,replacement="TLSMinimumSupportedProtocolVersion"))) __attribute__((availability(ios,introduced=7.0,deprecated=100000,replacement="TLSMinimumSupportedProtocolVersion"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="TLSMinimumSupportedProtocolVersion"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="TLSMinimumSupportedProtocolVersion"))); + + +// @property SSLProtocol TLSMaximumSupportedProtocol __attribute__((availability(macos,introduced=10.9,deprecated=100000,replacement="TLSMaximumSupportedProtocolVersion"))) __attribute__((availability(ios,introduced=7.0,deprecated=100000,replacement="TLSMaximumSupportedProtocolVersion"))) __attribute__((availability(watchos,introduced=2.0,deprecated=100000,replacement="TLSMaximumSupportedProtocolVersion"))) __attribute__((availability(tvos,introduced=9.0,deprecated=100000,replacement="TLSMaximumSupportedProtocolVersion"))); + + +// @property tls_protocol_version_t TLSMinimumSupportedProtocolVersion __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// @property tls_protocol_version_t TLSMaximumSupportedProtocolVersion __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// @property BOOL HTTPShouldUsePipelining; + + +// @property BOOL HTTPShouldSetCookies; + + +// @property NSHTTPCookieAcceptPolicy HTTPCookieAcceptPolicy; + + + +// @property (nullable, copy) NSDictionary *HTTPAdditionalHeaders; + + +// @property NSInteger HTTPMaximumConnectionsPerHost; + + +// @property (nullable, retain) NSHTTPCookieStorage *HTTPCookieStorage; + + +// @property (nullable, retain) NSURLCredentialStorage *URLCredentialStorage; + + +// @property (nullable, retain) NSURLCache *URLCache; + + + + +// @property BOOL shouldUseExtendedBackgroundIdleMode __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property (nullable, copy) NSArray *protocolClasses; + + +// @property NSURLSessionMultipathServiceType multipathServiceType __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.9,deprecated=10.15,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use NSURLSessionConfiguration.defaultSessionConfiguration or other class methods to create instances"))); + +/* @end */ + + + + + +typedef NSInteger NSURLSessionDelayedRequestDisposition; enum { + NSURLSessionDelayedRequestContinueLoading = 0, + NSURLSessionDelayedRequestUseNewRequest = 1, + NSURLSessionDelayedRequestCancel = 2, +} __attribute__((swift_name("URLSession.DelayedRequestDisposition"))) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef NSInteger NSURLSessionAuthChallengeDisposition; enum { + NSURLSessionAuthChallengeUseCredential = 0, + NSURLSessionAuthChallengePerformDefaultHandling = 1, + NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2, + NSURLSessionAuthChallengeRejectProtectionSpace = 3, +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSInteger NSURLSessionResponseDisposition; enum { + NSURLSessionResponseCancel = 0, + NSURLSessionResponseAllow = 1, + NSURLSessionResponseBecomeDownload = 2, + NSURLSessionResponseBecomeStream __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) = 3, +} __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @protocol NSURLSessionDelegate +/* @optional */ + + + + + +// - (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(nullable NSError *)error; +#if 0 +- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler; +#endif + +// - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))); + +/* @end */ + + + + + +// @protocol NSURLSessionTaskDelegate +/* @optional */ +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + willBeginDelayedRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLSessionDelayedRequestDisposition disposition, NSURLRequest * _Nullable newRequest))completionHandler + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + +#if 0 +- (void)URLSession:(NSURLSession *)session taskIsWaitingForConnectivity:(NSURLSessionTask *)task + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); +#endif + +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest * _Nullable))completionHandler; +#endif + + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler; +#endif + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + needNewBodyStream:(void (^)(NSInputStream * _Nullable bodyStream))completionHandler; +#endif + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent + totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend; +#endif + + + + + +// - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task + didCompleteWithError:(nullable NSError *)error; +#endif + + +/* @end */ + + + + + + +// @protocol NSURLSessionDataDelegate +/* @optional */ +#if 0 +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler; +#endif + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask; +#endif + +#if 0 +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + didBecomeStreamTask:(NSURLSessionStreamTask *)streamTask; +#endif + + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data; +#endif + + + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse * _Nullable cachedResponse))completionHandler; +#endif + + +/* @end */ + + + + + + +// @protocol NSURLSessionDownloadDelegate + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask + didFinishDownloadingToURL:(NSURL *)location; +#endif + + +/* @optional */ + +#if 0 +- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten + totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite; +#endif + + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset + expectedTotalBytes:(int64_t)expectedTotalBytes; +#endif + + +/* @end */ + + +// @protocol NSURLSessionStreamDelegate +/* @optional */ + + + + + + + +// - (void)URLSession:(NSURLSession *)session readClosedForStreamTask:(NSURLSessionStreamTask *)streamTask; + + + + + +// - (void)URLSession:(NSURLSession *)session writeClosedForStreamTask:(NSURLSessionStreamTask *)streamTask; +// - (void)URLSession:(NSURLSession *)session betterRouteDiscoveredForStreamTask:(NSURLSessionStreamTask *)streamTask; + + + + + + + +#if 0 +- (void)URLSession:(NSURLSession *)session streamTask:(NSURLSessionStreamTask *)streamTask + didBecomeInputStream:(NSInputStream *)inputStream + outputStream:(NSOutputStream *)outputStream; +#endif + + +/* @end */ + + +__attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))) +// @protocol NSURLSessionWebSocketDelegate +/* @optional */ + + + + +// - (void)URLSession:(NSURLSession *)session webSocketTask:(NSURLSessionWebSocketTask *)webSocketTask didOpenWithProtocol:(NSString * _Nullable) protocol; + + + + + +// - (void)URLSession:(NSURLSession *)session webSocketTask:(NSURLSessionWebSocketTask *)webSocketTask didCloseWithCode:(NSURLSessionWebSocketCloseCode)closeCode reason:(NSData * _Nullable)reason; + +/* @end */ + + + +extern "C" NSString * const NSURLSessionDownloadTaskResumeData __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +// @interface NSURLSessionConfiguration (NSURLSessionDeprecated) +// + (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier __attribute__((availability(macos,introduced=10.9,deprecated=10.10,replacement="-backgroundSessionConfigurationWithIdentifier:"))) __attribute__((availability(ios,introduced=7.0,deprecated=8.0,replacement="-backgroundSessionConfigurationWithIdentifier:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=2.0,replacement="-backgroundSessionConfigurationWithIdentifier:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=9.0,replacement="-backgroundSessionConfigurationWithIdentifier:"))); +/* @end */ + + + + + +typedef NSInteger NSURLSessionTaskMetricsResourceFetchType; enum { + NSURLSessionTaskMetricsResourceFetchTypeUnknown, + NSURLSessionTaskMetricsResourceFetchTypeNetworkLoad, + NSURLSessionTaskMetricsResourceFetchTypeServerPush, + NSURLSessionTaskMetricsResourceFetchTypeLocalCache, +} __attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSURLSessionTaskTransactionMetrics +#define _REWRITER_typedef_NSURLSessionTaskTransactionMetrics +typedef struct objc_object NSURLSessionTaskTransactionMetrics; +typedef struct {} _objc_exc_NSURLSessionTaskTransactionMetrics; +#endif + +struct NSURLSessionTaskTransactionMetrics_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// @property (copy, readonly) NSURLRequest *request; + + + + +// @property (nullable, copy, readonly) NSURLResponse *response; +// @property (nullable, copy, readonly) NSDate *fetchStartDate; + + + + +// @property (nullable, copy, readonly) NSDate *domainLookupStartDate; + + + + +// @property (nullable, copy, readonly) NSDate *domainLookupEndDate; + + + + + + +// @property (nullable, copy, readonly) NSDate *connectStartDate; +// @property (nullable, copy, readonly) NSDate *secureConnectionStartDate; + + + + + + +// @property (nullable, copy, readonly) NSDate *secureConnectionEndDate; + + + + +// @property (nullable, copy, readonly) NSDate *connectEndDate; + + + + + + +// @property (nullable, copy, readonly) NSDate *requestStartDate; + + + + + + +// @property (nullable, copy, readonly) NSDate *requestEndDate; + + + + + + +// @property (nullable, copy, readonly) NSDate *responseStartDate; + + + + +// @property (nullable, copy, readonly) NSDate *responseEndDate; +// @property (nullable, copy, readonly) NSString *networkProtocolName; + + + + +// @property (assign, readonly, getter=isProxyConnection) BOOL proxyConnection; + + + + +// @property (assign, readonly, getter=isReusedConnection) BOOL reusedConnection; + + + + +// @property (assign, readonly) NSURLSessionTaskMetricsResourceFetchType resourceFetchType; + + + + +// @property (readonly) int64_t countOfRequestHeaderBytesSent __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// @property (readonly) int64_t countOfRequestBodyBytesSent __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly) int64_t countOfRequestBodyBytesBeforeEncoding __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly) int64_t countOfResponseHeaderBytesReceived __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// @property (readonly) int64_t countOfResponseBodyBytesReceived __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly) int64_t countOfResponseBodyBytesAfterDecoding __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSString *localAddress __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSNumber *localPort __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSString *remoteAddress __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSNumber *remotePort __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSNumber *negotiatedTLSProtocolVersion __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (nullable, copy, readonly) NSNumber *negotiatedTLSCipherSuite __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly, getter=isCellular) BOOL cellular __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly, getter=isExpensive) BOOL expensive __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly, getter=isConstrained) BOOL constrained __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (readonly, getter=isMultipath) BOOL multipath __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=3.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=10.0,deprecated=13.0,message="Not supported"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=3.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=10.0,deprecated=13.0,message="Not supported"))); + +/* @end */ + + + +__attribute__((availability(macosx,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))) + +#ifndef _REWRITER_typedef_NSURLSessionTaskMetrics +#define _REWRITER_typedef_NSURLSessionTaskMetrics +typedef struct objc_object NSURLSessionTaskMetrics; +typedef struct {} _objc_exc_NSURLSessionTaskMetrics; +#endif + +struct NSURLSessionTaskMetrics_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// @property (copy, readonly) NSArray *transactionMetrics; + + + + + + +// @property (copy, readonly) NSDateInterval *taskInterval; + + + + +// @property (assign, readonly) NSUInteger redirectCount; + + +// - (instancetype)init __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=3.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=10.0,deprecated=13.0,message="Not supported"))); +// + (instancetype)new __attribute__((availability(macos,introduced=10.12,deprecated=10.15,message="Not supported"))) __attribute__((availability(ios,introduced=10.0,deprecated=13.0,message="Not supported"))) __attribute__((availability(watchos,introduced=3.0,deprecated=6.0,message="Not supported"))) __attribute__((availability(tvos,introduced=10.0,deprecated=13.0,message="Not supported"))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +#ifndef _REWRITER_typedef_NSInputStream +#define _REWRITER_typedef_NSInputStream +typedef struct objc_object NSInputStream; +typedef struct {} _objc_exc_NSInputStream; +#endif + +#ifndef _REWRITER_typedef_NSOutputStream +#define _REWRITER_typedef_NSOutputStream +typedef struct objc_object NSOutputStream; +typedef struct {} _objc_exc_NSOutputStream; +#endif + +#ifndef _REWRITER_typedef_NSError +#define _REWRITER_typedef_NSError +typedef struct objc_object NSError; +typedef struct {} _objc_exc_NSError; +#endif + +// @protocol NSUserActivityDelegate; + +typedef NSString* NSUserActivityPersistentIdentifier __attribute__((swift_bridged_typedef)); + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSUserActivity +#define _REWRITER_typedef_NSUserActivity +typedef struct objc_object NSUserActivity; +typedef struct {} _objc_exc_NSUserActivity; +#endif + +struct NSUserActivity_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithActivityType:(NSString *)activityType __attribute__((objc_designated_initializer)); + + + +// - (instancetype)init __attribute__((availability(macosx,introduced=10.10,deprecated=10.12,message="Use initWithActivityType: with a specific activity type string"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use initWithActivityType: with a specific activity type string"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="Use initWithActivityType: with a specific activity type string"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="Use initWithActivityType: with a specific activity type string"))); + + + +// @property (readonly, copy) NSString *activityType; + + + +// @property (nullable, copy) NSString *title; + + + +// @property (nullable, copy) NSDictionary *userInfo; + + + +// - (void)addUserInfoEntriesFromDictionary:(NSDictionary *)otherDictionary; + + +// @property (nullable, copy) NSSet *requiredUserInfoKeys __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + +// @property (assign) BOOL needsSave; + + + +// @property (nullable, copy) NSURL *webpageURL; + + + +// @property (nullable, copy) NSURL *referrerURL __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// @property (nullable, copy) NSDate *expirationDate __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +// @property (copy) NSSet *keywords __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + +// @property BOOL supportsContinuationStreams; + + + +// @property (nullable, weak) id delegate; + + + + +// @property (nullable, copy) NSString* targetContentIdentifier __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + +// - (void)becomeCurrent; + + +// - (void)resignCurrent __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + +// - (void)invalidate; + + + +// - (void)getContinuationStreamsWithCompletionHandler:(void (^)(NSInputStream * _Nullable inputStream, NSOutputStream * _Nullable outputStream, NSError * _Nullable error))completionHandler; + + +// @property (getter=isEligibleForHandoff) BOOL eligibleForHandoff __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +// @property (getter=isEligibleForSearch) BOOL eligibleForSearch __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + +// @property (getter=isEligibleForPublicIndexing) BOOL eligibleForPublicIndexing __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +// @property (getter=isEligibleForPrediction) BOOL eligibleForPrediction __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// @property (copy, nullable) NSUserActivityPersistentIdentifier persistentIdentifier __attribute__((availability(macos,introduced=15.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + +// +(void) deleteSavedUserActivitiesWithPersistentIdentifiers:(NSArray*) persistentIdentifiers completionHandler:(void(^)(void))handler __attribute__((availability(macos,introduced=15.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +// +(void) deleteAllSavedUserActivitiesWithCompletionHandler:(void(^)(void))handler __attribute__((availability(macos,introduced=15.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +extern "C" NSString * const NSUserActivityTypeBrowsingWeb; + + + +__attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=9.0))) +// @protocol NSUserActivityDelegate +/* @optional */ + + + +// - (void)userActivityWillSave:(NSUserActivity *)userActivity; + + + +// - (void)userActivityWasContinued:(NSUserActivity *)userActivity; + + + +// - (void)userActivity:(NSUserActivity *)userActivity didReceiveInputStream:(NSInputStream *) inputStream outputStream:(NSOutputStream *)outputStream; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +typedef __darwin_uuid_string_t uuid_string_t; + + + + + +static const uuid_t UUID_NULL __attribute__ ((unused)) = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + + +extern "C" { + + +void uuid_clear(uuid_t uu); + +int uuid_compare(const uuid_t uu1, const uuid_t uu2); + +void uuid_copy(uuid_t dst, const uuid_t src); + +void uuid_generate(uuid_t out); +void uuid_generate_random(uuid_t out); +void uuid_generate_time(uuid_t out); + +void uuid_generate_early_random(uuid_t out); + +int uuid_is_null(const uuid_t uu); + +int uuid_parse(const uuid_string_t in, uuid_t uu); + +void uuid_unparse(const uuid_t uu, uuid_string_t out); +void uuid_unparse_lower(const uuid_t uu, uuid_string_t out); +void uuid_unparse_upper(const uuid_t uu, uuid_string_t out); + + +} + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSUUID +#define _REWRITER_typedef_NSUUID +typedef struct objc_object NSUUID; +typedef struct {} _objc_exc_NSUUID; +#endif + +struct NSUUID_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (instancetype)UUID; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); + + +// - (nullable instancetype)initWithUUIDString:(NSString *)string; + + +// - (instancetype)initWithUUIDBytes:(const uuid_t _Nullable)bytes; + + +// - (void)getUUIDBytes:(uuid_t _Nonnull)uuid; + + +// @property (readonly, copy) NSString *UUIDString; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + +#pragma clang assume_nonnull begin + +typedef double UIAccelerationValue __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="UIAcceleration has been replaced by the CoreMotion framework"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="UIAcceleration has been replaced by the CoreMotion framework"))); + +// @protocol UIAccelerometerDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message="UIAcceleration has been replaced by the CoreMotion framework"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIAcceleration +#define _REWRITER_typedef_UIAcceleration +typedef struct objc_object UIAcceleration; +typedef struct {} _objc_exc_UIAcceleration; +#endif + +struct UIAcceleration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic,readonly) NSTimeInterval timestamp; +// @property(nonatomic,readonly) UIAccelerationValue x; +// @property(nonatomic,readonly) UIAccelerationValue y; +// @property(nonatomic,readonly) UIAccelerationValue z; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message="UIAccelerometer has been replaced by the CoreMotion framework"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIAccelerometer +#define _REWRITER_typedef_UIAccelerometer +typedef struct objc_object UIAccelerometer; +typedef struct {} _objc_exc_UIAccelerometer; +#endif + +struct UIAccelerometer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (UIAccelerometer *)sharedAccelerometer; + +// @property(nonatomic) NSTimeInterval updateInterval; +// @property(nullable,nonatomic,weak) id delegate; + +/* @end */ + + + __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="UIAcceleration has been replaced by the CoreMotion framework"))) +// @protocol UIAccelerometerDelegate +/* @optional */ + +// - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + +typedef double CGFloat; +typedef struct __attribute__((objc_bridge(id))) __IOSurface *IOSurfaceRef __attribute__((swift_name("IOSurfaceRef"))); + + + + + + + + +typedef struct CGAffineTransform CGAffineTransform; + + + +#pragma clang assume_nonnull begin + + +struct +CGPoint { + CGFloat x; + CGFloat y; +}; +typedef struct __attribute__((objc_boxable)) CGPoint CGPoint; + + + +struct CGSize { + CGFloat width; + CGFloat height; +}; +typedef struct __attribute__((objc_boxable)) CGSize CGSize; + + + + + +struct CGVector { + CGFloat dx; + CGFloat dy; +}; +typedef struct __attribute__((objc_boxable)) CGVector CGVector; + + + +struct CGRect { + CGPoint origin; + CGSize size; +}; +typedef struct __attribute__((objc_boxable)) CGRect CGRect; + + + +typedef uint32_t CGRectEdge; enum { + CGRectMinXEdge, CGRectMinYEdge, CGRectMaxXEdge, CGRectMaxYEdge +}; + + + +extern "C" __attribute__((visibility("default"))) const CGPoint CGPointZero + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const CGSize CGSizeZero + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const CGRect CGRectZero + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CGRect CGRectNull + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const CGRect CGRectInfinite + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +static inline CGPoint CGPointMake(CGFloat x, CGFloat y); + + + +static inline CGSize CGSizeMake(CGFloat width, CGFloat height); + + + +static inline CGVector CGVectorMake(CGFloat dx, CGFloat dy); + + + +static inline CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, + CGFloat height); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMinX(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMidX(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMaxX(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMinY(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMidY(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetMaxY(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetWidth(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGRectGetHeight(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGPointEqualToPoint(CGPoint point1, CGPoint point2) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGSizeEqualToSize(CGSize size1, CGSize size2) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGRectEqualToRect(CGRect rect1, CGRect rect2) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectStandardize(CGRect rect) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGRectIsEmpty(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGRectIsNull(CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGRectIsInfinite(CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectIntegral(CGRect rect) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectUnion(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectIntersection(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result)) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGRectDivide(CGRect rect, CGRect * slice, + CGRect * remainder, CGFloat amount, CGRectEdge edge) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGRectContainsPoint(CGRect rect, CGPoint point) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGRectContainsRect(CGRect rect1, CGRect rect2) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGRectIntersectsRect(CGRect rect1, CGRect rect2) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFDictionaryRef CGPointCreateDictionaryRepresentation( + CGPoint point) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPointMakeWithDictionaryRepresentation( + CFDictionaryRef _Nullable dict, CGPoint * _Nullable point) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGSizeMakeWithDictionaryRepresentation( + CFDictionaryRef _Nullable dict, CGSize * _Nullable size) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGRectMakeWithDictionaryRepresentation( + CFDictionaryRef _Nullable dict, CGRect * _Nullable rect) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +static inline CGPoint +CGPointMake(CGFloat x, CGFloat y) +{ + CGPoint p; p.x = x; p.y = y; return p; +} + +static inline CGSize +CGSizeMake(CGFloat width, CGFloat height) +{ + CGSize size; size.width = width; size.height = height; return size; +} + +static inline CGVector +CGVectorMake(CGFloat dx, CGFloat dy) +{ + CGVector vector; vector.dx = dx; vector.dy = dy; return vector; +} + +static inline CGRect +CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height) +{ + CGRect rect; + rect.origin.x = x; rect.origin.y = y; + rect.size.width = width; rect.size.height = height; + return rect; +} + +static inline bool +__CGPointEqualToPoint(CGPoint point1, CGPoint point2) +{ + return point1.x == point2.x && point1.y == point2.y; +} + + +static inline bool +__CGSizeEqualToSize(CGSize size1, CGSize size2) +{ + return size1.width == size2.width && size1.height == size2.height; +} +#pragma clang assume_nonnull end + + + +struct CGAffineTransform { + CGFloat a, b, c, d; + CGFloat tx, ty; +}; + + + +extern "C" __attribute__((visibility("default"))) const CGAffineTransform CGAffineTransformIdentity + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformMake(CGFloat a, CGFloat b, + CGFloat c, CGFloat d, CGFloat tx, CGFloat ty) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx, + CGFloat ty) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGAffineTransformIsIdentity(CGAffineTransform t) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, + CGFloat tx, CGFloat ty) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformScale(CGAffineTransform t, + CGFloat sx, CGFloat sy) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, + CGFloat angle) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformInvert(CGAffineTransform t) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, + CGAffineTransform t2) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGAffineTransformEqualToTransform(CGAffineTransform t1, + CGAffineTransform t2) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGPointApplyAffineTransform(CGPoint point, + CGAffineTransform t) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +static inline CGAffineTransform +__CGAffineTransformMake(CGFloat a, CGFloat b, CGFloat c, CGFloat d, + CGFloat tx, CGFloat ty) +{ + CGAffineTransform t; + t.a = a; t.b = b; t.c = c; t.d = d; t.tx = tx; t.ty = ty; + return t; +} + + +static inline CGPoint +__CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t) +{ + CGPoint p; + p.x = (CGFloat)((double)t.a * point.x + (double)t.c * point.y + t.tx); + p.y = (CGFloat)((double)t.b * point.x + (double)t.d * point.y + t.ty); + return p; +} + + +static inline CGSize +__CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) +{ + CGSize s; + s.width = (CGFloat)((double)t.a * size.width + (double)t.c * size.height); + s.height = (CGFloat)((double)t.b * size.width + (double)t.d * size.height); + return s; +} + + + + + + + + +typedef struct __attribute__((objc_bridge(id))) CGContext *CGContextRef; + + + + +typedef struct __attribute__((objc_bridge(id))) CGColor *CGColorRef; + + + +typedef struct __attribute__((objc_bridge(id))) CGColorSpace *CGColorSpaceRef; + + + +typedef struct __attribute__((objc_bridge(id))) CGDataProvider *CGDataProviderRef; + + + + + + + +#pragma clang assume_nonnull begin + + + + +typedef size_t (*CGDataProviderGetBytesCallback)(void * _Nullable info, + void * buffer, size_t count); + + + + + +typedef off_t (*CGDataProviderSkipForwardCallback)(void * _Nullable info, + off_t count); + + + + +typedef void (*CGDataProviderRewindCallback)(void * _Nullable info); + + + + +typedef void (*CGDataProviderReleaseInfoCallback)(void * _Nullable info); +struct CGDataProviderSequentialCallbacks { + unsigned int version; + CGDataProviderGetBytesCallback _Nullable getBytes; + CGDataProviderSkipForwardCallback _Nullable skipForward; + CGDataProviderRewindCallback _Nullable rewind; + CGDataProviderReleaseInfoCallback _Nullable releaseInfo; +}; +typedef struct CGDataProviderSequentialCallbacks + CGDataProviderSequentialCallbacks; + + + +typedef const void * _Nullable(*CGDataProviderGetBytePointerCallback)( + void * _Nullable info); + + + + +typedef void (*CGDataProviderReleaseBytePointerCallback)( + void * _Nullable info, const void * pointer); + + + + +typedef size_t (*CGDataProviderGetBytesAtPositionCallback)( + void * _Nullable info, void * buffer, off_t pos, size_t cnt); +struct CGDataProviderDirectCallbacks { + unsigned int version; + CGDataProviderGetBytePointerCallback _Nullable getBytePointer; + CGDataProviderReleaseBytePointerCallback _Nullable releaseBytePointer; + CGDataProviderGetBytesAtPositionCallback _Nullable getBytesAtPosition; + CGDataProviderReleaseInfoCallback _Nullable releaseInfo; +}; +typedef struct CGDataProviderDirectCallbacks CGDataProviderDirectCallbacks; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGDataProviderGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateSequential( + void * _Nullable info, + const CGDataProviderSequentialCallbacks * _Nullable callbacks) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateDirect( + void * _Nullable info, off_t size, + const CGDataProviderDirectCallbacks * _Nullable callbacks) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +typedef void (*CGDataProviderReleaseDataCallback)(void * _Nullable info, + const void * data, size_t size); + + + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateWithData( + void * _Nullable info, const void * _Nullable data, size_t size, + CGDataProviderReleaseDataCallback _Nullable releaseData) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateWithCFData( + CFDataRef _Nullable data) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateWithURL( + CFURLRef _Nullable url) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderCreateWithFilename( + const char * _Nullable filename) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGDataProviderRetain( + CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGDataProviderRelease(CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGDataProviderCopyData( + CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + +extern "C" __attribute__((visibility("default"))) void* _Nullable CGDataProviderGetInfo(CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +#pragma clang assume_nonnull end + + + + + +typedef int32_t CGColorRenderingIntent; enum { + kCGRenderingIntentDefault, + kCGRenderingIntentAbsoluteColorimetric, + kCGRenderingIntentRelativeColorimetric, + kCGRenderingIntentPerceptual, + kCGRenderingIntentSaturation +}; + + + +typedef int32_t CGColorSpaceModel; enum { + kCGColorSpaceModelUnknown = -1, + kCGColorSpaceModelMonochrome, + kCGColorSpaceModelRGB, + kCGColorSpaceModelCMYK, + kCGColorSpaceModelLab, + kCGColorSpaceModelDeviceN, + kCGColorSpaceModelIndexed, + kCGColorSpaceModelPattern, + kCGColorSpaceModelXYZ +}; + +#pragma clang assume_nonnull begin + + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericGray + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=9.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericRGB + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=9.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericCMYK + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceDisplayP3 + __attribute__((availability(macos,introduced=10.11.2))) __attribute__((availability(ios,introduced=9.3))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericRGBLinear + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=9.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceAdobeRGB1998 + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=9.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceSRGB + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=9.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericGrayGamma2_2 + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericXYZ + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceGenericLab +__attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceACESCGLinear +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceITUR_709 +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceITUR_2020 +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceROMMRGB +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceDCIP3 +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedLinearITUR_2020 +__attribute__((availability(macos,introduced=10.14.3))) __attribute__((availability(ios,introduced=12.3))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedLinearDisplayP3 +__attribute__((availability(macos,introduced=10.14.3))) __attribute__((availability(ios,introduced=12.3))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceITUR_2020_PQ_EOTF +__attribute__((availability(macos,introduced=10.14.6,deprecated=10.16,message="No longer supported"))) __attribute__((availability(ios,introduced=13.0,deprecated=14.0,message="No longer supported"))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceITUR_2020_PQ +__attribute__((availability(macos,introduced=10.16))) __attribute__((availability(ios,introduced=14.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceDisplayP3_PQ_EOTF +__attribute__((availability(macos,introduced=10.14.6,deprecated=10.16,message="No longer supported"))) __attribute__((availability(ios,introduced=13.0,deprecated=14.0,message="No longer supported"))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceDisplayP3_PQ +__attribute__((availability(macos,introduced=10.16))) __attribute__((availability(ios,introduced=14))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceDisplayP3_HLG +__attribute__((availability(macos,introduced=10.14.6))) __attribute__((availability(ios,introduced=13))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceITUR_2020_HLG +__attribute__((availability(macos,introduced=10.14.6))) __attribute__((availability(ios,introduced=13))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedSRGB +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceLinearSRGB +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedLinearSRGB +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedGray +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceLinearGray +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorSpaceExtendedLinearGray +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateDeviceGray(void) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateDeviceRGB(void) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateDeviceCMYK(void) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateCalibratedGray(const CGFloat + whitePoint[_Nonnull 3], const CGFloat blackPoint[_Nullable 3], CGFloat gamma) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateCalibratedRGB(const CGFloat + whitePoint[_Nonnull 3], const CGFloat blackPoint[_Nullable 3], + const CGFloat gamma[_Nullable 3], const CGFloat matrix[_Nullable 9]) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateLab(const CGFloat whitePoint[_Nonnull 3], + const CGFloat blackPoint[_Nullable 3], const CGFloat range[_Nullable 4]) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef CGColorSpaceCreateWithICCData(CFTypeRef _Nullable data) + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateICCBased(size_t nComponents, + const CGFloat * _Nullable range, CGDataProviderRef _Nullable profile, + CGColorSpaceRef _Nullable alternate) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateIndexed(CGColorSpaceRef _Nullable baseSpace, + size_t lastIndex, const unsigned char * _Nullable colorTable) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreatePattern(CGColorSpaceRef _Nullable baseSpace) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable + CGColorSpaceCreateWithPlatformColorSpace(const void * _Nullable ref) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateWithName(CFStringRef _Nullable name) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceRetain(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGColorSpaceRelease(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGColorSpaceGetName(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGColorSpaceCopyName(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGColorSpaceGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGColorSpaceGetNumberOfComponents(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceModel CGColorSpaceGetModel(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceGetBaseColorSpace(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) size_t CGColorSpaceGetColorTableCount(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGColorSpaceGetColorTable(CGColorSpaceRef _Nullable space, + uint8_t * _Nullable table) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGColorSpaceCopyICCData(CGColorSpaceRef _Nullable space) +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGColorSpaceIsWideGamutRGB(CGColorSpaceRef) +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGColorSpaceIsHDR(CGColorSpaceRef) +__attribute__((availability(macos,introduced=10.15,deprecated=10.15.4,message="No longer supported"))) __attribute__((availability(ios,introduced=13.0,deprecated=13.4,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGColorSpaceSupportsOutput(CGColorSpaceRef space) +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) CFPropertyListRef _Nullable +CGColorSpaceCopyPropertyList(CGColorSpaceRef space) +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable +CGColorSpaceCreateWithPropertyList(CFPropertyListRef plist) +__attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorSpaceCreateWithICCProfile(CFDataRef _Nullable data) + __attribute__((availability(macos,introduced=10.5,deprecated=10.13,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=11.0,message="No longer supported"))); + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGColorSpaceCopyICCProfile(CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.5,deprecated=10.13,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=11.0,message="No longer supported"))); +#pragma clang assume_nonnull end +typedef struct __attribute__((objc_bridge(id))) CGPattern *CGPatternRef; + + + + + + + + +#pragma clang assume_nonnull begin +typedef int32_t CGPatternTiling; enum { + kCGPatternTilingNoDistortion, + kCGPatternTilingConstantSpacingMinimalDistortion, + kCGPatternTilingConstantSpacing +}; +typedef void (*CGPatternDrawPatternCallback)(void * _Nullable info, + CGContextRef _Nullable context); +typedef void (*CGPatternReleaseInfoCallback)(void * _Nullable info); + +struct CGPatternCallbacks { + unsigned int version; + CGPatternDrawPatternCallback _Nullable drawPattern; + CGPatternReleaseInfoCallback _Nullable releaseInfo; +}; +typedef struct CGPatternCallbacks CGPatternCallbacks; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGPatternGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPatternRef _Nullable CGPatternCreate(void * _Nullable info, + CGRect bounds, CGAffineTransform matrix, CGFloat xStep, CGFloat yStep, + CGPatternTiling tiling, bool isColored, + const CGPatternCallbacks * _Nullable callbacks) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPatternRef _Nullable CGPatternRetain(CGPatternRef _Nullable pattern) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPatternRelease(CGPatternRef _Nullable pattern) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorCreate(CGColorSpaceRef _Nullable space, + const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef CGColorCreateGenericGray(CGFloat gray, CGFloat alpha) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef CGColorCreateGenericRGB(CGFloat red, CGFloat green, + CGFloat blue, CGFloat alpha) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef CGColorCreateGenericCMYK(CGFloat cyan, CGFloat magenta, + CGFloat yellow, CGFloat black, CGFloat alpha) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef CGColorCreateGenericGrayGamma2_2(CGFloat gray, CGFloat alpha) __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef CGColorCreateSRGB(CGFloat red, CGFloat green, + CGFloat blue, CGFloat alpha) __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorGetConstantColor(CFStringRef _Nullable colorName) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorCreateWithPattern(CGColorSpaceRef _Nullable space, + CGPatternRef _Nullable pattern, const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorCreateCopy(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorCreateCopyWithAlpha(CGColorRef _Nullable color, + CGFloat alpha) __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorCreateCopyByMatchingToColorSpace(_Nullable CGColorSpaceRef, + CGColorRenderingIntent intent, CGColorRef _Nullable color, _Nullable CFDictionaryRef options) + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorRef _Nullable CGColorRetain(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGColorRelease(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGColorEqualToColor(CGColorRef _Nullable color1, CGColorRef _Nullable color2) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGColorGetNumberOfComponents(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const CGFloat * _Nullable CGColorGetComponents(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGColorGetAlpha(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGColorGetColorSpace(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPatternRef _Nullable CGColorGetPattern(CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGColorGetTypeID(void) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorWhite + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorBlack + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorClear + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +#pragma clang assume_nonnull end + +typedef struct __attribute__((objc_bridge(id))) CGFont *CGFontRef; + + + +typedef unsigned short CGFontIndex; + + + +typedef CGFontIndex CGGlyph; + + + + + + +typedef int32_t CGFontPostScriptFormat; enum { + kCGFontPostScriptFormatType1 = 1, + kCGFontPostScriptFormatType3 = 3, + kCGFontPostScriptFormatType42 = 42 +}; +#pragma clang assume_nonnull begin + + +static const CGFontIndex kCGFontIndexMax = ((1 << 16) - 2); + + +static const CGFontIndex kCGFontIndexInvalid = ((1 << 16) - 1); + + +static const CGFontIndex kCGGlyphMax = kCGFontIndexMax; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGFontGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGFontRef _Nullable CGFontCreateWithPlatformFont( + void * _Nullable platformFontReference) + __attribute__((availability(macos,introduced=10.0,deprecated=10.6,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) CGFontRef _Nullable CGFontCreateWithDataProvider( + CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGFontRef _Nullable CGFontCreateWithFontName( + CFStringRef _Nullable name) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGFontRef _Nullable CGFontCreateCopyWithVariations( + CGFontRef _Nullable font, CFDictionaryRef _Nullable variations) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGFontRef _Nullable CGFontRetain(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGFontRelease(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGFontGetNumberOfGlyphs(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetUnitsPerEm(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGFontCopyPostScriptName(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGFontCopyFullName(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetAscent(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetDescent(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetLeading(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetCapHeight(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGFontGetXHeight(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGFontGetFontBBox(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGFontGetItalicAngle(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGFloat CGFontGetStemV(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nullable CGFontCopyVariationAxes(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CFDictionaryRef _Nullable CGFontCopyVariations(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGFontGetGlyphAdvances(CGFontRef _Nullable font, + const CGGlyph * glyphs, size_t count, int * advances) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGFontGetGlyphBBoxes(CGFontRef _Nullable font, + const CGGlyph * glyphs, size_t count, CGRect * bboxes) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGGlyph CGFontGetGlyphWithGlyphName( + CGFontRef _Nullable font, CFStringRef _Nullable name) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGFontCopyGlyphNameForGlyph( + CGFontRef _Nullable font, CGGlyph glyph) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGFontCanCreatePostScriptSubset(CGFontRef _Nullable font, + CGFontPostScriptFormat format) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGFontCreatePostScriptSubset( + CGFontRef _Nullable font, CFStringRef _Nullable subsetName, + CGFontPostScriptFormat format, const CGGlyph * _Nullable glyphs, + size_t count, const CGGlyph encoding[_Nullable 256]) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGFontCreatePostScriptEncoding( + CGFontRef _Nullable font, const CGGlyph encoding[_Nullable 256]) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nullable CGFontCopyTableTags(CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGFontCopyTableForTag( + CGFontRef _Nullable font, uint32_t tag) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGFontVariationAxisName + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGFontVariationAxisMinValue + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGFontVariationAxisMaxValue + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGFontVariationAxisDefaultValue + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +typedef int32_t CGGlyphDeprecatedEnum; enum { + CGGlyphMin __attribute__((deprecated)), + CGGlyphMax __attribute__((deprecated)) +}; +#pragma clang assume_nonnull end +typedef struct __attribute__((objc_bridge(id))) CGGradient *CGGradientRef; + +typedef uint32_t CGGradientDrawingOptions; enum { + kCGGradientDrawsBeforeStartLocation = (1 << 0), + kCGGradientDrawsAfterEndLocation = (1 << 1) +}; + + + + + + + +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility("default"))) CFTypeID CGGradientGetTypeID(void) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGGradientRef _Nullable CGGradientCreateWithColorComponents( + CGColorSpaceRef _Nullable space, const CGFloat * _Nullable components, + const CGFloat * _Nullable locations, size_t count) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGGradientRef _Nullable CGGradientCreateWithColors( + CGColorSpaceRef _Nullable space, CFArrayRef _Nullable colors, + const CGFloat * _Nullable locations) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGGradientRef _Nullable CGGradientRetain( + CGGradientRef _Nullable gradient) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGGradientRelease(CGGradientRef _Nullable gradient) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end +typedef struct __attribute__((objc_bridge(id))) CGImage *CGImageRef; + + + + + + + +#pragma clang assume_nonnull begin + +typedef uint32_t CGImageAlphaInfo; enum { + kCGImageAlphaNone, + kCGImageAlphaPremultipliedLast, + kCGImageAlphaPremultipliedFirst, + kCGImageAlphaLast, + kCGImageAlphaFirst, + kCGImageAlphaNoneSkipLast, + kCGImageAlphaNoneSkipFirst, + kCGImageAlphaOnly +}; + +typedef uint32_t CGImageByteOrderInfo; enum { + kCGImageByteOrderMask = 0x7000, + kCGImageByteOrderDefault = (0 << 12), + kCGImageByteOrder16Little = (1 << 12), + kCGImageByteOrder32Little = (2 << 12), + kCGImageByteOrder16Big = (3 << 12), + kCGImageByteOrder32Big = (4 << 12) +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + +typedef uint32_t CGImagePixelFormatInfo; enum { + kCGImagePixelFormatMask = 0xF0000, + kCGImagePixelFormatPacked = (0 << 16), + kCGImagePixelFormatRGB555 = (1 << 16), + kCGImagePixelFormatRGB565 = (2 << 16), + kCGImagePixelFormatRGB101010 = (3 << 16), + kCGImagePixelFormatRGBCIF10 = (4 << 16), +} __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); + +typedef uint32_t CGBitmapInfo; enum { + kCGBitmapAlphaInfoMask = 0x1F, + + kCGBitmapFloatInfoMask = 0xF00, + kCGBitmapFloatComponents = (1 << 8), + + kCGBitmapByteOrderMask = kCGImageByteOrderMask, + kCGBitmapByteOrderDefault = kCGImageByteOrderDefault, + kCGBitmapByteOrder16Little = kCGImageByteOrder16Little, + kCGBitmapByteOrder32Little = kCGImageByteOrder32Little, + kCGBitmapByteOrder16Big = kCGImageByteOrder16Big, + kCGBitmapByteOrder32Big = kCGImageByteOrder32Big +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CFTypeID CGImageGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreate(size_t width, size_t height, + size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, + CGColorSpaceRef _Nullable space, CGBitmapInfo bitmapInfo, + CGDataProviderRef _Nullable provider, + const CGFloat * _Nullable decode, bool shouldInterpolate, + CGColorRenderingIntent intent) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageMaskCreate(size_t width, size_t height, + size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, + CGDataProviderRef _Nullable provider, const CGFloat * _Nullable decode, + bool shouldInterpolate) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateCopy(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateWithJPEGDataProvider( + CGDataProviderRef _Nullable source, const CGFloat * _Nullable decode, + bool shouldInterpolate, + CGColorRenderingIntent intent) + __attribute__((availability(macos,introduced=10.1))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateWithPNGDataProvider( + CGDataProviderRef _Nullable source, const CGFloat * _Nullable decode, + bool shouldInterpolate, + CGColorRenderingIntent intent) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateWithImageInRect( + CGImageRef _Nullable image, CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateWithMask( + CGImageRef _Nullable image, CGImageRef _Nullable mask) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateWithMaskingColors( + CGImageRef _Nullable image, const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageCreateCopyWithColorSpace( + CGImageRef _Nullable image, CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageRetain(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGImageRelease(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGImageIsMask(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageGetWidth(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageGetHeight(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageGetBitsPerComponent(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageGetBitsPerPixel(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageGetBytesPerRow(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGImageGetColorSpace(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageAlphaInfo CGImageGetAlphaInfo(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataProviderRef _Nullable CGImageGetDataProvider(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const CGFloat * _Nullable CGImageGetDecode(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGImageGetShouldInterpolate(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGColorRenderingIntent CGImageGetRenderingIntent(_Nullable CGImageRef image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGBitmapInfo CGImageGetBitmapInfo(CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImageByteOrderInfo CGImageGetByteOrderInfo(CGImageRef _Nullable image) __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); + + + +extern "C" __attribute__((visibility("default"))) CGImagePixelFormatInfo CGImageGetPixelFormatInfo(CGImageRef _Nullable image) __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageGetUTType(_Nullable CGImageRef image) + __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +#pragma clang assume_nonnull end +typedef struct __attribute__((objc_bridge(id))) CGPath *CGMutablePathRef; +typedef const struct __attribute__((objc_bridge(id))) CGPath *CGPathRef; + + + + + + + +#pragma clang assume_nonnull begin + + + +typedef int32_t CGLineJoin; enum { + kCGLineJoinMiter, + kCGLineJoinRound, + kCGLineJoinBevel +}; + + + +typedef int32_t CGLineCap; enum { + kCGLineCapButt, + kCGLineCapRound, + kCGLineCapSquare +}; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGPathGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGMutablePathRef CGPathCreateMutable(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGPathCreateCopy(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGPathCreateCopyByTransformingPath( + CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); + + + +extern "C" __attribute__((visibility("default"))) CGMutablePathRef _Nullable CGPathCreateMutableCopy( + CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGMutablePathRef _Nullable CGPathCreateMutableCopyByTransformingPath( + CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) CGPathRef CGPathCreateWithRect(CGRect rect, + const CGAffineTransform * _Nullable transform) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) CGPathRef CGPathCreateWithEllipseInRect(CGRect rect, + const CGAffineTransform * _Nullable transform) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) CGPathRef CGPathCreateWithRoundedRect(CGRect rect, + CGFloat cornerWidth, CGFloat cornerHeight, + const CGAffineTransform * _Nullable transform) + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) void CGPathAddRoundedRect(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable transform, CGRect rect, + CGFloat cornerWidth, CGFloat cornerHeight) + __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGPathCreateCopyByDashingPath( + CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform, + CGFloat phase, const CGFloat * _Nullable lengths, size_t count) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGPathCreateCopyByStrokingPath( + CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform, + CGFloat lineWidth, CGLineCap lineCap, + CGLineJoin lineJoin, CGFloat miterLimit) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGPathRetain(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPathRelease(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGPathEqualToPath(CGPathRef _Nullable path1, + CGPathRef _Nullable path2) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathMoveToPoint(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddLineToPoint(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddQuadCurveToPoint(CGMutablePathRef _Nullable path, + const CGAffineTransform *_Nullable m, CGFloat cpx, CGFloat cpy, + CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddCurveToPoint(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGFloat cp1x, CGFloat cp1y, + CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPathCloseSubpath(CGMutablePathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddRect(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGRect rect) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddRects(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, const CGRect * _Nullable rects, + size_t count) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddLines(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, const CGPoint * _Nullable points, + size_t count) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGPathAddEllipseInRect(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGPathAddRelativeArc(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable matrix, CGFloat x, CGFloat y, + CGFloat radius, CGFloat startAngle, CGFloat delta) + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) void CGPathAddArc(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, + CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, + bool clockwise) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGPathAddArcToPoint(CGMutablePathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGFloat x1, CGFloat y1, + CGFloat x2, CGFloat y2, CGFloat radius) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPathAddPath(CGMutablePathRef _Nullable path1, + const CGAffineTransform * _Nullable m, CGPathRef _Nullable path2) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPathIsEmpty(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGPathIsRect(CGPathRef _Nullable path, CGRect * _Nullable rect) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGPathGetCurrentPoint(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPathGetBoundingBox(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPathGetPathBoundingBox(CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) bool CGPathContainsPoint(CGPathRef _Nullable path, + const CGAffineTransform * _Nullable m, CGPoint point, bool eoFill) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +typedef int32_t CGPathElementType; enum { + kCGPathElementMoveToPoint, + kCGPathElementAddLineToPoint, + kCGPathElementAddQuadCurveToPoint, + kCGPathElementAddCurveToPoint, + kCGPathElementCloseSubpath +}; + + + +struct CGPathElement { + CGPathElementType type; + CGPoint * points; +}; +typedef struct CGPathElement CGPathElement; + + + +typedef void (*CGPathApplierFunction)(void * _Nullable info, + const CGPathElement * element); + + + + +extern "C" __attribute__((visibility("default"))) void CGPathApply(CGPathRef _Nullable path, void * _Nullable info, + CGPathApplierFunction _Nullable function) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + +typedef void (*CGPathApplyBlock)(const CGPathElement * element); + +extern "C" __attribute__((visibility("default"))) void CGPathApplyWithBlock(CGPathRef path, CGPathApplyBlock __attribute__((noescape)) block) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +#pragma clang assume_nonnull end + +typedef struct __attribute__((objc_bridge(id))) CGPDFDocument *CGPDFDocumentRef; + + + + +typedef struct __attribute__((objc_bridge(id))) CGPDFPage *CGPDFPageRef; + + + +typedef struct CGPDFDictionary *CGPDFDictionaryRef; + + +typedef struct CGPDFArray *CGPDFArrayRef; + + +#pragma clang assume_nonnull begin + + + +typedef unsigned char CGPDFBoolean; + + + +typedef long int CGPDFInteger; + + + +typedef CGFloat CGPDFReal; + + + +typedef struct CGPDFObject *CGPDFObjectRef; + + + +typedef int32_t CGPDFObjectType; enum { + kCGPDFObjectTypeNull = 1, + kCGPDFObjectTypeBoolean, + kCGPDFObjectTypeInteger, + kCGPDFObjectTypeReal, + kCGPDFObjectTypeName, + kCGPDFObjectTypeString, + kCGPDFObjectTypeArray, + kCGPDFObjectTypeDictionary, + kCGPDFObjectTypeStream +}; + + + +extern "C" __attribute__((visibility("default"))) CGPDFObjectType CGPDFObjectGetType(CGPDFObjectRef _Nullable object) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) bool CGPDFObjectGetValue(CGPDFObjectRef _Nullable object, + CGPDFObjectType type, void * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + + + + + +typedef struct CGPDFStream *CGPDFStreamRef; + + + + + +typedef int32_t CGPDFDataFormat; enum { + CGPDFDataFormatRaw, CGPDFDataFormatJPEGEncoded, CGPDFDataFormatJPEG2000 +}; + + + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) CGPDFDictionaryRef _Nullable CGPDFStreamGetDictionary( + CGPDFStreamRef _Nullable stream) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGPDFStreamCopyData( + CGPDFStreamRef _Nullable stream, + CGPDFDataFormat * _Nullable format) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end +typedef struct CGPDFString *CGPDFStringRef; + + + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) size_t CGPDFStringGetLength(CGPDFStringRef _Nullable string) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) const unsigned char * _Nullable CGPDFStringGetBytePtr( + CGPDFStringRef _Nullable string) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGPDFStringCopyTextString( + CGPDFStringRef _Nullable string) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFDateRef _Nullable CGPDFStringCopyDate( + CGPDFStringRef _Nullable string) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) size_t CGPDFArrayGetCount(CGPDFArrayRef _Nullable array) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetObject(CGPDFArrayRef _Nullable array, size_t index, + CGPDFObjectRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetNull(CGPDFArrayRef _Nullable array, size_t index) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetBoolean(CGPDFArrayRef _Nullable array, + size_t index, CGPDFBoolean * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetInteger(CGPDFArrayRef _Nullable array, + size_t index, CGPDFInteger * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetNumber(CGPDFArrayRef _Nullable array, + size_t index, CGPDFReal * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetName(CGPDFArrayRef _Nullable array, + size_t index, const char * _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetString(CGPDFArrayRef _Nullable array, + size_t index, CGPDFStringRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetArray(CGPDFArrayRef _Nullable array, + size_t index, CGPDFArrayRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetDictionary(CGPDFArrayRef _Nullable array, + size_t index, CGPDFDictionaryRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFArrayGetStream(CGPDFArrayRef _Nullable array, + size_t index, CGPDFStreamRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +typedef bool (*CGPDFArrayApplierBlock)(size_t index, + CGPDFObjectRef value, void * _Nullable info); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFArrayApplyBlock(CGPDFArrayRef _Nullable array, + CGPDFArrayApplierBlock _Nullable block, void * _Nullable info) + __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) size_t CGPDFDictionaryGetCount(CGPDFDictionaryRef _Nullable dict) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetObject(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFObjectRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetBoolean(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFBoolean * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetInteger(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFInteger * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetNumber(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFReal * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetName(CGPDFDictionaryRef _Nullable dict, + const char * key, const char * _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetString(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFStringRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetArray(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFArrayRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetDictionary(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFDictionaryRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDictionaryGetStream(CGPDFDictionaryRef _Nullable dict, + const char * key, CGPDFStreamRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +typedef void (*CGPDFDictionaryApplierFunction)(const char * key, + CGPDFObjectRef value, void * _Nullable info); + + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFDictionaryApplyFunction(CGPDFDictionaryRef _Nullable dict, + CGPDFDictionaryApplierFunction _Nullable function, void * _Nullable info) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +typedef bool (*CGPDFDictionaryApplierBlock)(const char * key, + CGPDFObjectRef value, void * _Nullable info); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFDictionaryApplyBlock(CGPDFDictionaryRef _Nullable dict, + CGPDFDictionaryApplierBlock _Nullable block, void * _Nullable info) + __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef int32_t CGPDFBox; enum { + kCGPDFMediaBox = 0, + kCGPDFCropBox = 1, + kCGPDFBleedBox = 2, + kCGPDFTrimBox = 3, + kCGPDFArtBox = 4 +}; + + + + +extern "C" __attribute__((visibility("default"))) CGPDFPageRef _Nullable CGPDFPageRetain(CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFPageRelease(CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDocumentRef _Nullable CGPDFPageGetDocument( + CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGPDFPageGetPageNumber(CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFPageGetBoxRect(CGPDFPageRef _Nullable page, CGPDFBox box) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) int CGPDFPageGetRotationAngle(CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGPDFPageGetDrawingTransform( + CGPDFPageRef _Nullable page, CGPDFBox box, CGRect rect, int rotate, + bool preserveAspectRatio) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDictionaryRef _Nullable CGPDFPageGetDictionary( + CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGPDFPageGetTypeID(void) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + + +#pragma clang assume_nonnull begin +typedef uint32_t CGPDFAccessPermissions; enum { + kCGPDFAllowsLowQualityPrinting = (1 << 0), + kCGPDFAllowsHighQualityPrinting = (1 << 1), + kCGPDFAllowsDocumentChanges = (1 << 2), + kCGPDFAllowsDocumentAssembly = (1 << 3), + kCGPDFAllowsContentCopying = (1 << 4), + kCGPDFAllowsContentAccessibility = (1 << 5), + kCGPDFAllowsCommenting = (1 << 6), + kCGPDFAllowsFormFieldEntry = (1 << 7) +}; +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFOutlineTitle + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFOutlineChildren + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFOutlineDestination + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFOutlineDestinationRect + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDocumentRef _Nullable CGPDFDocumentCreateWithProvider( + CGDataProviderRef _Nullable provider) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDocumentRef _Nullable CGPDFDocumentCreateWithURL( + CFURLRef _Nullable url) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPDFDocumentRef _Nullable CGPDFDocumentRetain( + CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFDocumentRelease(CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFDocumentGetVersion(CGPDFDocumentRef _Nullable document, + int * majorVersion, int * minorVersion) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDocumentIsEncrypted(CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDocumentUnlockWithPassword( + CGPDFDocumentRef _Nullable document, const char * password) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDocumentIsUnlocked(CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDocumentAllowsPrinting(CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFDocumentAllowsCopying(CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) size_t CGPDFDocumentGetNumberOfPages( + CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPDFPageRef _Nullable CGPDFDocumentGetPage( + CGPDFDocumentRef _Nullable document, size_t pageNumber) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDictionaryRef _Nullable CGPDFDocumentGetCatalog( + CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFDictionaryRef _Nullable CGPDFDocumentGetInfo( + CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFArrayRef _Nullable CGPDFDocumentGetID( + CGPDFDocumentRef _Nullable document) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGPDFDocumentGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) _Nullable CFDictionaryRef CGPDFDocumentGetOutline(CGPDFDocumentRef document) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFAccessPermissions CGPDFDocumentGetAccessPermissions(CGPDFDocumentRef document) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFDocumentGetMediaBox(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFDocumentGetCropBox(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFDocumentGetBleedBox(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFDocumentGetTrimBox(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGPDFDocumentGetArtBox(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) int CGPDFDocumentGetRotationAngle(CGPDFDocumentRef _Nullable document, + int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +#pragma clang assume_nonnull end +typedef struct __attribute__((objc_bridge(id))) CGShading *CGShadingRef; + + + + +typedef struct __attribute__((objc_bridge(id))) CGFunction *CGFunctionRef; + + + + + + + + +#pragma clang assume_nonnull begin + + + + + +typedef void (*CGFunctionEvaluateCallback)(void * _Nullable info, + const CGFloat * in, CGFloat * out); + + + + +typedef void (*CGFunctionReleaseInfoCallback)(void * _Nullable info); +struct CGFunctionCallbacks { + unsigned int version; + CGFunctionEvaluateCallback _Nullable evaluate; + CGFunctionReleaseInfoCallback _Nullable releaseInfo; +}; +typedef struct CGFunctionCallbacks CGFunctionCallbacks; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGFunctionGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGFunctionRef _Nullable CGFunctionCreate(void * _Nullable info, + size_t domainDimension, const CGFloat *_Nullable domain, + size_t rangeDimension, const CGFloat * _Nullable range, + const CGFunctionCallbacks * _Nullable callbacks) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGFunctionRef _Nullable CGFunctionRetain( + CGFunctionRef _Nullable function) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGFunctionRelease(CGFunctionRef _Nullable function) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGShadingGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGShadingRef _Nullable CGShadingCreateAxial( + CGColorSpaceRef _Nullable space, CGPoint start, CGPoint end, + CGFunctionRef _Nullable function, bool extendStart, bool extendEnd) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGShadingRef _Nullable CGShadingCreateRadial( + CGColorSpaceRef _Nullable space, + CGPoint start, CGFloat startRadius, CGPoint end, CGFloat endRadius, + CGFunctionRef _Nullable function, bool extendStart, bool extendEnd) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGShadingRef _Nullable CGShadingRetain(CGShadingRef _Nullable shading) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGShadingRelease(CGShadingRef _Nullable shading) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + + +typedef int32_t CGPathDrawingMode; enum { + kCGPathFill, + kCGPathEOFill, + kCGPathStroke, + kCGPathFillStroke, + kCGPathEOFillStroke +}; + + + +typedef int32_t CGTextDrawingMode; enum { + kCGTextFill, + kCGTextStroke, + kCGTextFillStroke, + kCGTextInvisible, + kCGTextFillClip, + kCGTextStrokeClip, + kCGTextFillStrokeClip, + kCGTextClip +}; + + + +typedef int32_t CGTextEncoding; enum { + kCGEncodingFontSpecific, + kCGEncodingMacRoman +} __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + +typedef int32_t CGInterpolationQuality; enum { + kCGInterpolationDefault = 0, + kCGInterpolationNone = 1, + kCGInterpolationLow = 2, + kCGInterpolationMedium = 4, + kCGInterpolationHigh = 3 +}; +typedef int32_t CGBlendMode; enum { + + kCGBlendModeNormal, + kCGBlendModeMultiply, + kCGBlendModeScreen, + kCGBlendModeOverlay, + kCGBlendModeDarken, + kCGBlendModeLighten, + kCGBlendModeColorDodge, + kCGBlendModeColorBurn, + kCGBlendModeSoftLight, + kCGBlendModeHardLight, + kCGBlendModeDifference, + kCGBlendModeExclusion, + kCGBlendModeHue, + kCGBlendModeSaturation, + kCGBlendModeColor, + kCGBlendModeLuminosity, + kCGBlendModeClear, + kCGBlendModeCopy, + kCGBlendModeSourceIn, + kCGBlendModeSourceOut, + kCGBlendModeSourceAtop, + kCGBlendModeDestinationOver, + kCGBlendModeDestinationIn, + kCGBlendModeDestinationOut, + kCGBlendModeDestinationAtop, + kCGBlendModeXOR, + kCGBlendModePlusDarker, + kCGBlendModePlusLighter +}; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGContextGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSaveGState(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextRestoreGState(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextScaleCTM(CGContextRef _Nullable c, + CGFloat sx, CGFloat sy) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextTranslateCTM(CGContextRef _Nullable c, + CGFloat tx, CGFloat ty) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextRotateCTM(CGContextRef _Nullable c, CGFloat angle) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextConcatCTM(CGContextRef _Nullable c, + CGAffineTransform transform) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGContextGetCTM(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetLineWidth(CGContextRef _Nullable c, CGFloat width) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetLineCap(CGContextRef _Nullable c, CGLineCap cap) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetLineJoin(CGContextRef _Nullable c, CGLineJoin join) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetMiterLimit(CGContextRef _Nullable c, CGFloat limit) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetLineDash(CGContextRef _Nullable c, CGFloat phase, + const CGFloat * _Nullable lengths, size_t count) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetFlatness(CGContextRef _Nullable c, CGFloat flatness) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetAlpha(CGContextRef _Nullable c, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetBlendMode(CGContextRef _Nullable c, CGBlendMode mode) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextBeginPath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextMoveToPoint(CGContextRef _Nullable c, + CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddLineToPoint(CGContextRef _Nullable c, + CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddCurveToPoint(CGContextRef _Nullable c, CGFloat cp1x, + CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddQuadCurveToPoint(CGContextRef _Nullable c, + CGFloat cpx, CGFloat cpy, CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextClosePath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddRects(CGContextRef _Nullable c, + const CGRect * _Nullable rects, size_t count) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddLines(CGContextRef _Nullable c, + const CGPoint * _Nullable points, size_t count) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddEllipseInRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextAddArc(CGContextRef _Nullable c, CGFloat x, CGFloat y, + CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddArcToPoint(CGContextRef _Nullable c, + CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextAddPath(CGContextRef _Nullable c, + CGPathRef _Nullable path) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextReplacePathWithStrokedPath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGContextIsPathEmpty(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGContextGetPathCurrentPoint(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGContextGetPathBoundingBox(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPathRef _Nullable CGContextCopyPath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGContextPathContainsPoint(CGContextRef _Nullable c, + CGPoint point, CGPathDrawingMode mode) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawPath(CGContextRef _Nullable c, + CGPathDrawingMode mode) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextFillPath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextEOFillPath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextStrokePath(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextFillRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextFillRects(CGContextRef _Nullable c, + const CGRect * _Nullable rects, size_t count) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextStrokeRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextStrokeRectWithWidth(CGContextRef _Nullable c, + CGRect rect, CGFloat width) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextClearRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextFillEllipseInRect(CGContextRef _Nullable c, + CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextStrokeEllipseInRect(CGContextRef _Nullable c, + CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextStrokeLineSegments(CGContextRef _Nullable c, + const CGPoint * _Nullable points, size_t count) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextClip(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextEOClip(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextResetClip(CGContextRef c); +extern "C" __attribute__((visibility("default"))) void CGContextClipToMask(CGContextRef _Nullable c, CGRect rect, + CGImageRef _Nullable mask) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGContextGetClipBoundingBox(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextClipToRect(CGContextRef _Nullable c, CGRect rect) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextClipToRects(CGContextRef _Nullable c, + const CGRect * rects, size_t count) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetFillColorWithColor(CGContextRef _Nullable c, + CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetStrokeColorWithColor(CGContextRef _Nullable c, + CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetFillColorSpace(CGContextRef _Nullable c, + CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetStrokeColorSpace(CGContextRef _Nullable c, + CGColorSpaceRef _Nullable space) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetFillColor(CGContextRef _Nullable c, + const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetStrokeColor(CGContextRef _Nullable c, + const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetFillPattern(CGContextRef _Nullable c, + CGPatternRef _Nullable pattern, const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetStrokePattern(CGContextRef _Nullable c, + CGPatternRef _Nullable pattern, const CGFloat * _Nullable components) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetPatternPhase(CGContextRef _Nullable c, CGSize phase) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetGrayFillColor(CGContextRef _Nullable c, + CGFloat gray, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetGrayStrokeColor(CGContextRef _Nullable c, + CGFloat gray, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetRGBFillColor(CGContextRef _Nullable c, CGFloat red, + CGFloat green, CGFloat blue, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetRGBStrokeColor(CGContextRef _Nullable c, + CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetCMYKFillColor(CGContextRef _Nullable c, + CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetCMYKStrokeColor(CGContextRef _Nullable c, + CGFloat cyan, CGFloat magenta, CGFloat yellow, CGFloat black, CGFloat alpha) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetRenderingIntent(CGContextRef _Nullable c, + CGColorRenderingIntent intent) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawImage(CGContextRef _Nullable c, CGRect rect, + CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextDrawTiledImage(CGContextRef _Nullable c, CGRect rect, + CGImageRef _Nullable image) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGInterpolationQuality + CGContextGetInterpolationQuality(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetInterpolationQuality(CGContextRef _Nullable c, + CGInterpolationQuality quality) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetShadowWithColor(CGContextRef _Nullable c, + CGSize offset, CGFloat blur, CGColorRef _Nullable color) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetShadow(CGContextRef _Nullable c, CGSize offset, + CGFloat blur) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextDrawLinearGradient(CGContextRef _Nullable c, + CGGradientRef _Nullable gradient, CGPoint startPoint, CGPoint endPoint, + CGGradientDrawingOptions options) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextDrawRadialGradient(CGContextRef _Nullable c, + CGGradientRef _Nullable gradient, CGPoint startCenter, CGFloat startRadius, + CGPoint endCenter, CGFloat endRadius, CGGradientDrawingOptions options) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawShading(CGContextRef _Nullable c, + _Nullable CGShadingRef shading) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetCharacterSpacing(CGContextRef _Nullable c, + CGFloat spacing) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetTextPosition(CGContextRef _Nullable c, + CGFloat x, CGFloat y) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGContextGetTextPosition(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetTextMatrix(CGContextRef _Nullable c, + CGAffineTransform t) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform CGContextGetTextMatrix(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetTextDrawingMode(CGContextRef _Nullable c, + CGTextDrawingMode mode) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetFont(CGContextRef _Nullable c, + CGFontRef _Nullable font) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetFontSize(CGContextRef _Nullable c, CGFloat size) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowGlyphsAtPositions(CGContextRef _Nullable c, + const CGGlyph * _Nullable glyphs, const CGPoint * _Nullable Lpositions, + size_t count) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawPDFPage(CGContextRef _Nullable c, + CGPDFPageRef _Nullable page) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextBeginPage(CGContextRef _Nullable c, + const CGRect * _Nullable mediaBox) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextEndPage(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGContextRetain(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextRelease(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextFlush(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextSynchronize(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetShouldAntialias(CGContextRef _Nullable c, + bool shouldAntialias) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetAllowsAntialiasing(CGContextRef _Nullable c, + bool allowsAntialiasing) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetShouldSmoothFonts(CGContextRef _Nullable c, + bool shouldSmoothFonts) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetAllowsFontSmoothing(CGContextRef _Nullable c, + bool allowsFontSmoothing) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetShouldSubpixelPositionFonts( + CGContextRef _Nullable c, bool shouldSubpixelPositionFonts) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetAllowsFontSubpixelPositioning( + CGContextRef _Nullable c, bool allowsFontSubpixelPositioning) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSetShouldSubpixelQuantizeFonts( + CGContextRef _Nullable c, bool shouldSubpixelQuantizeFonts) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextSetAllowsFontSubpixelQuantization( + CGContextRef _Nullable c, bool allowsFontSubpixelQuantization) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGContextBeginTransparencyLayer(CGContextRef _Nullable c, + CFDictionaryRef _Nullable auxiliaryInfo) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextBeginTransparencyLayerWithRect( + CGContextRef _Nullable c, CGRect rect, CFDictionaryRef _Nullable auxInfo) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGContextEndTransparencyLayer(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.3))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGAffineTransform + CGContextGetUserSpaceToDeviceSpaceTransform(CGContextRef _Nullable c) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGContextConvertPointToDeviceSpace(CGContextRef _Nullable c, + CGPoint point) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPoint CGContextConvertPointToUserSpace(CGContextRef _Nullable c, + CGPoint point) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGSize CGContextConvertSizeToDeviceSpace(CGContextRef _Nullable c, + CGSize size) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGSize CGContextConvertSizeToUserSpace(CGContextRef _Nullable c, + CGSize size) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGContextConvertRectToDeviceSpace(CGContextRef _Nullable c, + CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGRect CGContextConvertRectToUserSpace(CGContextRef _Nullable c, + CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextSelectFont(CGContextRef _Nullable c, + const char * _Nullable name, CGFloat size, CGTextEncoding textEncoding) + __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowText(CGContextRef _Nullable c, + const char * _Nullable string, size_t length) + __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowTextAtPoint(CGContextRef _Nullable c, + CGFloat x, CGFloat y, const char * _Nullable string, size_t length) + __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowGlyphs(CGContextRef _Nullable c, + const CGGlyph * _Nullable g, size_t count) + __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowGlyphsAtPoint(CGContextRef _Nullable c, CGFloat x, + CGFloat y, const CGGlyph * _Nullable glyphs, size_t count) + __attribute__((availability(macos,introduced=10.0,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextShowGlyphsWithAdvances(CGContextRef _Nullable c, + const CGGlyph * _Nullable glyphs, const CGSize * _Nullable advances, + size_t count) + __attribute__((availability(macos,introduced=10.3,deprecated=10.9,message="No longer supported"))) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="No longer supported"))); + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawPDFDocument(CGContextRef _Nullable c, CGRect rect, + CGPDFDocumentRef _Nullable document, int page) + __attribute__((availability(macos,introduced=10.0,deprecated=10.5,message="No longer supported"))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + + + + +typedef void (*CGBitmapContextReleaseDataCallback)(void * _Nullable releaseInfo, + void * _Nullable data); +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGBitmapContextCreateWithData( + void * _Nullable data, size_t width, size_t height, size_t bitsPerComponent, + size_t bytesPerRow, CGColorSpaceRef _Nullable space, uint32_t bitmapInfo, + CGBitmapContextReleaseDataCallback _Nullable releaseCallback, + void * _Nullable releaseInfo) + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGBitmapContextCreate(void * _Nullable data, + size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, + CGColorSpaceRef _Nullable space, uint32_t bitmapInfo) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void * _Nullable CGBitmapContextGetData(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGBitmapContextGetWidth(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGBitmapContextGetHeight(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGBitmapContextGetBitsPerComponent(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGBitmapContextGetBitsPerPixel(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGBitmapContextGetBytesPerRow(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGColorSpaceRef _Nullable CGBitmapContextGetColorSpace( + CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGImageAlphaInfo CGBitmapContextGetAlphaInfo( + CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGBitmapInfo CGBitmapContextGetBitmapInfo( + CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGBitmapContextCreateImage( + CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + +typedef const struct __attribute__((objc_bridge(id))) CGColorConversionInfo* CGColorConversionInfoRef; + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility("default"))) CFTypeID CGColorConversionInfoGetTypeID(void); + +typedef uint32_t CGColorConversionInfoTransformType; enum { + kCGColorConversionTransformFromSpace = 0, + kCGColorConversionTransformToSpace, + kCGColorConversionTransformApplySpace +}; + + + + + + +extern "C" __attribute__((visibility("default"))) CGColorConversionInfoRef _Nullable CGColorConversionInfoCreate(_Nullable CGColorSpaceRef src, _Nullable CGColorSpaceRef dst) + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) CGColorConversionInfoRef _Nullable CGColorConversionInfoCreateWithOptions(_Nonnull CGColorSpaceRef src, _Nonnull CGColorSpaceRef dst, CFDictionaryRef _Nullable options) +__attribute__((availability(macos,introduced=10.14.6))) __attribute__((availability(ios,introduced=13))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGColorConversionInfoRef _Nullable CGColorConversionInfoCreateFromList + (CFDictionaryRef _Nullable options, _Nullable CGColorSpaceRef, CGColorConversionInfoTransformType, CGColorRenderingIntent, ...) + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) CGColorConversionInfoRef _Nullable CGColorConversionInfoCreateFromListWithArguments + (CFDictionaryRef _Nullable options, _Nullable CGColorSpaceRef, CGColorConversionInfoTransformType, CGColorRenderingIntent, va_list) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorConversionBlackPointCompensation __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGColorConversionTRCSize __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +#pragma clang assume_nonnull end + + +typedef struct __attribute__((objc_bridge(id))) CGDataConsumer *CGDataConsumerRef; + + + + + + +#pragma clang assume_nonnull begin + + + + +typedef size_t (*CGDataConsumerPutBytesCallback)(void * _Nullable info, + const void * buffer, size_t count); + + + + +typedef void (*CGDataConsumerReleaseInfoCallback)(void * _Nullable info); + + + + + + + +struct CGDataConsumerCallbacks { + CGDataConsumerPutBytesCallback _Nullable putBytes; + CGDataConsumerReleaseInfoCallback _Nullable releaseConsumer; +}; +typedef struct CGDataConsumerCallbacks CGDataConsumerCallbacks; + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGDataConsumerGetTypeID(void) + __attribute__((availability(macos,introduced=10.2))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGDataConsumerRef _Nullable CGDataConsumerCreate( + void * _Nullable info, const CGDataConsumerCallbacks * _Nullable cbks) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataConsumerRef _Nullable CGDataConsumerCreateWithURL( + CFURLRef _Nullable url) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataConsumerRef _Nullable CGDataConsumerCreateWithCFData( + CFMutableDataRef _Nullable data) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGDataConsumerRef _Nullable CGDataConsumerRetain( + CGDataConsumerRef _Nullable consumer) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGDataConsumerRelease(_Nullable CGDataConsumerRef consumer) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + +typedef int32_t CGError; enum { + kCGErrorSuccess = 0, + kCGErrorFailure = 1000, + kCGErrorIllegalArgument = 1001, + kCGErrorInvalidConnection = 1002, + kCGErrorInvalidContext = 1003, + kCGErrorCannotComplete = 1004, + kCGErrorNotImplemented = 1006, + kCGErrorRangeCheck = 1007, + kCGErrorTypeCheck = 1008, + kCGErrorInvalidOperation = 1010, + kCGErrorNoneAvailable = 1011, +}; + + + + + +typedef struct __attribute__((objc_bridge(id))) CGLayer *CGLayerRef; + + + + + + +#pragma clang assume_nonnull begin + + + + + + +extern "C" __attribute__((visibility("default"))) CGLayerRef _Nullable CGLayerCreateWithContext( + CGContextRef _Nullable context, + CGSize size, CFDictionaryRef _Nullable auxiliaryInfo) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGLayerRef _Nullable CGLayerRetain(CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGLayerRelease(CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGSize CGLayerGetSize(CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGLayerGetContext(CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawLayerInRect(CGContextRef _Nullable context, + CGRect rect, CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) void CGContextDrawLayerAtPoint(CGContextRef _Nullable context, + CGPoint point, CGLayerRef _Nullable layer) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGLayerGetTypeID(void) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + + + + + + +typedef struct CGPDFContentStream *CGPDFContentStreamRef; + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) CGPDFContentStreamRef CGPDFContentStreamCreateWithPage( + CGPDFPageRef page) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFContentStreamRef CGPDFContentStreamCreateWithStream( + CGPDFStreamRef stream, CGPDFDictionaryRef streamResources, + CGPDFContentStreamRef _Nullable parent) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFContentStreamRef CGPDFContentStreamRetain( + CGPDFContentStreamRef cs) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContentStreamRelease(CGPDFContentStreamRef cs) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nullable CGPDFContentStreamGetStreams(CGPDFContentStreamRef cs) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) CGPDFObjectRef _Nullable CGPDFContentStreamGetResource( + CGPDFContentStreamRef cs, const char *category, const char *name) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGPDFContextCreate(CGDataConsumerRef _Nullable consumer, + const CGRect *_Nullable mediaBox, CFDictionaryRef _Nullable auxiliaryInfo) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGContextRef _Nullable CGPDFContextCreateWithURL(CFURLRef _Nullable url, + const CGRect * _Nullable mediaBox, CFDictionaryRef _Nullable auxiliaryInfo) + __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextClose(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextBeginPage(CGContextRef _Nullable context, + CFDictionaryRef _Nullable pageInfo) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextEndPage(CGContextRef _Nullable context) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) void CGPDFContextAddDocumentMetadata(CGContextRef _Nullable context, + CFDataRef _Nullable metadata) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextSetURLForRect(CGContextRef _Nullable context, CFURLRef url, + CGRect rect) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextAddDestinationAtPoint(CGContextRef _Nullable context, + CFStringRef name, CGPoint point) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextSetDestinationForRect(CGContextRef _Nullable context, + CFStringRef name, CGRect rect) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextMediaBox + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextCropBox + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextBleedBox + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextTrimBox + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextArtBox + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextTitle + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextAuthor + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextSubject + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextKeywords + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextCreator + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextOwnerPassword + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextUserPassword + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextEncryptionKeyLength + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextAllowsPrinting + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextAllowsCopying + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextOutputIntent + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXOutputIntentSubtype + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXOutputConditionIdentifier + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXOutputCondition + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXRegistryName + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXInfo + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFXDestinationOutputProfile + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextOutputIntents + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGPDFContextAccessPermissions + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextSetOutline(CGContextRef context, _Nullable CFDictionaryRef outline) + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +typedef int32_t CGPDFTagType; enum { + + + CGPDFTagTypeDocument = 100, + CGPDFTagTypePart, + CGPDFTagTypeArt, + CGPDFTagTypeSection, + CGPDFTagTypeDiv, + CGPDFTagTypeBlockQuote, + CGPDFTagTypeCaption, + CGPDFTagTypeTOC, + CGPDFTagTypeTOCI, + CGPDFTagTypeIndex, + CGPDFTagTypeNonStructure, + CGPDFTagTypePrivate, + + + + + CGPDFTagTypeParagraph = 200, + CGPDFTagTypeHeader, + CGPDFTagTypeHeader1, + CGPDFTagTypeHeader2, + CGPDFTagTypeHeader3, + CGPDFTagTypeHeader4, + CGPDFTagTypeHeader5, + CGPDFTagTypeHeader6, + + + CGPDFTagTypeList = 300, + CGPDFTagTypeListItem, + CGPDFTagTypeLabel, + CGPDFTagTypeListBody, + + + CGPDFTagTypeTable = 400, + CGPDFTagTypeTableRow, + CGPDFTagTypeTableHeaderCell, + CGPDFTagTypeTableDataCell, + CGPDFTagTypeTableHeader, + CGPDFTagTypeTableBody, + CGPDFTagTypeTableFooter, + + + CGPDFTagTypeSpan = 500, + CGPDFTagTypeQuote, + CGPDFTagTypeNote, + CGPDFTagTypeReference, + CGPDFTagTypeBibliography, + CGPDFTagTypeCode, + CGPDFTagTypeLink, + CGPDFTagTypeAnnotation, + + + CGPDFTagTypeRuby = 600, + CGPDFTagTypeRubyBaseText, + CGPDFTagTypeRubyAnnotationText, + CGPDFTagTypeRubyPunctuation, + CGPDFTagTypeWarichu, + CGPDFTagTypeWarichuText, + CGPDFTagTypeWarichuPunctiation, + + + CGPDFTagTypeFigure = 700, + CGPDFTagTypeFormula, + CGPDFTagTypeForm, +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) const char* _Nullable CGPDFTagTypeGetName(CGPDFTagType tagType) __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + + +typedef CFStringRef CGPDFTagProperty __attribute__((swift_wrapper(enum))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CGPDFTagProperty _Nonnull kCGPDFTagPropertyActualText + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CGPDFTagProperty _Nonnull kCGPDFTagPropertyAlternativeText + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CGPDFTagProperty _Nonnull kCGPDFTagPropertyTitleText + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CGPDFTagProperty _Nonnull kCGPDFTagPropertyLanguageText + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) void CGPDFContextBeginTag(CGContextRef _Nonnull context, CGPDFTagType tagType, CFDictionaryRef _Nullable tagProperties) + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFContextEndTag(CGContextRef _Nonnull context) + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +#pragma clang assume_nonnull end + + + +typedef struct CGPDFOperatorTable *CGPDFOperatorTableRef; + + +typedef struct CGPDFScanner *CGPDFScannerRef; + + + + + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility("default"))) CGPDFScannerRef CGPDFScannerCreate( + CGPDFContentStreamRef cs, + CGPDFOperatorTableRef _Nullable table, void * _Nullable info) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFScannerRef _Nullable CGPDFScannerRetain( + CGPDFScannerRef _Nullable scanner) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFScannerRelease(CGPDFScannerRef _Nullable scanner) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerScan(CGPDFScannerRef _Nullable scanner) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFContentStreamRef CGPDFScannerGetContentStream( + CGPDFScannerRef scanner) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopObject(CGPDFScannerRef scanner, + CGPDFObjectRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopBoolean(CGPDFScannerRef scanner, + CGPDFBoolean * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopInteger(CGPDFScannerRef scanner, + CGPDFInteger * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopNumber(CGPDFScannerRef scanner, + CGPDFReal * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopName(CGPDFScannerRef scanner, + const char * _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopString(CGPDFScannerRef scanner, + CGPDFStringRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopArray(CGPDFScannerRef scanner, + CGPDFArrayRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopDictionary(CGPDFScannerRef scanner, + CGPDFDictionaryRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + + +extern "C" __attribute__((visibility("default"))) bool CGPDFScannerPopStream(CGPDFScannerRef scanner, + CGPDFStreamRef _Nullable * _Nullable value) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef void (*CGPDFOperatorCallback)(CGPDFScannerRef scanner, + void * _Nullable info); + + + +extern "C" __attribute__((visibility("default"))) CGPDFOperatorTableRef _Nullable CGPDFOperatorTableCreate(void) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) CGPDFOperatorTableRef _Nullable CGPDFOperatorTableRetain( + CGPDFOperatorTableRef _Nullable table) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFOperatorTableRelease( + CGPDFOperatorTableRef _Nullable table) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); + + + +extern "C" __attribute__((visibility("default"))) void CGPDFOperatorTableSetCallback( + CGPDFOperatorTableRef _Nullable table, + const char * _Nullable name, CGPDFOperatorCallback _Nullable callback) + __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=2.0))); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + + + + + + +typedef struct __attribute__((objc_boxable)) UIEdgeInsets { + CGFloat top, left, bottom, right; +} UIEdgeInsets; +typedef struct __attribute__((objc_boxable)) NSDirectionalEdgeInsets { + CGFloat top, leading, bottom, trailing; +} NSDirectionalEdgeInsets __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + + + +typedef struct __attribute__((objc_boxable)) UIOffset { + CGFloat horizontal, vertical; +} UIOffset; + +typedef NSUInteger UIRectEdge; enum { + UIRectEdgeNone = 0, + UIRectEdgeTop = 1 << 0, + UIRectEdgeLeft = 1 << 1, + UIRectEdgeBottom = 1 << 2, + UIRectEdgeRight = 1 << 3, + UIRectEdgeAll = UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeBottom | UIRectEdgeRight +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSUInteger UIRectCorner; enum { + UIRectCornerTopLeft = 1 << 0, + UIRectCornerTopRight = 1 << 1, + UIRectCornerBottomLeft = 1 << 2, + UIRectCornerBottomRight = 1 << 3, + UIRectCornerAllCorners = ~0UL +}; + +typedef NSUInteger UIAxis; enum { + UIAxisNeither = 0, + UIAxisHorizontal = 1 << 0, + UIAxisVertical = 1 << 1, + UIAxisBoth = (UIAxisHorizontal | UIAxisVertical), +} __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +typedef NSUInteger NSDirectionalRectEdge; enum { + NSDirectionalRectEdgeNone = 0, + NSDirectionalRectEdgeTop = 1 << 0, + NSDirectionalRectEdgeLeading = 1 << 1, + NSDirectionalRectEdgeBottom = 1 << 2, + NSDirectionalRectEdgeTrailing = 1 << 3, + NSDirectionalRectEdgeAll = NSDirectionalRectEdgeTop | NSDirectionalRectEdgeLeading | NSDirectionalRectEdgeBottom | NSDirectionalRectEdgeTrailing +} __attribute__((availability(ios,introduced=13.0))); + + +typedef NSUInteger UIDirectionalRectEdge; enum { + UIDirectionalRectEdgeNone = 0, + UIDirectionalRectEdgeTop = 1 << 0, + UIDirectionalRectEdgeLeading = 1 << 1, + UIDirectionalRectEdgeBottom = 1 << 2, + UIDirectionalRectEdgeTrailing = 1 << 3, + UIDirectionalRectEdgeAll = UIDirectionalRectEdgeTop | UIDirectionalRectEdgeLeading | UIDirectionalRectEdgeBottom | UIDirectionalRectEdgeTrailing +} __attribute__((availability(ios,introduced=13.0,deprecated=13.0,replacement="NSDirectionalRectEdge"))) __attribute__((availability(watchos,introduced=6.0,deprecated=6.0,replacement="NSDirectionalRectEdge"))) __attribute__((availability(tvos,introduced=13.0,deprecated=13.0,replacement="NSDirectionalRectEdge"))); + +typedef NSInteger NSRectAlignment; enum { + NSRectAlignmentNone = 0, + NSRectAlignmentTop, + NSRectAlignmentTopLeading, + NSRectAlignmentLeading, + NSRectAlignmentBottomLeading, + NSRectAlignmentBottom, + NSRectAlignmentBottomTrailing, + NSRectAlignmentTrailing, + NSRectAlignmentTopTrailing, +} __attribute__((availability(ios,introduced=13.0))); + + + +static inline UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) { + UIEdgeInsets insets = {top, left, bottom, right}; + return insets; +} + + +static inline NSDirectionalEdgeInsets NSDirectionalEdgeInsetsMake(CGFloat top, CGFloat leading, CGFloat bottom, CGFloat trailing) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) +{ + NSDirectionalEdgeInsets insets = {top, leading, bottom, trailing}; + return insets; +} + + +static inline CGRect UIEdgeInsetsInsetRect(CGRect rect, UIEdgeInsets insets) { + rect.origin.x += insets.left; + rect.origin.y += insets.top; + rect.size.width -= (insets.left + insets.right); + rect.size.height -= (insets.top + insets.bottom); + return rect; +} + +static inline UIOffset UIOffsetMake(CGFloat horizontal, CGFloat vertical) { + UIOffset offset = {horizontal, vertical}; + return offset; +} + +static inline BOOL UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsets insets1, UIEdgeInsets insets2) { + return insets1.left == insets2.left && insets1.top == insets2.top && insets1.right == insets2.right && insets1.bottom == insets2.bottom; +} + + +static inline BOOL NSDirectionalEdgeInsetsEqualToDirectionalEdgeInsets(NSDirectionalEdgeInsets insets1, NSDirectionalEdgeInsets insets2) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) +{ + return insets1.leading == insets2.leading && insets1.top == insets2.top && insets1.trailing == insets2.trailing && insets1.bottom == insets2.bottom; +} + + +static inline BOOL UIOffsetEqualToOffset(UIOffset offset1, UIOffset offset2) { + return offset1.horizontal == offset2.horizontal && offset1.vertical == offset2.vertical; +} + +extern "C" __attribute__((visibility ("default"))) const UIEdgeInsets UIEdgeInsetsZero; + +extern "C" __attribute__((visibility ("default"))) const NSDirectionalEdgeInsets NSDirectionalEdgeInsetsZero __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern "C" __attribute__((visibility ("default"))) const UIOffset UIOffsetZero; + +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromCGPoint(CGPoint point); +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromCGVector(CGVector vector); +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromCGSize(CGSize size); +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromCGRect(CGRect rect); +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromCGAffineTransform(CGAffineTransform transform); +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromUIEdgeInsets(UIEdgeInsets insets); + +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromDirectionalEdgeInsets(NSDirectionalEdgeInsets insets) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern "C" __attribute__((visibility ("default"))) NSString *NSStringFromUIOffset(UIOffset offset); + +extern "C" __attribute__((visibility ("default"))) CGPoint CGPointFromString(NSString *string); +extern "C" __attribute__((visibility ("default"))) CGVector CGVectorFromString(NSString *string); +extern "C" __attribute__((visibility ("default"))) CGSize CGSizeFromString(NSString *string); +extern "C" __attribute__((visibility ("default"))) CGRect CGRectFromString(NSString *string); +extern "C" __attribute__((visibility ("default"))) CGAffineTransform CGAffineTransformFromString(NSString *string); +extern "C" __attribute__((visibility ("default"))) UIEdgeInsets UIEdgeInsetsFromString(NSString *string); + +extern "C" __attribute__((visibility ("default"))) NSDirectionalEdgeInsets NSDirectionalEdgeInsetsFromString(NSString *string) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +extern "C" __attribute__((visibility ("default"))) UIOffset UIOffsetFromString(NSString *string); + +// @interface NSValue (NSValueUIGeometryExtensions) + +// + (NSValue *)valueWithCGPoint:(CGPoint)point; +// + (NSValue *)valueWithCGVector:(CGVector)vector; +// + (NSValue *)valueWithCGSize:(CGSize)size; +// + (NSValue *)valueWithCGRect:(CGRect)rect; +// + (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform; +// + (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets; + +// + (NSValue *)valueWithDirectionalEdgeInsets:(NSDirectionalEdgeInsets)insets __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +// + (NSValue *)valueWithUIOffset:(UIOffset)insets __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic, readonly) CGPoint CGPointValue; +// @property(nonatomic, readonly) CGVector CGVectorValue; +// @property(nonatomic, readonly) CGSize CGSizeValue; +// @property(nonatomic, readonly) CGRect CGRectValue; +// @property(nonatomic, readonly) CGAffineTransform CGAffineTransformValue; +// @property(nonatomic, readonly) UIEdgeInsets UIEdgeInsetsValue; + +// @property(nonatomic, readonly) NSDirectionalEdgeInsets directionalEdgeInsetsValue __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +// @property(nonatomic, readonly) UIOffset UIOffsetValue __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + +// @interface NSCoder (UIGeometryKeyedCoding) + +// - (void)encodeCGPoint:(CGPoint)point forKey:(NSString *)key; +// - (void)encodeCGVector:(CGVector)vector forKey:(NSString *)key; +// - (void)encodeCGSize:(CGSize)size forKey:(NSString *)key; +// - (void)encodeCGRect:(CGRect)rect forKey:(NSString *)key; +// - (void)encodeCGAffineTransform:(CGAffineTransform)transform forKey:(NSString *)key; +// - (void)encodeUIEdgeInsets:(UIEdgeInsets)insets forKey:(NSString *)key; + +// - (void)encodeDirectionalEdgeInsets:(NSDirectionalEdgeInsets)insets forKey:(NSString *)key __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +// - (void)encodeUIOffset:(UIOffset)offset forKey:(NSString *)key __attribute__((availability(ios,introduced=5.0))); + +// - (CGPoint)decodeCGPointForKey:(NSString *)key; +// - (CGVector)decodeCGVectorForKey:(NSString *)key; +// - (CGSize)decodeCGSizeForKey:(NSString *)key; +// - (CGRect)decodeCGRectForKey:(NSString *)key; +// - (CGAffineTransform)decodeCGAffineTransformForKey:(NSString *)key; +// - (UIEdgeInsets)decodeUIEdgeInsetsForKey:(NSString *)key; + +// - (NSDirectionalEdgeInsets)decodeDirectionalEdgeInsetsForKey:(NSString *)key __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +// - (UIOffset)decodeUIOffsetForKey:(NSString *)key __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + +struct UIBezierPath_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)bezierPath; +// + (instancetype)bezierPathWithRect:(CGRect)rect; +// + (instancetype)bezierPathWithOvalInRect:(CGRect)rect; +// + (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; +// + (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii; +// + (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise; +// + (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath; + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + + +// @property(nonatomic) CGPathRef CGPath; +// - (CGPathRef)CGPath __attribute__((objc_returns_inner_pointer)) __attribute__((cf_returns_not_retained)); + + + +// - (void)moveToPoint:(CGPoint)point; +// - (void)addLineToPoint:(CGPoint)point; +// - (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2; +// - (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint; +// - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise __attribute__((availability(ios,introduced=4.0))); +// - (void)closePath; + +// - (void)removeAllPoints; + + + +// - (void)appendPath:(UIBezierPath *)bezierPath; + + + +// - (UIBezierPath *)bezierPathByReversingPath __attribute__((availability(ios,introduced=6.0))); + + + +// - (void)applyTransform:(CGAffineTransform)transform; + + + +// @property(readonly,getter=isEmpty) BOOL empty; +// @property(nonatomic,readonly) CGRect bounds; +// @property(nonatomic,readonly) CGPoint currentPoint; +// - (BOOL)containsPoint:(CGPoint)point; + + + +// @property(nonatomic) CGFloat lineWidth; +// @property(nonatomic) CGLineCap lineCapStyle; +// @property(nonatomic) CGLineJoin lineJoinStyle; +// @property(nonatomic) CGFloat miterLimit; +// @property(nonatomic) CGFloat flatness; +// @property(nonatomic) BOOL usesEvenOddFillRule; + +// - (void)setLineDash:(nullable const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase; +// - (void)getLineDash:(nullable CGFloat *)pattern count:(nullable NSInteger *)count phase:(nullable CGFloat *)phase; + + + +// - (void)fill; +// - (void)stroke; + + +// - (void)fillWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha; +// - (void)strokeWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha; + +// - (void)addClip; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + + + +extern "C" { + + + + +extern __attribute__((visibility("default"))) CFTimeInterval CACurrentMediaTime (void) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))); + +} +struct CATransform3D +{ + CGFloat m11, m12, m13, m14; + CGFloat m21, m22, m23, m24; + CGFloat m31, m32, m33, m34; + CGFloat m41, m42, m43, m44; +}; + +typedef struct __attribute__((objc_boxable)) CATransform3D CATransform3D; + +extern "C" { + + + +extern __attribute__((visibility("default"))) const CATransform3D CATransform3DIdentity + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) bool CATransform3DIsIdentity (CATransform3D t) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) bool CATransform3DEqualToTransform (CATransform3D a, + CATransform3D b) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DMakeTranslation (CGFloat tx, + CGFloat ty, CGFloat tz) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DMakeScale (CGFloat sx, CGFloat sy, + CGFloat sz) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DMakeRotation (CGFloat angle, CGFloat x, + CGFloat y, CGFloat z) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, + CGFloat ty, CGFloat tz) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DScale (CATransform3D t, CGFloat sx, + CGFloat sy, CGFloat sz) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, + CGFloat x, CGFloat y, CGFloat z) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DConcat (CATransform3D a, CATransform3D b) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DInvert (CATransform3D t) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CATransform3D CATransform3DMakeAffineTransform (CGAffineTransform m) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) bool CATransform3DIsAffine (CATransform3D t) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CGAffineTransform CATransform3DGetAffineTransform (CATransform3D t) + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + +} + + + + + +#pragma clang assume_nonnull begin + +// @interface NSValue (CATransform3DAdditions) + +// + (NSValue *)valueWithCATransform3D:(CATransform3D)t; + +// @property(readonly) CATransform3D CATransform3DValue; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +typedef NSString * CAMediaTimingFillMode __attribute__((swift_wrapper(enum))); + +#pragma clang assume_nonnull begin + +// @protocol CAMediaTiming + + + + +// @property CFTimeInterval beginTime; + + + +// @property CFTimeInterval duration; + + + + + +// @property float speed; + + + + + + +// @property CFTimeInterval timeOffset; + + + +// @property float repeatCount; + + + +// @property CFTimeInterval repeatDuration; + + + + +// @property BOOL autoreverses; + + + + + + + +// @property(copy) CAMediaTimingFillMode fillMode; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAMediaTimingFillMode const kCAFillModeForwards + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFillMode const kCAFillModeBackwards + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFillMode const kCAFillModeBoth + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFillMode const kCAFillModeRemoved + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + +// @class NSEnumerator; +#ifndef _REWRITER_typedef_NSEnumerator +#define _REWRITER_typedef_NSEnumerator +typedef struct objc_object NSEnumerator; +typedef struct {} _objc_exc_NSEnumerator; +#endif + +#ifndef _REWRITER_typedef_CAAnimation +#define _REWRITER_typedef_CAAnimation +typedef struct objc_object CAAnimation; +typedef struct {} _objc_exc_CAAnimation; +#endif + +#ifndef _REWRITER_typedef_CALayerArray +#define _REWRITER_typedef_CALayerArray +typedef struct objc_object CALayerArray; +typedef struct {} _objc_exc_CALayerArray; +#endif + +// @protocol CAAction, CALayerDelegate; + +#pragma clang assume_nonnull begin + +typedef NSString * CALayerContentsGravity __attribute__((swift_wrapper(enum))); +typedef NSString * CALayerContentsFormat __attribute__((swift_wrapper(enum))); +typedef NSString * CALayerContentsFilter __attribute__((swift_wrapper(enum))); +typedef NSString * CALayerCornerCurve __attribute__((swift_wrapper(enum))); + + + +typedef unsigned int CAEdgeAntialiasingMask; enum +{ + kCALayerLeftEdge = 1U << 0, + kCALayerRightEdge = 1U << 1, + kCALayerBottomEdge = 1U << 2, + kCALayerTopEdge = 1U << 3, +}; + + + +typedef NSUInteger CACornerMask; enum +{ + kCALayerMinXMinYCorner = 1U << 0, + kCALayerMaxXMinYCorner = 1U << 1, + kCALayerMinXMaxYCorner = 1U << 2, + kCALayerMaxXMaxYCorner = 1U << 3, +}; + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CALayer +#define _REWRITER_typedef_CALayer +typedef struct objc_object CALayer; +typedef struct {} _objc_exc_CALayer; +#endif + + struct _CALayerIvars { + int32_t refcount; + uint32_t magic; + void * _Nonnull layer; + } ; +struct CALayer_IMPL { + struct NSObject_IMPL NSObject_IVARS; + + struct _CALayerIvars _attr; +}; + + + + +// + (instancetype)layer; + + + +// - (instancetype)init; + + + + + + + +// - (instancetype)initWithLayer:(id)layer; +// - (nullable instancetype)presentationLayer; + + + + + + + +// - (instancetype)modelLayer; +// + (nullable id)defaultValueForKey:(NSString *)key; +// + (BOOL)needsDisplayForKey:(NSString *)key; + + + + + + +// - (BOOL)shouldArchiveValueForKey:(NSString *)key; + + + + + +// @property CGRect bounds; + + + + +// @property CGPoint position; + + + + +// @property CGFloat zPosition; + + + + + + +// @property CGPoint anchorPoint; + + + + +// @property CGFloat anchorPointZ; + + + + +// @property CATransform3D transform; + + + + +// - (CGAffineTransform)affineTransform; +// - (void)setAffineTransform:(CGAffineTransform)m; + + + + + + +// @property CGRect frame; + + + + +// @property(getter=isHidden) BOOL hidden; + + + + +// @property(getter=isDoubleSided) BOOL doubleSided; + + + + + + + +// @property(getter=isGeometryFlipped) BOOL geometryFlipped; +// - (BOOL)contentsAreFlipped; + + + + +// @property(nullable, readonly) CALayer *superlayer; + + + + +// - (void)removeFromSuperlayer; + + + + + + + +// @property(nullable, copy) NSArray<__kindof CALayer *> *sublayers; + + + + +// - (void)addSublayer:(CALayer *)layer; + + + + + +// - (void)insertSublayer:(CALayer *)layer atIndex:(unsigned)idx; + + + + + +// - (void)insertSublayer:(CALayer *)layer below:(nullable CALayer *)sibling; +// - (void)insertSublayer:(CALayer *)layer above:(nullable CALayer *)sibling; + + + + + +// - (void)replaceSublayer:(CALayer *)oldLayer with:(CALayer *)newLayer; + + + + + + +// @property CATransform3D sublayerTransform; +// @property(nullable, strong) __kindof CALayer *mask; + + + + + + + +// @property BOOL masksToBounds; + + + +// - (CGPoint)convertPoint:(CGPoint)p fromLayer:(nullable CALayer *)l; +// - (CGPoint)convertPoint:(CGPoint)p toLayer:(nullable CALayer *)l; +// - (CGRect)convertRect:(CGRect)r fromLayer:(nullable CALayer *)l; +// - (CGRect)convertRect:(CGRect)r toLayer:(nullable CALayer *)l; + +// - (CFTimeInterval)convertTime:(CFTimeInterval)t fromLayer:(nullable CALayer *)l; +// - (CFTimeInterval)convertTime:(CFTimeInterval)t toLayer:(nullable CALayer *)l; +// - (nullable __kindof CALayer *)hitTest:(CGPoint)p; + + + +// - (BOOL)containsPoint:(CGPoint)p; +// @property(nullable, strong) id contents; +// @property CGRect contentsRect; +// @property(copy) CALayerContentsGravity contentsGravity; +// @property CGFloat contentsScale + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property CGRect contentsCenter; + + + + + +// @property(copy) CALayerContentsFormat contentsFormat + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + + + + +// @property(copy) CALayerContentsFilter minificationFilter; +// @property(copy) CALayerContentsFilter magnificationFilter; + + + + + +// @property float minificationFilterBias; + + + + + +// @property(getter=isOpaque) BOOL opaque; + + + + + +// - (void)display; + + + + + +// - (void)setNeedsDisplay; +// - (void)setNeedsDisplayInRect:(CGRect)r; + + + +// - (BOOL)needsDisplay; + + + +// - (void)displayIfNeeded; + + + + +// @property BOOL needsDisplayOnBoundsChange; +// @property BOOL drawsAsynchronously + __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// - (void)drawInContext:(CGContextRef)ctx; +// - (void)renderInContext:(CGContextRef)ctx; +// @property CAEdgeAntialiasingMask edgeAntialiasingMask; +// @property BOOL allowsEdgeAntialiasing + __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +// @property(nullable) CGColorRef backgroundColor; + + + + + +// @property CGFloat cornerRadius; + + + + +// @property CACornerMask maskedCorners + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +// @property(copy) CALayerCornerCurve cornerCurve + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +#if 0 ++ (CGFloat)cornerCurveExpansionFactor:(CALayerCornerCurve)curve + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +#endif + + + + + + + +// @property CGFloat borderWidth; + + + + +// @property(nullable) CGColorRef borderColor; + + + + + +// @property float opacity; +// @property BOOL allowsGroupOpacity + __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// @property(nullable, strong) id compositingFilter; + + + + +// @property(nullable, copy) NSArray *filters; + + + + +// @property(nullable, copy) NSArray *backgroundFilters; +// @property BOOL shouldRasterize; + + + + + +// @property CGFloat rasterizationScale; + + + + + + +// @property(nullable) CGColorRef shadowColor; + + + + +// @property float shadowOpacity; + + + +// @property CGSize shadowOffset; + + + +// @property CGFloat shadowRadius; +// @property(nullable) CGPathRef shadowPath; +// - (CGSize)preferredFrameSize; +// - (void)setNeedsLayout; + + + +// - (BOOL)needsLayout; + + + + +// - (void)layoutIfNeeded; + + + + + + + +// - (void)layoutSublayers; +// + (nullable id)defaultActionForKey:(NSString *)event; +// - (nullable id)actionForKey:(NSString *)event; + + + + +// @property(nullable, copy) NSDictionary> *actions; +// - (void)addAnimation:(CAAnimation *)anim forKey:(nullable NSString *)key; + + + +// - (void)removeAllAnimations; + + + +// - (void)removeAnimationForKey:(NSString *)key; + + + + + +// - (nullable NSArray *)animationKeys; + + + + + +// - (nullable __kindof CAAnimation *)animationForKey:(NSString *)key; + + + + + + +// @property(nullable, copy) NSString *name; + + + + + +// @property(nullable, weak) id delegate; +// @property(nullable, copy) NSDictionary *style; + +/* @end */ + + + + +// @protocol CAAction + + + + + + +#if 0 +- (void)runActionForKey:(NSString *)event object:(id)anObject + arguments:(nullable NSDictionary *)dict; +#endif + + +/* @end */ + + + + +// @interface NSNull (CAActionAdditions) + +/* @end */ + + + + +// @protocol CALayerDelegate +/* @optional */ + + + + + +// - (void)displayLayer:(CALayer *)layer; + + + +// - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx; + + + + + + +#if 0 +- (void)layerWillDraw:(CALayer *)layer + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +#endif + + + + + + +// - (void)layoutSublayersOfLayer:(CALayer *)layer; +// - (nullable id)actionForLayer:(CALayer *)layer forKey:(NSString *)event; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityCenter + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityTop + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityBottom + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityLeft + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityRight + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityTopLeft + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityTopRight + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityBottomLeft + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityBottomRight + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityResize + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityResizeAspect + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsGravity const kCAGravityResizeAspectFill + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CALayerContentsFormat const kCAContentsFormatRGBA8Uint + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern __attribute__((visibility("default"))) CALayerContentsFormat const kCAContentsFormatRGBA16Float + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); +extern __attribute__((visibility("default"))) CALayerContentsFormat const kCAContentsFormatGray8Uint + __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + +extern __attribute__((visibility("default"))) CALayerContentsFilter const kCAFilterNearest + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CALayerContentsFilter const kCAFilterLinear + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CALayerContentsFilter const kCAFilterTrilinear + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CALayerCornerCurve const kCACornerCurveCircular + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); +extern __attribute__((visibility("default"))) CALayerCornerCurve const kCACornerCurveContinuous + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + +extern __attribute__((visibility("default"))) NSString * const kCAOnOrderIn + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) NSString * const kCAOnOrderOut + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) NSString * const kCATransition + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_CAMediaTimingFunction +#define _REWRITER_typedef_CAMediaTimingFunction +typedef struct objc_object CAMediaTimingFunction; +typedef struct {} _objc_exc_CAMediaTimingFunction; +#endif + +#ifndef _REWRITER_typedef_CAValueFunction +#define _REWRITER_typedef_CAValueFunction +typedef struct objc_object CAValueFunction; +typedef struct {} _objc_exc_CAValueFunction; +#endif + +// @protocol CAAnimationDelegate; + +#pragma clang assume_nonnull begin + +typedef NSString * CAAnimationCalculationMode __attribute__((swift_wrapper(enum))); +typedef NSString * CAAnimationRotationMode __attribute__((swift_wrapper(enum))); +typedef NSString * CATransitionType __attribute__((swift_wrapper(enum))); +typedef NSString * CATransitionSubtype __attribute__((swift_wrapper(enum))); + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAAnimation +#define _REWRITER_typedef_CAAnimation +typedef struct objc_object CAAnimation; +typedef struct {} _objc_exc_CAAnimation; +#endif + +struct CAAnimation_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_attr; + uint32_t _flags; +}; + + + + +// + (instancetype)animation; + + + + +// + (nullable id)defaultValueForKey:(NSString *)key; +// - (BOOL)shouldArchiveValueForKey:(NSString *)key; + + + + +// @property(nullable, strong) CAMediaTimingFunction *timingFunction; + + + + + +// @property(nullable, strong) id delegate; + + + + +// @property(getter=isRemovedOnCompletion) BOOL removedOnCompletion; + +/* @end */ + + + + +// @protocol CAAnimationDelegate +/* @optional */ + + + +// - (void)animationDidStart:(CAAnimation *)anim; + + + + + + +// - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAPropertyAnimation +#define _REWRITER_typedef_CAPropertyAnimation +typedef struct objc_object CAPropertyAnimation; +typedef struct {} _objc_exc_CAPropertyAnimation; +#endif + +struct CAPropertyAnimation_IMPL { + struct CAAnimation_IMPL CAAnimation_IVARS; +}; + + + + + +// + (instancetype)animationWithKeyPath:(nullable NSString *)path; + + + +// @property(nullable, copy) NSString *keyPath; + + + + + + + +// @property(getter=isAdditive) BOOL additive; + + + + + + + +// @property(getter=isCumulative) BOOL cumulative; + + + + + +// @property(nullable, strong) CAValueFunction *valueFunction; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CABasicAnimation +#define _REWRITER_typedef_CABasicAnimation +typedef struct objc_object CABasicAnimation; +typedef struct {} _objc_exc_CABasicAnimation; +#endif + +struct CABasicAnimation_IMPL { + struct CAPropertyAnimation_IMPL CAPropertyAnimation_IVARS; +}; + +// @property(nullable, strong) id fromValue; +// @property(nullable, strong) id toValue; +// @property(nullable, strong) id byValue; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAKeyframeAnimation +#define _REWRITER_typedef_CAKeyframeAnimation +typedef struct objc_object CAKeyframeAnimation; +typedef struct {} _objc_exc_CAKeyframeAnimation; +#endif + +struct CAKeyframeAnimation_IMPL { + struct CAPropertyAnimation_IMPL CAPropertyAnimation_IVARS; +}; + + + + + +// @property(nullable, copy) NSArray *values; +// @property(nullable) CGPathRef path; + + + + + + + +// @property(nullable, copy) NSArray *keyTimes; + + + + + + +// @property(nullable, copy) NSArray *timingFunctions; + + + + + + +// @property(copy) CAAnimationCalculationMode calculationMode; +// @property(nullable, copy) NSArray *tensionValues; +// @property(nullable, copy) NSArray *continuityValues; +// @property(nullable, copy) NSArray *biasValues; + + + + + + + +// @property(nullable, copy) CAAnimationRotationMode rotationMode; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAAnimationCalculationMode const kCAAnimationLinear + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAAnimationCalculationMode const kCAAnimationDiscrete + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAAnimationCalculationMode const kCAAnimationPaced + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAAnimationCalculationMode const kCAAnimationCubic + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAAnimationCalculationMode const kCAAnimationCubicPaced + __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CAAnimationRotationMode const kCAAnimationRotateAuto + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAAnimationRotationMode const kCAAnimationRotateAutoReverse + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CASpringAnimation +#define _REWRITER_typedef_CASpringAnimation +typedef struct objc_object CASpringAnimation; +typedef struct {} _objc_exc_CASpringAnimation; +#endif + +struct CASpringAnimation_IMPL { + struct CABasicAnimation_IMPL CABasicAnimation_IVARS; +}; + + + + + +// @property CGFloat mass; + + + + +// @property CGFloat stiffness; + + + + +// @property CGFloat damping; + + + + + + + +// @property CGFloat initialVelocity; + + + + + +// @property(readonly) CFTimeInterval settlingDuration; + +/* @end */ + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CATransition +#define _REWRITER_typedef_CATransition +typedef struct objc_object CATransition; +typedef struct {} _objc_exc_CATransition; +#endif + +struct CATransition_IMPL { + struct CAAnimation_IMPL CAAnimation_IVARS; +}; + + + + + +// @property(copy) CATransitionType type; + + + + + + +// @property(nullable, copy) CATransitionSubtype subtype; + + + + + + +// @property float startProgress; +// @property float endProgress; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CATransitionType const kCATransitionFade + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionType const kCATransitionMoveIn + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionType const kCATransitionPush + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionType const kCATransitionReveal + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CATransitionSubtype const kCATransitionFromRight + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionSubtype const kCATransitionFromLeft + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionSubtype const kCATransitionFromTop + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATransitionSubtype const kCATransitionFromBottom + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAAnimationGroup +#define _REWRITER_typedef_CAAnimationGroup +typedef struct objc_object CAAnimationGroup; +typedef struct {} _objc_exc_CAAnimationGroup; +#endif + +struct CAAnimationGroup_IMPL { + struct CAAnimation_IMPL CAAnimation_IVARS; +}; + + + + + + +// @property(nullable, copy) NSArray *animations; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +#ifndef _REWRITER_typedef_NSRunLoop +#define _REWRITER_typedef_NSRunLoop +typedef struct objc_object NSRunLoop; +typedef struct {} _objc_exc_NSRunLoop; +#endif + + +#pragma clang assume_nonnull begin + + + +__attribute__((availability(ios,introduced=3.1))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macos,unavailable))) + +#ifndef _REWRITER_typedef_CADisplayLink +#define _REWRITER_typedef_CADisplayLink +typedef struct objc_object CADisplayLink; +typedef struct {} _objc_exc_CADisplayLink; +#endif + +struct CADisplayLink_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_impl; +}; + + + + + + +// + (CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel; + + + + + + +// - (void)addToRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode; + + + + + +// - (void)removeFromRunLoop:(NSRunLoop *)runloop forMode:(NSRunLoopMode)mode; + + + + +// - (void)invalidate; + + + + + + +// @property(readonly, nonatomic) CFTimeInterval timestamp; +// @property(readonly, nonatomic) CFTimeInterval duration; + + + +// @property(readonly, nonatomic) CFTimeInterval targetTimestamp + __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + + + + +// @property(getter=isPaused, nonatomic) BOOL paused; +// @property(nonatomic) NSInteger frameInterval + __attribute__((availability(ios,introduced=3.1,deprecated=10.0,message="preferredFramesPerSecond"))) __attribute__((availability(watchos,introduced=2.0,deprecated=3.0,message="preferredFramesPerSecond"))) __attribute__((availability(tvos,introduced=9.0,deprecated=10.0,message="preferredFramesPerSecond"))); + + + + + + + +// @property(nonatomic) NSInteger preferredFramesPerSecond + __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + +typedef NSUInteger EAGLRenderingAPI; enum +{ + kEAGLRenderingAPIOpenGLES1 = 1, + kEAGLRenderingAPIOpenGLES2 = 2, + kEAGLRenderingAPIOpenGLES3 = 3, +}; + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) void EAGLGetVersion(unsigned int* major, unsigned int* minor) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))); + + + + + +__attribute__((visibility("default"))) + +#ifndef _REWRITER_typedef_EAGLSharegroup +#define _REWRITER_typedef_EAGLSharegroup +typedef struct objc_object EAGLSharegroup; +typedef struct {} _objc_exc_EAGLSharegroup; +#endif + +struct EAGLSharegroup_IMPL { + struct NSObject_IMPL NSObject_IVARS; + struct _EAGLSharegroupPrivate *_private; +}; + + +// @property (nullable, copy, nonatomic) NSString* debugLabel __attribute__((availability(ios,introduced=6_0))); + +/* @end */ + + + + + + +__attribute__((visibility("default"))) +__attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))) + +#ifndef _REWRITER_typedef_EAGLContext +#define _REWRITER_typedef_EAGLContext +typedef struct objc_object EAGLContext; +typedef struct {} _objc_exc_EAGLContext; +#endif + +struct EAGLContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; + struct _EAGLContextPrivate *_private; +}; + + +// - (nullable instancetype) init __attribute__((unavailable)); +// - (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api; +// - (nullable instancetype) initWithAPI:(EAGLRenderingAPI) api sharegroup:(EAGLSharegroup*) sharegroup __attribute__((objc_designated_initializer)); + +// + (BOOL) setCurrentContext:(nullable EAGLContext*) context; +// + (nullable EAGLContext*) currentContext; + +// @property (readonly) EAGLRenderingAPI API; +// @property (nonnull, readonly) EAGLSharegroup* sharegroup; + +// @property (nullable, copy, nonatomic) NSString* debugLabel __attribute__((availability(ios,introduced=6_0))); +// @property (getter=isMultiThreaded, nonatomic) BOOL multiThreaded __attribute__((availability(ios,introduced=7_1))); +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility ("default"))) NSString * const kEAGLDrawablePropertyRetainedBacking; +extern "C" __attribute__((visibility ("default"))) NSString * const kEAGLDrawablePropertyColorFormat; + + + + +extern "C" __attribute__((visibility ("default"))) NSString * const kEAGLColorFormatRGBA8; +extern "C" __attribute__((visibility ("default"))) NSString * const kEAGLColorFormatRGB565; +extern "C" __attribute__((visibility ("default"))) NSString * const kEAGLColorFormatSRGBA8 __attribute__((availability(ios,introduced=7_0))); + + + + + +// @protocol EAGLDrawable + + +// @property(nullable, copy) NSDictionary* drawableProperties; + +/* @end */ + + + +__attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGLES API deprecated. (Define GLES_SILENCE_DEPRECATION to silence these warnings)"))) +// @interface EAGLContext (EAGLContextDrawableAdditions) + + +// - (BOOL)renderbufferStorage:(NSUInteger)target fromDrawable:(nullable id)drawable; + + +// - (BOOL)presentRenderbuffer:(NSUInteger)target; + + +// - (BOOL)presentRenderbuffer:(NSUInteger)target atTime:(CFTimeInterval)presentationTime; + + +// - (BOOL)presentRenderbuffer:(NSUInteger)target afterMinimumDuration:(CFTimeInterval)duration; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + + + + + + +__attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="OpenGLES is deprecated"))) __attribute__((availability(watchos,introduced=2.0,deprecated=5.0,message="OpenGLES is deprecated"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGLES is deprecated"))) + + + + +__attribute__((availability(macos,unavailable))) + +#ifndef _REWRITER_typedef_CAEAGLLayer +#define _REWRITER_typedef_CAEAGLLayer +typedef struct objc_object CAEAGLLayer; +typedef struct {} _objc_exc_CAEAGLLayer; +#endif + +struct CAEAGLLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; + struct _CAEAGLNativeWindow *_win; +}; + + + + + + + +// @property BOOL presentsWithTransaction __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + +#pragma clang assume_nonnull begin +typedef NSUInteger MTLPixelFormat; enum +{ + MTLPixelFormatInvalid = 0, + + + + MTLPixelFormatA8Unorm = 1, + + MTLPixelFormatR8Unorm = 10, + MTLPixelFormatR8Unorm_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 11, + + MTLPixelFormatR8Snorm = 12, + MTLPixelFormatR8Uint = 13, + MTLPixelFormatR8Sint = 14, + + + + MTLPixelFormatR16Unorm = 20, + MTLPixelFormatR16Snorm = 22, + MTLPixelFormatR16Uint = 23, + MTLPixelFormatR16Sint = 24, + MTLPixelFormatR16Float = 25, + + MTLPixelFormatRG8Unorm = 30, + MTLPixelFormatRG8Unorm_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 31, + MTLPixelFormatRG8Snorm = 32, + MTLPixelFormatRG8Uint = 33, + MTLPixelFormatRG8Sint = 34, + + + + MTLPixelFormatB5G6R5Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 40, + MTLPixelFormatA1BGR5Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 41, + MTLPixelFormatABGR4Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 42, + MTLPixelFormatBGR5A1Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 43, + + + + MTLPixelFormatR32Uint = 53, + MTLPixelFormatR32Sint = 54, + MTLPixelFormatR32Float = 55, + + MTLPixelFormatRG16Unorm = 60, + MTLPixelFormatRG16Snorm = 62, + MTLPixelFormatRG16Uint = 63, + MTLPixelFormatRG16Sint = 64, + MTLPixelFormatRG16Float = 65, + + MTLPixelFormatRGBA8Unorm = 70, + MTLPixelFormatRGBA8Unorm_sRGB = 71, + MTLPixelFormatRGBA8Snorm = 72, + MTLPixelFormatRGBA8Uint = 73, + MTLPixelFormatRGBA8Sint = 74, + + MTLPixelFormatBGRA8Unorm = 80, + MTLPixelFormatBGRA8Unorm_sRGB = 81, + + + + MTLPixelFormatRGB10A2Unorm = 90, + MTLPixelFormatRGB10A2Uint = 91, + + MTLPixelFormatRG11B10Float = 92, + MTLPixelFormatRGB9E5Float = 93, + + MTLPixelFormatBGR10A2Unorm __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) = 94, + + MTLPixelFormatBGR10_XR __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 554, + MTLPixelFormatBGR10_XR_sRGB __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 555, + + + + MTLPixelFormatRG32Uint = 103, + MTLPixelFormatRG32Sint = 104, + MTLPixelFormatRG32Float = 105, + + MTLPixelFormatRGBA16Unorm = 110, + MTLPixelFormatRGBA16Snorm = 112, + MTLPixelFormatRGBA16Uint = 113, + MTLPixelFormatRGBA16Sint = 114, + MTLPixelFormatRGBA16Float = 115, + + MTLPixelFormatBGRA10_XR __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 552, + MTLPixelFormatBGRA10_XR_sRGB __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 553, + + + + MTLPixelFormatRGBA32Uint = 123, + MTLPixelFormatRGBA32Sint = 124, + MTLPixelFormatRGBA32Float = 125, + + + + + MTLPixelFormatBC1_RGBA __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 130, + MTLPixelFormatBC1_RGBA_sRGB __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 131, + MTLPixelFormatBC2_RGBA __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 132, + MTLPixelFormatBC2_RGBA_sRGB __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 133, + MTLPixelFormatBC3_RGBA __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 134, + MTLPixelFormatBC3_RGBA_sRGB __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 135, + + + MTLPixelFormatBC4_RUnorm __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 140, + MTLPixelFormatBC4_RSnorm __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 141, + MTLPixelFormatBC5_RGUnorm __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 142, + MTLPixelFormatBC5_RGSnorm __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 143, + + + MTLPixelFormatBC6H_RGBFloat __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 150, + MTLPixelFormatBC6H_RGBUfloat __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 151, + MTLPixelFormatBC7_RGBAUnorm __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 152, + MTLPixelFormatBC7_RGBAUnorm_sRGB __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 153, + + + MTLPixelFormatPVRTC_RGB_2BPP __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 160, + MTLPixelFormatPVRTC_RGB_2BPP_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 161, + MTLPixelFormatPVRTC_RGB_4BPP __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 162, + MTLPixelFormatPVRTC_RGB_4BPP_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 163, + MTLPixelFormatPVRTC_RGBA_2BPP __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 164, + MTLPixelFormatPVRTC_RGBA_2BPP_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 165, + MTLPixelFormatPVRTC_RGBA_4BPP __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 166, + MTLPixelFormatPVRTC_RGBA_4BPP_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 167, + + + MTLPixelFormatEAC_R11Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 170, + MTLPixelFormatEAC_R11Snorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 172, + MTLPixelFormatEAC_RG11Unorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 174, + MTLPixelFormatEAC_RG11Snorm __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 176, + MTLPixelFormatEAC_RGBA8 __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 178, + MTLPixelFormatEAC_RGBA8_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 179, + + MTLPixelFormatETC2_RGB8 __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 180, + MTLPixelFormatETC2_RGB8_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 181, + MTLPixelFormatETC2_RGB8A1 __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 182, + MTLPixelFormatETC2_RGB8A1_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 183, + + + MTLPixelFormatASTC_4x4_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 186, + MTLPixelFormatASTC_5x4_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 187, + MTLPixelFormatASTC_5x5_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 188, + MTLPixelFormatASTC_6x5_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 189, + MTLPixelFormatASTC_6x6_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 190, + MTLPixelFormatASTC_8x5_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 192, + MTLPixelFormatASTC_8x6_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 193, + MTLPixelFormatASTC_8x8_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 194, + MTLPixelFormatASTC_10x5_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 195, + MTLPixelFormatASTC_10x6_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 196, + MTLPixelFormatASTC_10x8_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 197, + MTLPixelFormatASTC_10x10_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 198, + MTLPixelFormatASTC_12x10_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 199, + MTLPixelFormatASTC_12x12_sRGB __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 200, + + MTLPixelFormatASTC_4x4_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 204, + MTLPixelFormatASTC_5x4_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 205, + MTLPixelFormatASTC_5x5_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 206, + MTLPixelFormatASTC_6x5_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 207, + MTLPixelFormatASTC_6x6_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 208, + MTLPixelFormatASTC_8x5_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 210, + MTLPixelFormatASTC_8x6_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 211, + MTLPixelFormatASTC_8x8_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 212, + MTLPixelFormatASTC_10x5_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 213, + MTLPixelFormatASTC_10x6_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 214, + MTLPixelFormatASTC_10x8_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 215, + MTLPixelFormatASTC_10x10_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 216, + MTLPixelFormatASTC_12x10_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 217, + MTLPixelFormatASTC_12x12_LDR __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 218, + + + + MTLPixelFormatASTC_4x4_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 222, + MTLPixelFormatASTC_5x4_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 223, + MTLPixelFormatASTC_5x5_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 224, + MTLPixelFormatASTC_6x5_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 225, + MTLPixelFormatASTC_6x6_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 226, + MTLPixelFormatASTC_8x5_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 228, + MTLPixelFormatASTC_8x6_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 229, + MTLPixelFormatASTC_8x8_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 230, + MTLPixelFormatASTC_10x5_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 231, + MTLPixelFormatASTC_10x6_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 232, + MTLPixelFormatASTC_10x8_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 233, + MTLPixelFormatASTC_10x10_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 234, + MTLPixelFormatASTC_12x10_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 235, + MTLPixelFormatASTC_12x12_HDR __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) = 236, + + + + + + MTLPixelFormatGBGR422 = 240, + + + + + + + MTLPixelFormatBGRG422 = 241, + + + + MTLPixelFormatDepth16Unorm __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=13.0))) = 250, + MTLPixelFormatDepth32Float = 252, + + + + MTLPixelFormatStencil8 = 253, + + + + MTLPixelFormatDepth24Unorm_Stencil8 __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 255, + MTLPixelFormatDepth32Float_Stencil8 __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) = 260, + + MTLPixelFormatX32_Stencil8 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) = 261, + MTLPixelFormatX24_Stencil8 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(macCatalyst,introduced=13.0))) __attribute__((availability(ios,unavailable))) = 262, + +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +// @protocol MTLDrawable; + + + + + + +typedef void (*MTLDrawablePresentedHandler)(id/**/); + + + + + +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) +// @protocol MTLDrawable + + +// - (void)present; + + +// - (void)presentAtTime:(CFTimeInterval)presentationTime; + + + + + + +// - (void)presentAfterMinimumDuration:(CFTimeInterval)duration __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +// - (void)addPresentedHandler:(MTLDrawablePresentedHandler)block __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + + +// @property(nonatomic, readonly) CFTimeInterval presentedTime __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + + +// @property (nonatomic, readonly) NSUInteger drawableID __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + +// @protocol MTLDevice; +// @protocol MTLTexture; +// @protocol MTLDrawable; + +// @class CAMetalLayer; +#ifndef _REWRITER_typedef_CAMetalLayer +#define _REWRITER_typedef_CAMetalLayer +typedef struct objc_object CAMetalLayer; +typedef struct {} _objc_exc_CAMetalLayer; +#endif + + +#pragma clang assume_nonnull begin +// @protocol CAMetalDrawable + + + + +// @property(readonly) id texture; + + + +// @property(readonly) CAMetalLayer *layer; + +/* @end */ + + + + + +__attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAMetalLayer +#define _REWRITER_typedef_CAMetalLayer +typedef struct objc_object CAMetalLayer; +typedef struct {} _objc_exc_CAMetalLayer; +#endif + +struct CAMetalLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; + struct _CAMetalLayerPrivate *_priv; +}; + + + + + + + + +// @property(nullable, retain) id device; + + + +// @property(nullable, readonly) id preferredDevice + __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// @property MTLPixelFormat pixelFormat; +// @property BOOL framebufferOnly; + + + + + +// @property CGSize drawableSize; +// - (nullable id)nextDrawable; + + + + + +// @property NSUInteger maximumDrawableCount + __attribute__((availability(macos,introduced=10.13.2))) __attribute__((availability(ios,introduced=11.2))) __attribute__((availability(watchos,introduced=4.2))) __attribute__((availability(tvos,introduced=11.2))); + + + + + + +// @property BOOL presentsWithTransaction; + + + + + +// @property (nullable) CGColorSpaceRef colorspace; +// @property BOOL allowsNextDrawableTimeout + __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAEmitterCell +#define _REWRITER_typedef_CAEmitterCell +typedef struct objc_object CAEmitterCell; +typedef struct {} _objc_exc_CAEmitterCell; +#endif + +struct CAEmitterCell_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_attr[2]; + void *_state; + uint32_t _flags; +}; + + +// + (instancetype)emitterCell; + + + + +// + (nullable id)defaultValueForKey:(NSString *)key; +// - (BOOL)shouldArchiveValueForKey:(NSString *)key; + + + +// @property(nullable, copy) NSString *name; + + + +// @property(getter=isEnabled) BOOL enabled; + + + + +// @property float birthRate; + + + + + +// @property float lifetime; +// @property float lifetimeRange; +// @property CGFloat emissionLatitude; +// @property CGFloat emissionLongitude; + + + + + +// @property CGFloat emissionRange; + + + + +// @property CGFloat velocity; +// @property CGFloat velocityRange; + + + + +// @property CGFloat xAcceleration; +// @property CGFloat yAcceleration; +// @property CGFloat zAcceleration; + + + + + +// @property CGFloat scale; +// @property CGFloat scaleRange; +// @property CGFloat scaleSpeed; + + + + +// @property CGFloat spin; +// @property CGFloat spinRange; + + + + + +// @property(nullable) CGColorRef color; + +// @property float redRange; +// @property float greenRange; +// @property float blueRange; +// @property float alphaRange; + + + + + +// @property float redSpeed; +// @property float greenSpeed; +// @property float blueSpeed; +// @property float alphaSpeed; + + + + +// @property(nullable, strong) id contents; + + + + + +// @property CGRect contentsRect; + + + + +// @property CGFloat contentsScale; + + + + +// @property(copy) NSString *minificationFilter; +// @property(copy) NSString *magnificationFilter; +// @property float minificationFilterBias; + + + + + + + +// @property(nullable, copy) NSArray *emitterCells; + + + +// @property(nullable, copy) NSDictionary *style; + +/* @end */ + +#pragma clang assume_nonnull end +typedef NSString * CAEmitterLayerEmitterShape __attribute__((swift_wrapper(enum))); +typedef NSString * CAEmitterLayerEmitterMode __attribute__((swift_wrapper(enum))); +typedef NSString * CAEmitterLayerRenderMode __attribute__((swift_wrapper(enum))); + +// @class CAEmitterCell; +#ifndef _REWRITER_typedef_CAEmitterCell +#define _REWRITER_typedef_CAEmitterCell +typedef struct objc_object CAEmitterCell; +typedef struct {} _objc_exc_CAEmitterCell; +#endif + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAEmitterLayer +#define _REWRITER_typedef_CAEmitterLayer +typedef struct objc_object CAEmitterLayer; +typedef struct {} _objc_exc_CAEmitterLayer; +#endif + +struct CAEmitterLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + + + + + +// @property(nullable, copy) NSArray *emitterCells; + + + + + +// @property float birthRate; + + + + +// @property float lifetime; + + + +// @property CGPoint emitterPosition; +// @property CGFloat emitterZPosition; + + + + + +// @property CGSize emitterSize; +// @property CGFloat emitterDepth; + + + + + +// @property(copy) CAEmitterLayerEmitterShape emitterShape; + + + + + +// @property(copy) CAEmitterLayerEmitterMode emitterMode; + + + + + + + +// @property(copy) CAEmitterLayerRenderMode renderMode; + + + + + + + +// @property BOOL preservesDepth; + + + + +// @property float velocity; + + + +// @property float scale; + + + +// @property float spin; + + + + + + +// @property unsigned int seed; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerPoint + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerLine + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerRectangle + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerCuboid + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerCircle + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterShape const kCAEmitterLayerSphere + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterMode const kCAEmitterLayerPoints + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterMode const kCAEmitterLayerOutline + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterMode const kCAEmitterLayerSurface + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerEmitterMode const kCAEmitterLayerVolume + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CAEmitterLayerRenderMode const kCAEmitterLayerUnordered + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerRenderMode const kCAEmitterLayerOldestFirst + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerRenderMode const kCAEmitterLayerOldestLast + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerRenderMode const kCAEmitterLayerBackToFront + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAEmitterLayerRenderMode const kCAEmitterLayerAdditive + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSString * CAMediaTimingFunctionName __attribute__((swift_wrapper(enum))); + + + + + + + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAMediaTimingFunction +#define _REWRITER_typedef_CAMediaTimingFunction +typedef struct objc_object CAMediaTimingFunction; +typedef struct {} _objc_exc_CAMediaTimingFunction; +#endif + +struct CAMediaTimingFunction_IMPL { + struct NSObject_IMPL NSObject_IVARS; + struct CAMediaTimingFunctionPrivate *_priv; +}; + + + + + + + +// + (instancetype)functionWithName:(CAMediaTimingFunctionName)name; + + + + + + +// + (instancetype)functionWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y; + +// - (instancetype)initWithControlPoints:(float)c1x :(float)c1y :(float)c2x :(float)c2y; + + + +// - (void)getControlPointAtIndex:(size_t)idx values:(float[_Nonnull 2])ptr; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAMediaTimingFunctionName const kCAMediaTimingFunctionLinear + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseIn + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseOut + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFunctionName const kCAMediaTimingFunctionEaseInEaseOut + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAMediaTimingFunctionName const kCAMediaTimingFunctionDefault + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +typedef NSString * CAGradientLayerType __attribute__((swift_wrapper(enum))); + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAGradientLayer +#define _REWRITER_typedef_CAGradientLayer +typedef struct objc_object CAGradientLayer; +typedef struct {} _objc_exc_CAGradientLayer; +#endif + +struct CAGradientLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + + + + + +// @property(nullable, copy) NSArray *colors; +// @property(nullable, copy) NSArray *locations; +// @property CGPoint startPoint; +// @property CGPoint endPoint; + + + + +// @property(copy) CAGradientLayerType type; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAGradientLayerType const kCAGradientLayerAxial + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +extern __attribute__((visibility("default"))) CAGradientLayerType const kCAGradientLayerRadial + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + + +extern __attribute__((visibility("default"))) CAGradientLayerType const kCAGradientLayerConic + __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))); +#pragma clang assume_nonnull end + + + + + + + + + + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAReplicatorLayer +#define _REWRITER_typedef_CAReplicatorLayer +typedef struct objc_object CAReplicatorLayer; +typedef struct {} _objc_exc_CAReplicatorLayer; +#endif + +struct CAReplicatorLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + + + + + +// @property NSInteger instanceCount; + + + + + + +// @property BOOL preservesDepth; + + + + +// @property CFTimeInterval instanceDelay; + + + + + + +// @property CATransform3D instanceTransform; + + + + +// @property(nullable) CGColorRef instanceColor; + + + + + +// @property float instanceRedOffset; +// @property float instanceGreenOffset; +// @property float instanceBlueOffset; +// @property float instanceAlphaOffset; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSString * CAScrollLayerScrollMode __attribute__((swift_wrapper(enum))); + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAScrollLayer +#define _REWRITER_typedef_CAScrollLayer +typedef struct objc_object CAScrollLayer; +typedef struct {} _objc_exc_CAScrollLayer; +#endif + +struct CAScrollLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + + + + +// - (void)scrollToPoint:(CGPoint)p; + + + +// - (void)scrollToRect:(CGRect)r; + + + + +// @property(copy) CAScrollLayerScrollMode scrollMode; + +/* @end */ + + +// @interface CALayer (CALayerScrolling) + + + + + + +// - (void)scrollPoint:(CGPoint)p; + +// - (void)scrollRectToVisible:(CGRect)r; + + + + + +// @property(readonly) CGRect visibleRect; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAScrollLayerScrollMode const kCAScrollNone + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAScrollLayerScrollMode const kCAScrollVertically + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAScrollLayerScrollMode const kCAScrollHorizontally + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAScrollLayerScrollMode const kCAScrollBoth + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSString * CAShapeLayerFillRule __attribute__((swift_wrapper(enum))); +typedef NSString * CAShapeLayerLineJoin __attribute__((swift_wrapper(enum))); +typedef NSString * CAShapeLayerLineCap __attribute__((swift_wrapper(enum))); +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAShapeLayer +#define _REWRITER_typedef_CAShapeLayer +typedef struct objc_object CAShapeLayer; +typedef struct {} _objc_exc_CAShapeLayer; +#endif + +struct CAShapeLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + +// @property(nullable) CGPathRef path; + + + + +// @property(nullable) CGColorRef fillColor; + + + + +// @property(copy) CAShapeLayerFillRule fillRule; + + + + +// @property(nullable) CGColorRef strokeColor; +// @property CGFloat strokeStart; +// @property CGFloat strokeEnd; + + + + +// @property CGFloat lineWidth; + + + + +// @property CGFloat miterLimit; + + + + +// @property(copy) CAShapeLayerLineCap lineCap; + + + + +// @property(copy) CAShapeLayerLineJoin lineJoin; + + + + +// @property CGFloat lineDashPhase; + + + + +// @property(nullable, copy) NSArray *lineDashPattern; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CAShapeLayerFillRule const kCAFillRuleNonZero + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAShapeLayerFillRule const kCAFillRuleEvenOdd + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CAShapeLayerLineJoin const kCALineJoinMiter + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAShapeLayerLineJoin const kCALineJoinRound + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAShapeLayerLineJoin const kCALineJoinBevel + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CAShapeLayerLineCap const kCALineCapButt + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAShapeLayerLineCap const kCALineCapRound + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAShapeLayerLineCap const kCALineCapSquare + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSString * CATextLayerTruncationMode __attribute__((swift_wrapper(enum))); +typedef NSString * CATextLayerAlignmentMode __attribute__((swift_wrapper(enum))); + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CATextLayer +#define _REWRITER_typedef_CATextLayer +typedef struct objc_object CATextLayer; +typedef struct {} _objc_exc_CATextLayer; +#endif + +struct CATextLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; + struct CATextLayerPrivate *_state; +}; + + + + + +// @property(nullable, copy) id string; + + + + + + +// @property(nullable) CFTypeRef font; + + + + +// @property CGFloat fontSize; + + + + + +// @property(nullable) CGColorRef foregroundColor; + + + + +// @property(getter=isWrapped) BOOL wrapped; + + + + + +// @property(copy) CATextLayerTruncationMode truncationMode; + + + + + +// @property(copy) CATextLayerAlignmentMode alignmentMode; + + + + +// @property BOOL allowsFontSubpixelQuantization; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) CATextLayerTruncationMode const kCATruncationNone + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerTruncationMode const kCATruncationStart + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerTruncationMode const kCATruncationEnd + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerTruncationMode const kCATruncationMiddle + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +extern __attribute__((visibility("default"))) CATextLayerAlignmentMode const kCAAlignmentNatural + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerAlignmentMode const kCAAlignmentLeft + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerAlignmentMode const kCAAlignmentRight + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerAlignmentMode const kCAAlignmentCenter + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CATextLayerAlignmentMode const kCAAlignmentJustified + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CATiledLayer +#define _REWRITER_typedef_CATiledLayer +typedef struct objc_object CATiledLayer; +typedef struct {} _objc_exc_CATiledLayer; +#endif + +struct CATiledLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + + + + + + +// + (CFTimeInterval)fadeDuration; + + + + + + + +// @property size_t levelsOfDetail; + + + + + + + +// @property size_t levelsOfDetailBias; + + + + + + +// @property CGSize tileSize; + +/* @end */ + +#pragma clang assume_nonnull end +// @class CAMediaTimingFunction; +#ifndef _REWRITER_typedef_CAMediaTimingFunction +#define _REWRITER_typedef_CAMediaTimingFunction +typedef struct objc_object CAMediaTimingFunction; +typedef struct {} _objc_exc_CAMediaTimingFunction; +#endif + + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CATransaction +#define _REWRITER_typedef_CATransaction +typedef struct objc_object CATransaction; +typedef struct {} _objc_exc_CATransaction; +#endif + +struct CATransaction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// + (void)begin; + + + + +// + (void)commit; + + + + +// + (void)flush; + + + + + + +// + (void)lock; +// + (void)unlock; + + + + + +// + (CFTimeInterval)animationDuration; +// + (void)setAnimationDuration:(CFTimeInterval)dur; + + + + + + +// + (nullable CAMediaTimingFunction *)animationTimingFunction; +// + (void)setAnimationTimingFunction:(nullable CAMediaTimingFunction *)function; + + + + + + +// + (BOOL)disableActions; +// + (void)setDisableActions:(BOOL)flag; +// + (nullable void (^)(void))completionBlock; +// + (void)setCompletionBlock:(nullable void (^)(void))block; +// + (nullable id)valueForKey:(NSString *)key; +// + (void)setValue:(nullable id)anObject forKey:(NSString *)key; + +/* @end */ + + + + +extern __attribute__((visibility("default"))) NSString * const kCATransactionAnimationDuration + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) NSString * const kCATransactionDisableActions + __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) NSString * const kCATransactionAnimationTimingFunction + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) NSString * const kCATransactionCompletionBlock + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CATransformLayer +#define _REWRITER_typedef_CATransformLayer +typedef struct objc_object CATransformLayer; +typedef struct {} _objc_exc_CATransformLayer; +#endif + +struct CATransformLayer_IMPL { + struct CALayer_IMPL CALayer_IVARS; +}; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +typedef NSString * CAValueFunctionName __attribute__((swift_wrapper(enum))); + +#pragma clang assume_nonnull begin + +__attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_CAValueFunction +#define _REWRITER_typedef_CAValueFunction +typedef struct objc_object CAValueFunction; +typedef struct {} _objc_exc_CAValueFunction; +#endif + +struct CAValueFunction_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_string; + void *_impl; +}; + + +// + (nullable instancetype)functionWithName:(CAValueFunctionName)name; + +// @property(readonly) CAValueFunctionName name; + +/* @end */ + + + + + + + + +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionRotateX + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionRotateY + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionRotateZ + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionScale + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionScaleX + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionScaleY + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionScaleZ + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionTranslate + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionTranslateX + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionTranslateY + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +extern __attribute__((visibility("default"))) CAValueFunctionName const kCAValueFunctionTranslateZ + __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +typedef NSInteger UIMenuElementState; enum { + UIMenuElementStateOff, + UIMenuElementStateOn, + UIMenuElementStateMixed +} __attribute__((swift_name("UIMenuElement.State"))) __attribute__((availability(ios,introduced=13.0))); + +typedef NSUInteger UIMenuElementAttributes; enum { + UIMenuElementAttributesDisabled = 1 << 0, + UIMenuElementAttributesDestructive = 1 << 1, + UIMenuElementAttributesHidden = 1 << 2 +} __attribute__((swift_name("UIMenuElement.Attributes"))) __attribute__((availability(ios,introduced=13.0))); + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIMenuElement +#define _REWRITER_typedef_UIMenuElement +typedef struct objc_object UIMenuElement; +typedef struct {} _objc_exc_UIMenuElement; +#endif + +struct UIMenuElement_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readonly) NSString *title; + + +// @property (nonatomic, nullable, readonly) UIImage *image; + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end +typedef NSString *UIMenuIdentifier __attribute__((swift_name("UIMenu.Identifier"))) __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))); + +typedef NSUInteger UIMenuOptions; enum { + + UIMenuOptionsDisplayInline = 1 << 0, + + + UIMenuOptionsDestructive = 1 << 1, +} __attribute__((swift_name("UIMenu.Options"))) __attribute__((availability(ios,introduced=13.0))); + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIMenu +#define _REWRITER_typedef_UIMenu +typedef struct objc_object UIMenu; +typedef struct {} _objc_exc_UIMenu; +#endif + +struct UIMenu_IMPL { + struct UIMenuElement_IMPL UIMenuElement_IVARS; +}; + + + +// @property (nonatomic, readonly) UIMenuIdentifier identifier; + + +// @property (nonatomic, readonly) UIMenuOptions options; + + +// @property (nonatomic, readonly) NSArray *children; +#if 0 ++ (UIMenu *)menuWithTitle:(NSString *)title + children:(NSArray *)children __attribute__((availability(swift, unavailable, message="Use init(title:image:identifier:options:children:) instead"))); +#endif + +#if 0 ++ (UIMenu *)menuWithTitle:(NSString *)title + image:(nullable UIImage *)image + identifier:(nullable UIMenuIdentifier)identifier + options:(UIMenuOptions)options + children:(NSArray *)children __attribute__((availability(swift, unavailable, message="Use init(title:image:identifier:options:children:) instead"))); +#endif + + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); +// - (UIMenu *)menuByReplacingChildren:(NSArray *)newChildren; + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuApplication __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuFile __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuEdit __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuView __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuWindow __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuHelp __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuAbout __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuPreferences __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuServices __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuHide __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuQuit __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuNewScene __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuClose __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuPrint __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuUndoRedo __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuStandardEdit __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuFind __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuReplace __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuShare __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuTextStyle __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSpelling __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSpellingPanel __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSpellingOptions __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSubstitutions __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSubstitutionsPanel __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSubstitutionOptions __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuTransformations __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuSpeech __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuLookup __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuLearn __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuFormat __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuFont __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuTextSize __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuTextColor __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuTextStylePasteboard __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuText __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuWritingDirection __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuAlignment __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuToolbar __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuFullscreen __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuMinimizeAndZoom __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuBringAllToFront __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) const UIMenuIdentifier UIMenuRoot __attribute__((availability(ios,introduced=13.0))); +#pragma clang assume_nonnull end + +typedef NSInteger UIKeyModifierFlags; enum { + UIKeyModifierAlphaShift = 1 << 16, + UIKeyModifierShift = 1 << 17, + UIKeyModifierControl = 1 << 18, + UIKeyModifierAlternate = 1 << 19, + UIKeyModifierCommand = 1 << 20, + UIKeyModifierNumericPad = 1 << 21, +} __attribute__((availability(ios,introduced=7.0))); + +// @class UICommand; +#ifndef _REWRITER_typedef_UICommand +#define _REWRITER_typedef_UICommand +typedef struct objc_object UICommand; +typedef struct {} _objc_exc_UICommand; +#endif + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +#pragma clang assume_nonnull begin + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UICommandAlternate +#define _REWRITER_typedef_UICommandAlternate +typedef struct objc_object UICommandAlternate; +typedef struct {} _objc_exc_UICommandAlternate; +#endif + +struct UICommandAlternate_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readonly) NSString *title; + + +// @property (nonatomic, readonly) SEL action; + + +// @property (nonatomic, readonly) UIKeyModifierFlags modifierFlags; + + + + + + + +#if 0 ++ (instancetype)alternateWithTitle:(NSString *)title + action:(SEL)action + modifierFlags:(UIKeyModifierFlags)modifierFlags; +#endif + + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UICommand +#define _REWRITER_typedef_UICommand +typedef struct objc_object UICommand; +typedef struct {} _objc_exc_UICommand; +#endif + +struct UICommand_IMPL { + struct UIMenuElement_IMPL UIMenuElement_IVARS; +}; + + + +// @property (nonatomic, copy) NSString *title; + + +// @property (nullable, nonatomic, copy) UIImage *image; + + +// @property (nullable, nonatomic, copy) NSString *discoverabilityTitle; + + +// @property (nonatomic, readonly) SEL action; + + +// @property (nullable, nonatomic, readonly) id propertyList; + + +// @property (nonatomic) UIMenuElementAttributes attributes; + + +// @property (nonatomic) UIMenuElementState state; + + +// @property (nonatomic, readonly) NSArray *alternates; +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + propertyList:(nullable id)propertyList + __attribute__((availability(swift, unavailable, message="Use init(title:image:action:propertyList:alternates:discoverabilityTitle:attributes:state:) instead."))); +#endif + +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + propertyList:(nullable id)propertyList + alternates:(NSArray *)alternates + __attribute__((availability(swift, unavailable, message="Use init(title:image:action:propertyList:alternates:discoverabilityTitle:attributes:state:) instead."))); +#endif + + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UICommandTagShare __attribute__((availability(ios,introduced=13.0))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIWindow; +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIGestureRecognizer +#define _REWRITER_typedef_UIGestureRecognizer +typedef struct objc_object UIGestureRecognizer; +typedef struct {} _objc_exc_UIGestureRecognizer; +#endif + +#ifndef _REWRITER_typedef_UITouch +#define _REWRITER_typedef_UITouch +typedef struct objc_object UITouch; +typedef struct {} _objc_exc_UITouch; +#endif + + +typedef NSInteger UIEventType; enum { + UIEventTypeTouches, + UIEventTypeMotion, + UIEventTypeRemoteControl, + UIEventTypePresses __attribute__((availability(ios,introduced=9.0))), + UIEventTypeScroll __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))) = 10, + UIEventTypeHover __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))) = 11, + UIEventTypeTransform __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))) = 14, +}; + +typedef NSInteger UIEventSubtype; enum { + + UIEventSubtypeNone = 0, + + + UIEventSubtypeMotionShake = 1, + + + UIEventSubtypeRemoteControlPlay = 100, + UIEventSubtypeRemoteControlPause = 101, + UIEventSubtypeRemoteControlStop = 102, + UIEventSubtypeRemoteControlTogglePlayPause = 103, + UIEventSubtypeRemoteControlNextTrack = 104, + UIEventSubtypeRemoteControlPreviousTrack = 105, + UIEventSubtypeRemoteControlBeginSeekingBackward = 106, + UIEventSubtypeRemoteControlEndSeekingBackward = 107, + UIEventSubtypeRemoteControlBeginSeekingForward = 108, + UIEventSubtypeRemoteControlEndSeekingForward = 109, +}; + + + + +typedef NSInteger UIEventButtonMask; enum { + UIEventButtonMaskPrimary = 1 << 0, + UIEventButtonMaskSecondary = 1 << 1 +} __attribute__((swift_name("UIEvent.ButtonMask"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +extern "C" __attribute__((visibility ("default"))) UIEventButtonMask UIEventButtonMaskForButtonNumber(NSInteger buttonNumber) __attribute__((swift_name("UIEventButtonMask.button(_:)"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + +struct UIEvent_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic,readonly) UIEventType type __attribute__((availability(ios,introduced=3.0))); +// @property(nonatomic,readonly) UIEventSubtype subtype __attribute__((availability(ios,introduced=3.0))); + +// @property(nonatomic,readonly) NSTimeInterval timestamp; + +// @property (nonatomic, readonly) UIKeyModifierFlags modifierFlags __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, readonly) UIEventButtonMask buttonMask __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property(nonatomic, readonly, nullable) NSSet *allTouches; +// - (nullable NSSet *)touchesForWindow:(UIWindow *)window; +// - (nullable NSSet *)touchesForView:(UIView *)view; +// - (nullable NSSet *)touchesForGestureRecognizer:(UIGestureRecognizer *)gesture __attribute__((availability(ios,introduced=3.2))); + + +// - (nullable NSArray *)coalescedTouchesForTouch:(UITouch *)touch __attribute__((availability(ios,introduced=9.0))); + + +// - (nullable NSArray *)predictedTouchesForTouch:(UITouch *)touch __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability" +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIKeyCommand +#define _REWRITER_typedef_UIKeyCommand +typedef struct objc_object UIKeyCommand; +typedef struct {} _objc_exc_UIKeyCommand; +#endif + +struct UIKeyCommand_IMPL { + struct UICommand_IMPL UICommand_IVARS; +}; + +#pragma clang diagnostic pop + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property (nonatomic, copy) NSString *title __attribute__((availability(ios,introduced=13.0))); + + +// @property (nullable, nonatomic, copy) UIImage *image __attribute__((availability(ios,introduced=13.0))); + + +// @property (nullable, nonatomic, copy) NSString *discoverabilityTitle __attribute__((availability(ios,introduced=9.0))); + + +// @property (nullable, nonatomic, readonly) SEL action; + +// @property (nullable, nonatomic, readonly) NSString *input; +// @property (nonatomic, readonly) UIKeyModifierFlags modifierFlags; + + +// @property (nullable, nonatomic, readonly) id propertyList __attribute__((availability(ios,introduced=13.0))); + + +// @property (nonatomic) UIMenuElementAttributes attributes __attribute__((availability(ios,introduced=13.0))); + + +// @property (nonatomic) UIMenuElementState state __attribute__((availability(ios,introduced=13.0))); + + +// @property (nonatomic, readonly) NSArray *alternates __attribute__((availability(ios,introduced=13.0))); +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + input:(NSString *)input + modifierFlags:(UIKeyModifierFlags)modifierFlags + propertyList:(nullable id)propertyList + __attribute__((availability(swift, unavailable, message="Use init(title:image:action:input:modifierFlags:propertyList:alternates:discoverabilityTitle:attributes:state:) instead."))); +#endif + +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + input:(NSString *)input + modifierFlags:(UIKeyModifierFlags)modifierFlags + propertyList:(nullable id)propertyList + alternates:(NSArray *)alternates + __attribute__((availability(swift, unavailable, message="Use init(title:image:action:input:modifierFlags:propertyList:alternates:discoverabilityTitle:attributes:state:) instead."))); +#endif + + + + + +// + (instancetype)keyCommandWithInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)modifierFlags action:(SEL)action; + + +// + (instancetype)keyCommandWithInput:(NSString *)input modifierFlags:(UIKeyModifierFlags)modifierFlags action:(SEL)action discoverabilityTitle:(NSString *)discoverabilityTitle __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="keyCommandWithInput:modifierFlags:action:"))); + + +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + propertyList:(nullable id)propertyList __attribute__((unavailable)); +#endif + +#if 0 ++ (instancetype)commandWithTitle:(NSString *)title + image:(nullable UIImage *)image + action:(SEL)action + propertyList:(nullable id)propertyList + alternates:(NSArray *)alternates __attribute__((unavailable)); +#endif + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPasteConfiguration; +#ifndef _REWRITER_typedef_UIPasteConfiguration +#define _REWRITER_typedef_UIPasteConfiguration +typedef struct objc_object UIPasteConfiguration; +typedef struct {} _objc_exc_UIPasteConfiguration; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UIPasteConfigurationSupporting + +// @property (nonatomic, copy, nullable) UIPasteConfiguration *pasteConfiguration; + +/* @optional */ +// - (void)pasteItemProviders:(NSArray *)itemProviders; +// - (BOOL)canPasteItemProviders:(NSArray *)itemProviders; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + +__attribute__((availability(ios,introduced=8.0))) // @protocol UIUserActivityRestoring + +// - (void)restoreUserActivityState:(NSUserActivity *)userActivity; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @protocol UIMenuBuilder; + +// @class UIPress; +#ifndef _REWRITER_typedef_UIPress +#define _REWRITER_typedef_UIPress +typedef struct objc_object UIPress; +typedef struct {} _objc_exc_UIPress; +#endif + +// @class UIPressesEvent; +#ifndef _REWRITER_typedef_UIPressesEvent +#define _REWRITER_typedef_UIPressesEvent +typedef struct objc_object UIPressesEvent; +typedef struct {} _objc_exc_UIPressesEvent; +#endif + + +typedef NSDictionary * _Nonnull(*UITextAttributesConversionHandler)(NSDictionary * _Nonnull); + +typedef NSInteger UIEditingInteractionConfiguration; enum { + UIEditingInteractionConfigurationNone = 0, + UIEditingInteractionConfigurationDefault = 1, +} __attribute__((availability(ios,introduced=13.0))); + +// @protocol UIResponderStandardEditActions +/* @optional */ +// - (void)cut:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); +// - (void)copy:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); +// - (void)paste:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); +// - (void)select:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); +// - (void)selectAll:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); +// - (void)delete:(nullable id)sender __attribute__((availability(ios,introduced=3.2))); +// - (void)makeTextWritingDirectionLeftToRight:(nullable id)sender __attribute__((availability(ios,introduced=5.0))); +// - (void)makeTextWritingDirectionRightToLeft:(nullable id)sender __attribute__((availability(ios,introduced=5.0))); +// - (void)toggleBoldface:(nullable id)sender __attribute__((availability(ios,introduced=6.0))); +// - (void)toggleItalics:(nullable id)sender __attribute__((availability(ios,introduced=6.0))); +// - (void)toggleUnderline:(nullable id)sender __attribute__((availability(ios,introduced=6.0))); + +// - (void)increaseSize:(nullable id)sender __attribute__((availability(ios,introduced=7.0))); +// - (void)decreaseSize:(nullable id)sender __attribute__((availability(ios,introduced=7.0))); + +// - (void)updateTextAttributesWithConversionHandler:(__attribute__((noescape)) UITextAttributesConversionHandler _Nonnull)conversionHandler __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIResponder +#define _REWRITER_typedef_UIResponder +typedef struct objc_object UIResponder; +typedef struct {} _objc_exc_UIResponder; +#endif + +struct UIResponder_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic, readonly, nullable) UIResponder *nextResponder; + +// @property(nonatomic, readonly) BOOL canBecomeFirstResponder; +// - (BOOL)becomeFirstResponder; + +// @property(nonatomic, readonly) BOOL canResignFirstResponder; +// - (BOOL)resignFirstResponder; + +// @property(nonatomic, readonly) BOOL isFirstResponder; + + + + + + +// - (void)touchesBegan:(NSSet *)touches withEvent:(nullable UIEvent *)event; +// - (void)touchesMoved:(NSSet *)touches withEvent:(nullable UIEvent *)event; +// - (void)touchesEnded:(NSSet *)touches withEvent:(nullable UIEvent *)event; +// - (void)touchesCancelled:(NSSet *)touches withEvent:(nullable UIEvent *)event; +// - (void)touchesEstimatedPropertiesUpdated:(NSSet *)touches __attribute__((availability(ios,introduced=9.1))); +// - (void)pressesBegan:(NSSet *)presses withEvent:(nullable UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesChanged:(NSSet *)presses withEvent:(nullable UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesEnded:(NSSet *)presses withEvent:(nullable UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesCancelled:(NSSet *)presses withEvent:(nullable UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); + +// - (void)motionBegan:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event __attribute__((availability(ios,introduced=3.0))); +// - (void)motionEnded:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event __attribute__((availability(ios,introduced=3.0))); +// - (void)motionCancelled:(UIEventSubtype)motion withEvent:(nullable UIEvent *)event __attribute__((availability(ios,introduced=3.0))); + +// - (void)remoteControlReceivedWithEvent:(nullable UIEvent *)event __attribute__((availability(ios,introduced=4.0))); + +// - (BOOL)canPerformAction:(SEL)action withSender:(nullable id)sender __attribute__((availability(ios,introduced=3.0))); + +// - (nullable id)targetForAction:(SEL)action withSender:(nullable id)sender __attribute__((availability(ios,introduced=7.0))); + + +// - (void)buildMenuWithBuilder:(id)builder; +// - (void)validateCommand:(UICommand *)command; + +// @property(nullable, nonatomic,readonly) NSUndoManager *undoManager __attribute__((availability(ios,introduced=3.0))); + + +// @property (nonatomic, readonly) UIEditingInteractionConfiguration editingInteractionConfiguration __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +// @interface UIResponder (UIResponderKeyCommands) +// @property (nullable,nonatomic,readonly) NSArray *keyCommands __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + +// @class UIInputViewController; +#ifndef _REWRITER_typedef_UIInputViewController +#define _REWRITER_typedef_UIInputViewController +typedef struct objc_object UIInputViewController; +typedef struct {} _objc_exc_UIInputViewController; +#endif + +// @class UITextInputMode; +#ifndef _REWRITER_typedef_UITextInputMode +#define _REWRITER_typedef_UITextInputMode +typedef struct objc_object UITextInputMode; +typedef struct {} _objc_exc_UITextInputMode; +#endif + +// @class UITextInputAssistantItem; +#ifndef _REWRITER_typedef_UITextInputAssistantItem +#define _REWRITER_typedef_UITextInputAssistantItem +typedef struct objc_object UITextInputAssistantItem; +typedef struct {} _objc_exc_UITextInputAssistantItem; +#endif + + +// @interface UIResponder (UIResponderInputViewAdditions) + + +// @property (nullable, nonatomic, readonly, strong) __kindof UIView *inputView __attribute__((availability(ios,introduced=3.2))); +// @property (nullable, nonatomic, readonly, strong) __kindof UIView *inputAccessoryView __attribute__((availability(ios,introduced=3.2))); + + + + + +// @property (nonnull, nonatomic, readonly, strong) UITextInputAssistantItem *inputAssistantItem __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @property (nullable, nonatomic, readonly, strong) UIInputViewController *inputViewController __attribute__((availability(ios,introduced=8.0))); +// @property (nullable, nonatomic, readonly, strong) UIInputViewController *inputAccessoryViewController __attribute__((availability(ios,introduced=8.0))); + + + + +// @property (nullable, nonatomic, readonly, strong) UITextInputMode *textInputMode __attribute__((availability(ios,introduced=7.0))); + + + +// @property (nullable, nonatomic, readonly, strong) NSString *textInputContextIdentifier __attribute__((availability(ios,introduced=7.0))); + +// + (void)clearTextInputContextIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=7.0))); + + +// - (void)reloadInputViews __attribute__((availability(ios,introduced=3.2))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputUpArrow __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputDownArrow __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputLeftArrow __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputRightArrow __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputEscape __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputPageUp __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputPageDown __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputHome __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputEnd __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF1 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF1 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF2 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF3 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF4 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF5 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF6 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF7 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF8 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF9 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF10 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF11 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyInputF12 __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); + +// @interface UIResponder (ActivityContinuation) +// @property (nullable, nonatomic, strong) NSUserActivity *userActivity __attribute__((availability(ios,introduced=8.0))); +// - (void)updateUserActivityState:(NSUserActivity *)activity __attribute__((availability(ios,introduced=8.0))); +// - (void)restoreUserActivityState:(NSUserActivity *)activity __attribute__((availability(ios,introduced=8.0))); +/* @end */ + + + +// @interface UIResponder (UIPasteConfigurationSupporting) +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIVector +#define _REWRITER_typedef_CIVector +typedef struct objc_object CIVector; +typedef struct {} _objc_exc_CIVector; +#endif + +struct CIVector_IMPL { + struct NSObject_IMPL NSObject_IVARS; + size_t _count; + + union { + CGFloat vec[4]; + CGFloat * _Nonnull ptr; + } _u; +}; + + + + +// + (instancetype)vectorWithValues:(const CGFloat *)values count:(size_t)count; + +// + (instancetype)vectorWithX:(CGFloat)x; +// + (instancetype)vectorWithX:(CGFloat)x Y:(CGFloat)y; +// + (instancetype)vectorWithX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z; +// + (instancetype)vectorWithX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z W:(CGFloat)w; + + +// + (instancetype)vectorWithCGPoint:(CGPoint)p __attribute__((availability(ios,introduced=5_0))); + + +// + (instancetype)vectorWithCGRect:(CGRect)r __attribute__((availability(ios,introduced=5_0))); + + +// + (instancetype)vectorWithCGAffineTransform:(CGAffineTransform)t __attribute__((availability(ios,introduced=5_0))); + +// + (instancetype)vectorWithString:(NSString *)representation; + + + +// - (instancetype)initWithValues:(const CGFloat *)values count:(size_t)count __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithX:(CGFloat)x; +// - (instancetype)initWithX:(CGFloat)x Y:(CGFloat)y; +// - (instancetype)initWithX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z; +// - (instancetype)initWithX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z W:(CGFloat)w; +// - (instancetype)initWithCGPoint:(CGPoint)p __attribute__((availability(ios,introduced=5_0))); +// - (instancetype)initWithCGRect:(CGRect)r __attribute__((availability(ios,introduced=5_0))); +// - (instancetype)initWithCGAffineTransform:(CGAffineTransform)r __attribute__((availability(ios,introduced=5_0))); + +// - (instancetype)initWithString:(NSString *)representation; + + + + +// - (CGFloat)valueAtIndex:(size_t)index; + + +// @property (readonly) size_t count; + + + +// @property (readonly) CGFloat X; +// @property (readonly) CGFloat Y; +// @property (readonly) CGFloat Z; +// @property (readonly) CGFloat W; +// @property (readonly) CGPoint CGPointValue __attribute__((availability(ios,introduced=5_0))); +// @property (readonly) CGRect CGRectValue __attribute__((availability(ios,introduced=5_0))); +// @property (readonly) CGAffineTransform CGAffineTransformValue __attribute__((availability(ios,introduced=5_0))); + + + + + +// @property (readonly) NSString *stringRepresentation; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIColor +#define _REWRITER_typedef_CIColor +typedef struct objc_object CIColor; +typedef struct {} _objc_exc_CIColor; +#endif + +struct CIColor_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; + void *_pad[3]; +}; + + + +// + (instancetype)colorWithCGColor:(CGColorRef)c; + + + + +// + (instancetype)colorWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b alpha:(CGFloat)a; +// + (instancetype)colorWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b; + + + +// + (nullable instancetype)colorWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b alpha:(CGFloat)a colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); +// + (nullable instancetype)colorWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); + + + +// + (instancetype)colorWithString:(NSString *)representation; + + + +// - (instancetype)initWithCGColor:(CGColorRef)c __attribute__((objc_designated_initializer)); + + + + +// - (instancetype)initWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b alpha:(CGFloat)a; +// - (instancetype)initWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b __attribute__((availability(ios,introduced=9_0))); + + + +// - (nullable instancetype)initWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b alpha:(CGFloat)a colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); +// - (nullable instancetype)initWithRed:(CGFloat)r green:(CGFloat)g blue:(CGFloat)b colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); + + +// @property (readonly) size_t numberOfComponents; + + +// @property (readonly) const CGFloat *components __attribute__((objc_returns_inner_pointer)); + + +// @property (readonly) CGFloat alpha; + + +// @property (readonly) CGColorSpaceRef colorSpace __attribute__((cf_returns_not_retained)); + + +// @property (readonly) CGFloat red; +// @property (readonly) CGFloat green; +// @property (readonly) CGFloat blue; + + + + + +// @property (readonly) NSString *stringRepresentation; + + +@property (class, strong, readonly) CIColor *blackColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *whiteColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *grayColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *redColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *greenColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *blueColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *cyanColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *magentaColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *yellowColor __attribute__((availability(ios,introduced=10_0))); +@property (class, strong, readonly) CIColor *clearColor __attribute__((availability(ios,introduced=10_0))); + +/* @end */ + +#pragma clang assume_nonnull end +extern "C" { +typedef uint64_t CVOptionFlags; +struct CVSMPTETime +{ + SInt16 subframes; + SInt16 subframeDivisor; + UInt32 counter; + UInt32 type; + UInt32 flags; + SInt16 hours; + SInt16 minutes; + SInt16 seconds; + SInt16 frames; +}; +typedef struct CVSMPTETime CVSMPTETime; +typedef uint32_t CVSMPTETimeType; enum +{ + kCVSMPTETimeType24 = 0, + kCVSMPTETimeType25 = 1, + kCVSMPTETimeType30Drop = 2, + kCVSMPTETimeType30 = 3, + kCVSMPTETimeType2997 = 4, + kCVSMPTETimeType2997Drop = 5, + kCVSMPTETimeType60 = 6, + kCVSMPTETimeType5994 = 7 +}; +typedef uint32_t CVSMPTETimeFlags; enum +{ + kCVSMPTETimeValid = (1L << 0), + kCVSMPTETimeRunning = (1L << 1) +}; + + +typedef int32_t CVTimeFlags; enum { + kCVTimeIsIndefinite = 1 << 0 +}; + +typedef struct +{ + int64_t timeValue; + int32_t timeScale; + int32_t flags; +} CVTime; +typedef struct +{ + uint32_t version; + int32_t videoTimeScale; + int64_t videoTime; + uint64_t hostTime; + double rateScalar; + int64_t videoRefreshPeriod; + CVSMPTETime smpteTime; + uint64_t flags; + uint64_t reserved; +} CVTimeStamp; + + +typedef uint64_t CVTimeStampFlags; enum +{ + kCVTimeStampVideoTimeValid = (1L << 0), + kCVTimeStampHostTimeValid = (1L << 1), + kCVTimeStampSMPTETimeValid = (1L << 2), + kCVTimeStampVideoRefreshPeriodValid = (1L << 3), + kCVTimeStampRateScalarValid = (1L << 4), + + + kCVTimeStampTopField = (1L << 16), + kCVTimeStampBottomField = (1L << 17), + + + kCVTimeStampVideoHostTimeValid = (kCVTimeStampVideoTimeValid | kCVTimeStampHostTimeValid), + kCVTimeStampIsInterlaced = (kCVTimeStampTopField | kCVTimeStampBottomField) +}; + +__attribute__((visibility("default"))) extern const CVTime kCVZeroTime; +__attribute__((visibility("default"))) extern const CVTime kCVIndefiniteTime; + + +} + + +extern "C" { +typedef int32_t CVReturn; + + + +enum _CVReturn + +{ + kCVReturnSuccess = 0, + + kCVReturnFirst = -6660, + + kCVReturnError = kCVReturnFirst, + kCVReturnInvalidArgument = -6661, + kCVReturnAllocationFailed = -6662, + kCVReturnUnsupported = -6663, + + + kCVReturnInvalidDisplay = -6670, + kCVReturnDisplayLinkAlreadyRunning = -6671, + kCVReturnDisplayLinkNotRunning = -6672, + kCVReturnDisplayLinkCallbacksNotSet = -6673, + + + kCVReturnInvalidPixelFormat = -6680, + kCVReturnInvalidSize = -6681, + kCVReturnInvalidPixelBufferAttributes = -6682, + kCVReturnPixelBufferNotOpenGLCompatible = -6683, + kCVReturnPixelBufferNotMetalCompatible = -6684, + + + kCVReturnWouldExceedAllocationThreshold = -6689, + kCVReturnPoolAllocationFailed = -6690, + kCVReturnInvalidPoolAttributes = -6691, + kCVReturnRetry = -6692, + + kCVReturnLast = -6699 + +}; + + +} + + + + + + + + + + + +extern "C" { + + + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVBufferPropagatedAttachmentsKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVBufferNonPropagatedAttachmentsKey __attribute__((availability(ios,introduced=4.0))); + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVBufferMovieTimeKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVBufferTimeValueKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVBufferTimeScaleKey __attribute__((availability(ios,introduced=4.0))); + + + + +typedef uint32_t CVAttachmentMode; enum +{ + kCVAttachmentMode_ShouldNotPropagate = 0, + kCVAttachmentMode_ShouldPropagate = 1 +}; + + + + + + +typedef struct __attribute__((objc_bridge(id))) __CVBuffer *CVBufferRef; +__attribute__((visibility("default"))) extern CVBufferRef _Nullable CVBufferRetain( CVBufferRef _Nullable buffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + +__attribute__((visibility("default"))) extern void CVBufferRelease( __attribute__((cf_consumed)) CVBufferRef _Nullable buffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void CVBufferSetAttachment( CVBufferRef _Nonnull buffer, CFStringRef _Nonnull key, CFTypeRef _Nonnull value, CVAttachmentMode attachmentMode ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CFTypeRef _Nullable CVBufferGetAttachment( CVBufferRef _Nonnull buffer, CFStringRef _Nonnull key, CVAttachmentMode * _Nullable attachmentMode ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void CVBufferRemoveAttachment( CVBufferRef _Nonnull buffer, CFStringRef _Nonnull key ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern void CVBufferRemoveAllAttachments( CVBufferRef _Nonnull buffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CFDictionaryRef __attribute__((cf_returns_not_retained)) _Nullable CVBufferGetAttachments( CVBufferRef _Nonnull buffer, CVAttachmentMode attachmentMode ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern void CVBufferSetAttachments( CVBufferRef _Nonnull buffer, CFDictionaryRef _Nonnull theAttachments, CVAttachmentMode attachmentMode ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void CVBufferPropagateAttachments( CVBufferRef _Nonnull sourceBuffer, CVBufferRef _Nonnull destinationBuffer ) __attribute__((availability(ios,introduced=4.0))); + + +} +extern "C" { + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCGColorSpaceKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCleanApertureKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCleanApertureWidthKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCleanApertureHeightKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCleanApertureHorizontalOffsetKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferCleanApertureVerticalOffsetKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferPreferredCleanApertureKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldCountKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldDetailKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldDetailTemporalTopFirst __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldDetailTemporalBottomFirst __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldDetailSpatialFirstLineEarly __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferFieldDetailSpatialFirstLineLate __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferPixelAspectRatioKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferPixelAspectRatioHorizontalSpacingKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferPixelAspectRatioVerticalSpacingKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferDisplayDimensionsKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferDisplayWidthKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferDisplayHeightKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferGammaLevelKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferICCProfileKey __attribute__((availability(ios,introduced=4.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrixKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_ITU_R_709_2 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_ITU_R_601_4 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_SMPTE_240M_1995 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_DCI_P3 __attribute__((availability(ios,introduced=9.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_P3_D65 __attribute__((availability(ios,introduced=9.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferYCbCrMatrix_ITU_R_2020 __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimariesKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_ITU_R_709_2 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_EBU_3213 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_SMPTE_C __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_P22 __attribute__((availability(ios,introduced=6.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_DCI_P3 __attribute__((availability(ios,introduced=9.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_P3_D65 __attribute__((availability(ios,introduced=9.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferColorPrimaries_ITU_R_2020 __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunctionKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_ITU_R_709_2 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_SMPTE_240M_1995 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_UseGamma __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_EBU_3213 __attribute__((availability(ios,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_SMPTE_C __attribute__((availability(ios,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_sRGB __attribute__((availability(ios,introduced=11.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_ITU_R_2020 __attribute__((availability(ios,introduced=9.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_SMPTE_ST_428_1 __attribute__((availability(ios,introduced=10.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ __attribute__((availability(ios,introduced=11.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_ITU_R_2100_HLG __attribute__((availability(ios,introduced=11.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferTransferFunction_Linear __attribute__((availability(ios,introduced=12.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocationTopFieldKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocationBottomFieldKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_Left __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_Center __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_TopLeft __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_Top __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_BottomLeft __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_Bottom __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaLocation_DV420 __attribute__((availability(ios,introduced=4.0))); + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaSubsamplingKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaSubsampling_420 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaSubsampling_422 __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferChromaSubsampling_411 __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferAlphaChannelIsOpaque __attribute__((availability(ios,introduced=8.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferAlphaChannelModeKey __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferAlphaChannelMode_StraightAlpha __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferAlphaChannelMode_PremultipliedAlpha __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + +__attribute__((visibility("default"))) extern int CVYCbCrMatrixGetIntegerCodePointForString( _Nullable CFStringRef yCbCrMatrixString ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +__attribute__((visibility("default"))) extern int CVColorPrimariesGetIntegerCodePointForString( _Nullable CFStringRef colorPrimariesString ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +__attribute__((visibility("default"))) extern int CVTransferFunctionGetIntegerCodePointForString( _Nullable CFStringRef transferFunctionString ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + + +__attribute__((visibility("default"))) extern _Nullable CFStringRef CVYCbCrMatrixGetStringForIntegerCodePoint( int yCbCrMatrixCodePoint ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +__attribute__((visibility("default"))) extern _Nullable CFStringRef CVColorPrimariesGetStringForIntegerCodePoint( int colorPrimariesCodePoint ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + +__attribute__((visibility("default"))) extern _Nullable CFStringRef CVTransferFunctionGetStringForIntegerCodePoint( int transferFunctionCodePoint ) __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); +typedef CVBufferRef CVImageBufferRef; +__attribute__((visibility("default"))) extern CGSize CVImageBufferGetEncodedSize( CVImageBufferRef _Nonnull imageBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CGSize CVImageBufferGetDisplaySize( CVImageBufferRef _Nonnull imageBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CGRect CVImageBufferGetCleanRect( CVImageBufferRef _Nonnull imageBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern Boolean CVImageBufferIsFlipped( CVImageBufferRef _Nonnull imageBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CGColorSpaceRef _Nullable CVImageBufferCreateColorSpaceFromAttachments( CFDictionaryRef _Nonnull attachments ) __attribute__((availability(ios,introduced=10.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferMasteringDisplayColorVolumeKey __attribute__((availability(ios,introduced=11.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVImageBufferContentLightLevelInfoKey __attribute__((availability(ios,introduced=11.0))); + + +} + + + +extern "C" { +enum + +{ + kCVPixelFormatType_1Monochrome = 0x00000001, + kCVPixelFormatType_2Indexed = 0x00000002, + kCVPixelFormatType_4Indexed = 0x00000004, + kCVPixelFormatType_8Indexed = 0x00000008, + kCVPixelFormatType_1IndexedGray_WhiteIsZero = 0x00000021, + kCVPixelFormatType_2IndexedGray_WhiteIsZero = 0x00000022, + kCVPixelFormatType_4IndexedGray_WhiteIsZero = 0x00000024, + kCVPixelFormatType_8IndexedGray_WhiteIsZero = 0x00000028, + kCVPixelFormatType_16BE555 = 0x00000010, + kCVPixelFormatType_16LE555 = 'L555', + kCVPixelFormatType_16LE5551 = '5551', + kCVPixelFormatType_16BE565 = 'B565', + kCVPixelFormatType_16LE565 = 'L565', + kCVPixelFormatType_24RGB = 0x00000018, + kCVPixelFormatType_24BGR = '24BG', + kCVPixelFormatType_32ARGB = 0x00000020, + kCVPixelFormatType_32BGRA = 'BGRA', + kCVPixelFormatType_32ABGR = 'ABGR', + kCVPixelFormatType_32RGBA = 'RGBA', + kCVPixelFormatType_64ARGB = 'b64a', + kCVPixelFormatType_48RGB = 'b48r', + kCVPixelFormatType_32AlphaGray = 'b32a', + kCVPixelFormatType_16Gray = 'b16g', + kCVPixelFormatType_30RGB = 'R10k', + kCVPixelFormatType_422YpCbCr8 = '2vuy', + kCVPixelFormatType_4444YpCbCrA8 = 'v408', + kCVPixelFormatType_4444YpCbCrA8R = 'r408', + kCVPixelFormatType_4444AYpCbCr8 = 'y408', + kCVPixelFormatType_4444AYpCbCr16 = 'y416', + kCVPixelFormatType_444YpCbCr8 = 'v308', + kCVPixelFormatType_422YpCbCr16 = 'v216', + kCVPixelFormatType_422YpCbCr10 = 'v210', + kCVPixelFormatType_444YpCbCr10 = 'v410', + kCVPixelFormatType_420YpCbCr8Planar = 'y420', + kCVPixelFormatType_420YpCbCr8PlanarFullRange = 'f420', + kCVPixelFormatType_422YpCbCr_4A_8BiPlanar = 'a2vy', + kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange = '420v', + kCVPixelFormatType_420YpCbCr8BiPlanarFullRange = '420f', + kCVPixelFormatType_422YpCbCr8_yuvs = 'yuvs', + kCVPixelFormatType_422YpCbCr8FullRange = 'yuvf', + kCVPixelFormatType_OneComponent8 = 'L008', + kCVPixelFormatType_TwoComponent8 = '2C08', + kCVPixelFormatType_30RGBLEPackedWideGamut = 'w30r', + kCVPixelFormatType_ARGB2101010LEPacked = 'l10r', + kCVPixelFormatType_OneComponent16Half = 'L00h', + kCVPixelFormatType_OneComponent32Float = 'L00f', + kCVPixelFormatType_TwoComponent16Half = '2C0h', + kCVPixelFormatType_TwoComponent32Float = '2C0f', + kCVPixelFormatType_64RGBAHalf = 'RGhA', + kCVPixelFormatType_128RGBAFloat = 'RGfA', + kCVPixelFormatType_14Bayer_GRBG = 'grb4', + kCVPixelFormatType_14Bayer_RGGB = 'rgg4', + kCVPixelFormatType_14Bayer_BGGR = 'bgg4', + kCVPixelFormatType_14Bayer_GBRG = 'gbr4', + kCVPixelFormatType_DisparityFloat16 = 'hdis', + kCVPixelFormatType_DisparityFloat32 = 'fdis', + kCVPixelFormatType_DepthFloat16 = 'hdep', + kCVPixelFormatType_DepthFloat32 = 'fdep', + kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange = 'x420', + kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange = 'x422', + kCVPixelFormatType_444YpCbCr10BiPlanarVideoRange = 'x444', + kCVPixelFormatType_420YpCbCr10BiPlanarFullRange = 'xf20', + kCVPixelFormatType_422YpCbCr10BiPlanarFullRange = 'xf22', + kCVPixelFormatType_444YpCbCr10BiPlanarFullRange = 'xf44', + kCVPixelFormatType_420YpCbCr8VideoRange_8A_TriPlanar = 'v0a8', +}; +typedef CVOptionFlags CVPixelBufferLockFlags; enum +{ + kCVPixelBufferLock_ReadOnly = 0x00000001, +}; + + + + + + +struct CVPlanarComponentInfo { + int32_t offset; + uint32_t rowBytes; +}; +typedef struct CVPlanarComponentInfo CVPlanarComponentInfo; +struct CVPlanarPixelBufferInfo { + CVPlanarComponentInfo componentInfo[1]; +}; +typedef struct CVPlanarPixelBufferInfo CVPlanarPixelBufferInfo; +struct CVPlanarPixelBufferInfo_YCbCrPlanar { + CVPlanarComponentInfo componentInfoY; + CVPlanarComponentInfo componentInfoCb; + CVPlanarComponentInfo componentInfoCr; +}; +typedef struct CVPlanarPixelBufferInfo_YCbCrPlanar CVPlanarPixelBufferInfo_YCbCrPlanar; +struct CVPlanarPixelBufferInfo_YCbCrBiPlanar { + CVPlanarComponentInfo componentInfoY; + CVPlanarComponentInfo componentInfoCbCr; +}; +typedef struct CVPlanarPixelBufferInfo_YCbCrBiPlanar CVPlanarPixelBufferInfo_YCbCrBiPlanar; + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPixelFormatTypeKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferMemoryAllocatorKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferWidthKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferHeightKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferExtendedPixelsLeftKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferExtendedPixelsTopKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferExtendedPixelsRightKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferExtendedPixelsBottomKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferBytesPerRowAlignmentKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferCGBitmapContextCompatibilityKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferCGImageCompatibilityKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); + __attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferOpenGLCompatibilityKey __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPlaneAlignmentKey __attribute__((availability(macosx,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfacePropertiesKey __attribute__((availability(macosx,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferOpenGLESCompatibilityKey __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferMetalCompatibilityKey __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferOpenGLTextureCacheCompatibilityKey __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferOpenGLESTextureCacheCompatibilityKey __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +typedef CVImageBufferRef CVPixelBufferRef; + +__attribute__((visibility("default"))) extern CFTypeID CVPixelBufferGetTypeID(void) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVPixelBufferRef _Nullable CVPixelBufferRetain( CVPixelBufferRef _Nullable texture ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern void CVPixelBufferRelease( __attribute__((cf_consumed)) CVPixelBufferRef _Nullable texture ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferCreateResolvedAttributesDictionary( + CFAllocatorRef _Nullable allocator, + CFArrayRef _Nullable attributes, + __attribute__((cf_returns_retained)) CFDictionaryRef _Nullable * _Nonnull resolvedDictionaryOut) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferCreate( + CFAllocatorRef _Nullable allocator, + size_t width, + size_t height, + OSType pixelFormatType, + CFDictionaryRef _Nullable pixelBufferAttributes, + __attribute__((cf_returns_retained)) CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut) __attribute__((availability(ios,introduced=4.0))); + +typedef void (*CVPixelBufferReleaseBytesCallback)( void * _Nullable releaseRefCon, const void * _Nullable baseAddress ); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferCreateWithBytes( + CFAllocatorRef _Nullable allocator, + size_t width, + size_t height, + OSType pixelFormatType, + void * _Nonnull baseAddress, + size_t bytesPerRow, + CVPixelBufferReleaseBytesCallback _Nullable releaseCallback, + void * _Nullable releaseRefCon, + CFDictionaryRef _Nullable pixelBufferAttributes, + __attribute__((cf_returns_retained)) CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut) __attribute__((availability(ios,introduced=4.0))); + +typedef void (*CVPixelBufferReleasePlanarBytesCallback)( void * _Nullable releaseRefCon, const void * _Nullable dataPtr, size_t dataSize, size_t numberOfPlanes, const void * _Nullable planeAddresses[_Nullable ] ); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferCreateWithPlanarBytes( + CFAllocatorRef _Nullable allocator, + size_t width, + size_t height, + OSType pixelFormatType, + void * _Nullable dataPtr, + size_t dataSize, + size_t numberOfPlanes, + void * _Nullable planeBaseAddress[_Nonnull ], + size_t planeWidth[_Nonnull ], + size_t planeHeight[_Nonnull ], + size_t planeBytesPerRow[_Nonnull ], + CVPixelBufferReleasePlanarBytesCallback _Nullable releaseCallback, + void * _Nullable releaseRefCon, + CFDictionaryRef _Nullable pixelBufferAttributes, + __attribute__((cf_returns_retained)) CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferLockBaseAddress( CVPixelBufferRef _Nonnull pixelBuffer, CVPixelBufferLockFlags lockFlags ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferUnlockBaseAddress( CVPixelBufferRef _Nonnull pixelBuffer, CVPixelBufferLockFlags unlockFlags ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetWidth( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetHeight( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern OSType CVPixelBufferGetPixelFormatType( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void * _Nullable CVPixelBufferGetBaseAddress( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetBytesPerRow( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetDataSize( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern Boolean CVPixelBufferIsPlanar( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetPlaneCount( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetWidthOfPlane( CVPixelBufferRef _Nonnull pixelBuffer, size_t planeIndex ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetHeightOfPlane( CVPixelBufferRef _Nonnull pixelBuffer, size_t planeIndex ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void * _Nullable CVPixelBufferGetBaseAddressOfPlane( CVPixelBufferRef _Nonnull pixelBuffer, size_t planeIndex ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern size_t CVPixelBufferGetBytesPerRowOfPlane( CVPixelBufferRef _Nonnull pixelBuffer, size_t planeIndex ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern void CVPixelBufferGetExtendedPixels( + CVPixelBufferRef _Nonnull pixelBuffer, + size_t * _Nullable extraColumnsOnLeft, + size_t * _Nullable extraColumnsOnRight, + size_t * _Nullable extraRowsOnTop, + size_t * _Nullable extraRowsOnBottom ) __attribute__((availability(ios,introduced=4.0))); + + + + + + +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferFillExtendedPixels( CVPixelBufferRef _Nonnull pixelBuffer ) __attribute__((availability(ios,introduced=4.0))); + + + +} + + + + + + + + + +typedef uint32_t IOSurfaceID; + +typedef uint32_t IOSurfaceLockOptions; enum +{ + + + + kIOSurfaceLockReadOnly = 0x00000001, + + + + + kIOSurfaceLockAvoidSync = 0x00000002, +}; + +typedef uint32_t IOSurfacePurgeabilityState; enum +{ + kIOSurfacePurgeableNonVolatile = 0, + kIOSurfacePurgeableVolatile = 1, + kIOSurfacePurgeableEmpty = 2, + kIOSurfacePurgeableKeepCurrent = 3, +}; + + + + + + + +enum { + kIOSurfaceDefaultCache = 0, + kIOSurfaceInhibitCache = 1, + kIOSurfaceWriteThruCache = 2, + kIOSurfaceCopybackCache = 3, + kIOSurfaceWriteCombineCache = 4, + kIOSurfaceCopybackInnerCache = 5 +}; + + +enum { + kIOSurfaceMapCacheShift = 8, + kIOSurfaceMapDefaultCache = kIOSurfaceDefaultCache << kIOSurfaceMapCacheShift, + kIOSurfaceMapInhibitCache = kIOSurfaceInhibitCache << kIOSurfaceMapCacheShift, + kIOSurfaceMapWriteThruCache = kIOSurfaceWriteThruCache << kIOSurfaceMapCacheShift, + kIOSurfaceMapCopybackCache = kIOSurfaceCopybackCache << kIOSurfaceMapCacheShift, + kIOSurfaceMapWriteCombineCache = kIOSurfaceWriteCombineCache << kIOSurfaceMapCacheShift, + kIOSurfaceMapCopybackInnerCache = kIOSurfaceCopybackInnerCache << kIOSurfaceMapCacheShift, +}; + +typedef struct __attribute__((objc_bridge(id))) __attribute__((objc_bridge_mutable(IOSurface))) __IOSurface *IOSurfaceRef __attribute__((swift_name("IOSurfaceRef"))); + +extern "C" { + + +#pragma clang assume_nonnull begin + + + + + + +extern const CFStringRef kIOSurfaceAllocSize __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceWidth __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceHeight __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfaceBytesPerRow __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfaceBytesPerElement __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceElementWidth __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceElementHeight __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceOffset __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfacePlaneInfo __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePlaneWidth __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePlaneHeight __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfacePlaneBytesPerRow __attribute__((availability(ios,introduced=3.0))); + + + +extern const CFStringRef kIOSurfacePlaneOffset __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePlaneSize __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfacePlaneBase __attribute__((availability(ios,introduced=3.0))); + + + +extern const CFStringRef kIOSurfacePlaneBitsPerElement __attribute__((availability(ios,introduced=11.0))); + + +extern const CFStringRef kIOSurfacePlaneBytesPerElement __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePlaneElementWidth __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePlaneElementHeight __attribute__((availability(ios,introduced=3.0))); + + + + +extern const CFStringRef kIOSurfaceCacheMode __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfaceIsGlobal __attribute__((availability(ios,introduced=3.0,deprecated=9.0))); + + +extern const CFStringRef kIOSurfacePixelFormat __attribute__((availability(ios,introduced=3.0))); + + +extern const CFStringRef kIOSurfacePixelSizeCastingAllowed __attribute__((availability(ios,introduced=10.0))); + + +extern const CFStringRef kIOSurfacePlaneComponentBitDepths __attribute__((availability(ios,introduced=11.0))); + + +extern const CFStringRef kIOSurfacePlaneComponentBitOffsets __attribute__((availability(ios,introduced=11.0))); + +typedef int32_t IOSurfaceComponentName; enum { + kIOSurfaceComponentNameUnknown = 0, + kIOSurfaceComponentNameAlpha = 1, + kIOSurfaceComponentNameRed = 2, + kIOSurfaceComponentNameGreen = 3, + kIOSurfaceComponentNameBlue = 4, + kIOSurfaceComponentNameLuma = 5, + kIOSurfaceComponentNameChromaRed = 6, + kIOSurfaceComponentNameChromaBlue = 7, +}; + + + +extern const CFStringRef kIOSurfacePlaneComponentNames __attribute__((availability(ios,introduced=11.0))); + +typedef int32_t IOSurfaceComponentType; enum { + kIOSurfaceComponentTypeUnknown = 0, + kIOSurfaceComponentTypeUnsignedInteger = 1, + kIOSurfaceComponentTypeSignedInteger = 2, + kIOSurfaceComponentTypeFloat = 3, +}; + + +extern const CFStringRef kIOSurfacePlaneComponentTypes __attribute__((availability(ios,introduced=11.0))); + +typedef int32_t IOSurfaceComponentRange; enum { + kIOSurfaceComponentRangeUnknown = 0, + kIOSurfaceComponentRangeFullRange = 1, + kIOSurfaceComponentRangeVideoRange = 2, + kIOSurfaceComponentRangeWideRange = 3, +}; + + +extern const CFStringRef kIOSurfacePlaneComponentRanges __attribute__((availability(ios,introduced=11.0))); + +typedef int32_t IOSurfaceSubsampling; enum { + kIOSurfaceSubsamplingUnknown = 0, + kIOSurfaceSubsamplingNone = 1, + kIOSurfaceSubsampling422 = 2, + kIOSurfaceSubsampling420 = 3, + kIOSurfaceSubsampling411 = 4, +}; + + +extern const CFStringRef kIOSurfaceSubsampling __attribute__((availability(ios,introduced=11.0))); + +CFTypeID IOSurfaceGetTypeID(void) + __attribute__((availability(ios,introduced=3.0))); + + +IOSurfaceRef _Nullable IOSurfaceCreate(CFDictionaryRef properties) + __attribute__((availability(ios,introduced=3.0))); + + + + + + +IOSurfaceRef _Nullable IOSurfaceLookup(IOSurfaceID csid) __attribute__((cf_returns_retained)) + __attribute__((availability(ios,introduced=3.0))); + + +IOSurfaceID IOSurfaceGetID(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); +kern_return_t IOSurfaceLock(IOSurfaceRef buffer, IOSurfaceLockOptions options, uint32_t * _Nullable seed) + __attribute__((availability(ios,introduced=3.0))); +kern_return_t IOSurfaceUnlock(IOSurfaceRef buffer, IOSurfaceLockOptions options, uint32_t * _Nullable seed) + __attribute__((availability(ios,introduced=3.0))); + + +size_t IOSurfaceGetAllocSize(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetWidth(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetHeight(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetBytesPerElement(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetBytesPerRow(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +void *IOSurfaceGetBaseAddress(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetElementWidth(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetElementHeight(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +OSType IOSurfaceGetPixelFormat(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + + +uint32_t IOSurfaceGetSeed(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + +size_t IOSurfaceGetPlaneCount(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); +size_t IOSurfaceGetWidthOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetHeightOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetBytesPerElementOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetBytesPerRowOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +void *IOSurfaceGetBaseAddressOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetElementWidthOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + +size_t IOSurfaceGetElementHeightOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=3.0))); + + + + +size_t IOSurfaceGetNumberOfComponentsOfPlane(IOSurfaceRef buffer, size_t planeIndex) + __attribute__((availability(ios,introduced=11.0))); + +IOSurfaceComponentName IOSurfaceGetNameOfComponentOfPlane(IOSurfaceRef buffer, size_t planeIndex, size_t componentIndex) + __attribute__((availability(ios,introduced=11.0))); + +IOSurfaceComponentType IOSurfaceGetTypeOfComponentOfPlane(IOSurfaceRef buffer, size_t planeIndex, size_t componentIndex) + __attribute__((availability(ios,introduced=11.0))); + +IOSurfaceComponentRange IOSurfaceGetRangeOfComponentOfPlane(IOSurfaceRef buffer, size_t planeIndex, size_t componentIndex) + __attribute__((availability(ios,introduced=11.0))); + +size_t IOSurfaceGetBitDepthOfComponentOfPlane(IOSurfaceRef buffer, size_t planeIndex, size_t componentIndex) + __attribute__((availability(ios,introduced=11.0))); + +size_t IOSurfaceGetBitOffsetOfComponentOfPlane(IOSurfaceRef buffer, size_t planeIndex, size_t componentIndex) + __attribute__((availability(ios,introduced=11.0))); + +IOSurfaceSubsampling IOSurfaceGetSubsampling(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=11.0))); + + + + +void IOSurfaceSetValue(IOSurfaceRef buffer, CFStringRef key, CFTypeRef value) + __attribute__((availability(ios,introduced=3.0))); + +CFTypeRef _Nullable IOSurfaceCopyValue(IOSurfaceRef buffer, CFStringRef key) + __attribute__((availability(ios,introduced=3.0))); + +void IOSurfaceRemoveValue(IOSurfaceRef buffer, CFStringRef key) + __attribute__((availability(ios,introduced=3.0))); + + + +void IOSurfaceSetValues(IOSurfaceRef buffer, CFDictionaryRef keysAndValues) + __attribute__((availability(ios,introduced=3.0))); + +CFDictionaryRef _Nullable IOSurfaceCopyAllValues(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + +void IOSurfaceRemoveAllValues(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + + + + + +mach_port_t IOSurfaceCreateMachPort(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + + +IOSurfaceRef _Nullable IOSurfaceLookupFromMachPort(mach_port_t port) __attribute__((cf_returns_retained)) + __attribute__((availability(ios,introduced=3.0))); +size_t IOSurfaceGetPropertyMaximum(CFStringRef property) + __attribute__((availability(ios,introduced=3.0))); +size_t IOSurfaceGetPropertyAlignment(CFStringRef property) + __attribute__((availability(ios,introduced=3.0))); + + + +size_t IOSurfaceAlignProperty(CFStringRef property, size_t value) + __attribute__((availability(ios,introduced=3.0))); +void IOSurfaceIncrementUseCount(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + +void IOSurfaceDecrementUseCount(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + +int32_t IOSurfaceGetUseCount(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + +Boolean IOSurfaceIsInUse(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=3.0))); + + +Boolean IOSurfaceAllowsPixelSizeCasting(IOSurfaceRef buffer) + __attribute__((availability(ios,introduced=10.0))); +kern_return_t IOSurfaceSetPurgeable(IOSurfaceRef buffer, uint32_t newState, uint32_t * _Nullable oldState) + __attribute__((availability(ios,introduced=10.0))); + +} +#pragma clang assume_nonnull end +extern "C" { + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey __attribute__((availability(macosx,introduced=10.6))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfaceOpenGLFBOCompatibilityKey __attribute__((availability(macosx,introduced=10.6))) __attribute__((availability(ios,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfaceCoreAnimationCompatibilityKey __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfaceOpenGLESTextureCompatibilityKey __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferIOSurfaceOpenGLESFBOCompatibilityKey __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern IOSurfaceRef _Nullable CVPixelBufferGetIOSurface(CVPixelBufferRef _Nullable pixelBuffer) __attribute__((availability(macosx,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferCreateWithIOSurface( + CFAllocatorRef _Nullable allocator, + IOSurfaceRef _Nonnull surface, + CFDictionaryRef _Nullable pixelBufferAttributes, + CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut) __attribute__((availability(ios,introduced=4.0))); + + + + + + +} +extern "C" { + + +typedef struct __attribute__((objc_bridge(id))) __CVPixelBufferPool *CVPixelBufferPoolRef; + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPoolMinimumBufferCountKey __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPoolMaximumBufferAgeKey __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern CFTypeID CVPixelBufferPoolGetTypeID(void) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVPixelBufferPoolRef _Nullable CVPixelBufferPoolRetain( CVPixelBufferPoolRef _Nullable pixelBufferPool ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern void CVPixelBufferPoolRelease( __attribute__((cf_consumed)) CVPixelBufferPoolRef _Nullable pixelBufferPool ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferPoolCreate( + CFAllocatorRef _Nullable allocator, + CFDictionaryRef _Nullable poolAttributes, + CFDictionaryRef _Nullable pixelBufferAttributes, + __attribute__((cf_returns_retained)) CVPixelBufferPoolRef _Nullable * _Nonnull poolOut ) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +__attribute__((visibility("default"))) extern CFDictionaryRef __attribute__((cf_returns_not_retained)) _Nullable CVPixelBufferPoolGetAttributes( CVPixelBufferPoolRef _Nonnull pool ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CFDictionaryRef __attribute__((cf_returns_not_retained)) _Nullable CVPixelBufferPoolGetPixelBufferAttributes( CVPixelBufferPoolRef _Nonnull pool ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferPoolCreatePixelBuffer( + CFAllocatorRef _Nullable allocator, + CVPixelBufferPoolRef _Nonnull pixelBufferPool, + __attribute__((cf_returns_retained)) CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern CVReturn CVPixelBufferPoolCreatePixelBufferWithAuxAttributes( + CFAllocatorRef _Nullable allocator, + CVPixelBufferPoolRef _Nonnull pixelBufferPool, + CFDictionaryRef _Nullable auxAttributes, + __attribute__((cf_returns_retained)) CVPixelBufferRef _Nullable * _Nonnull pixelBufferOut ) __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPoolAllocationThresholdKey __attribute__((availability(ios,introduced=4.0))); + + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelBufferPoolFreeBufferNotification __attribute__((availability(ios,introduced=4.0))); +typedef CVOptionFlags CVPixelBufferPoolFlushFlags; enum +{ + kCVPixelBufferPoolFlushExcessBuffers = 1, +}; +__attribute__((visibility("default"))) extern void CVPixelBufferPoolFlush( CVPixelBufferPoolRef _Nonnull pool, CVPixelBufferPoolFlushFlags options ); + + + +} + + + + + + + + +typedef uint32_t GLbitfield; +typedef uint8_t GLboolean; +typedef int8_t GLbyte; +typedef float GLclampf; +typedef uint32_t GLenum; +typedef float GLfloat; +typedef int32_t GLint; +typedef int16_t GLshort; +typedef int32_t GLsizei; +typedef uint8_t GLubyte; +typedef uint32_t GLuint; +typedef uint16_t GLushort; +typedef void GLvoid; + + +typedef char GLchar; + +typedef int32_t GLclampx; +typedef int32_t GLfixed; + +typedef uint16_t GLhalf; + + +typedef int64_t GLint64; +typedef struct __GLsync *GLsync; +typedef uint64_t GLuint64; + +typedef intptr_t GLintptr; +typedef intptr_t GLsizeiptr; + + + +extern "C" { +typedef CVImageBufferRef CVOpenGLESTextureRef; + +__attribute__((visibility("default"))) extern CFTypeID CVOpenGLESTextureGetTypeID(void) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern GLenum CVOpenGLESTextureGetTarget( CVOpenGLESTextureRef _Nonnull image ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +__attribute__((visibility("default"))) extern GLuint CVOpenGLESTextureGetName( CVOpenGLESTextureRef _Nonnull image ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +__attribute__((visibility("default"))) extern Boolean CVOpenGLESTextureIsFlipped( CVOpenGLESTextureRef _Nonnull image ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern void CVOpenGLESTextureGetCleanTexCoords( CVOpenGLESTextureRef _Nonnull image, + GLfloat lowerLeft[_Nonnull 2], + GLfloat lowerRight[_Nonnull 2], + GLfloat upperRight[_Nonnull 2], + GLfloat upperLeft[_Nonnull 2] ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); + + +} +extern "C" { + + + + + + + +typedef struct __attribute__((objc_bridge(id))) __CVOpenGLESTextureCache *CVOpenGLESTextureCacheRef; + + + + + + +// @class EAGLContext; +#ifndef _REWRITER_typedef_EAGLContext +#define _REWRITER_typedef_EAGLContext +typedef struct objc_object EAGLContext; +typedef struct {} _objc_exc_EAGLContext; +#endif + +typedef EAGLContext *CVEAGLContext; +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVOpenGLESTextureCacheMaximumTextureAgeKey __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +__attribute__((visibility("default"))) extern CFTypeID CVOpenGLESTextureCacheGetTypeID(void) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern CVReturn CVOpenGLESTextureCacheCreate( + CFAllocatorRef _Nullable allocator, + CFDictionaryRef _Nullable cacheAttributes, + CVEAGLContext _Nonnull eaglContext, + CFDictionaryRef _Nullable textureAttributes, + __attribute__((cf_returns_retained)) CVOpenGLESTextureCacheRef _Nullable * _Nonnull cacheOut) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern CVReturn CVOpenGLESTextureCacheCreateTextureFromImage( + CFAllocatorRef _Nullable allocator, + CVOpenGLESTextureCacheRef _Nonnull textureCache, + CVImageBufferRef _Nonnull sourceImage, + CFDictionaryRef _Nullable textureAttributes, + GLenum target, + GLint internalFormat, + GLsizei width, + GLsizei height, + GLenum format, + GLenum type, + size_t planeIndex, + __attribute__((cf_returns_retained)) CVOpenGLESTextureRef _Nullable * _Nonnull textureOut ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern void CVOpenGLESTextureCacheFlush( CVOpenGLESTextureCacheRef _Nonnull textureCache, CVOptionFlags options ) __attribute__((availability(ios,introduced=5.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(tvos,introduced=9.0,deprecated=12.0,message="OpenGL/OpenGLES is no longer supported. Use Metal APIs instead. (Define COREVIDEO_SILENCE_GL_DEPRECATION to silence these warnings)"))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(watchos,unavailable))); + + +} + + +extern "C" { + + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatName __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatConstant __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatCodecType __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatFourCC __attribute__((availability(ios,introduced=4.0))); + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatContainsAlpha __attribute__((availability(ios,introduced=4.3))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatContainsYCbCr __attribute__((availability(ios,introduced=8.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatContainsRGB __attribute__((availability(ios,introduced=8.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatContainsGrayscale __attribute__((availability(ios,introduced=12.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatComponentRange __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatComponentRange_VideoRange __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatComponentRange_FullRange __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatComponentRange_WideRange __attribute__((availability(ios,introduced=9.0))); + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatPlanes __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBlockWidth __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBlockHeight __attribute__((availability(ios,introduced=4.0))); + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBitsPerBlock __attribute__((availability(ios,introduced=4.0))); + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBlockHorizontalAlignment __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBlockVerticalAlignment __attribute__((availability(ios,introduced=4.0))); + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatBlackBlock __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatHorizontalSubsampling __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatVerticalSubsampling __attribute__((availability(ios,introduced=4.0))); + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatOpenGLFormat __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatOpenGLType __attribute__((availability(ios,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatOpenGLInternalFormat __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatCGBitmapInfo __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatQDCompatibility __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatCGBitmapContextCompatibility __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatCGImageCompatibility __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatOpenGLCompatibility __attribute__((availability(macosx,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=4.0))); +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatOpenGLESCompatibility __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(macosx,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +typedef Boolean (*CVFillExtendedPixelsCallBack)(CVPixelBufferRef _Nonnull pixelBuffer, void * _Nullable refCon); +typedef struct { + CFIndex version; + CVFillExtendedPixelsCallBack _Nullable fillCallBack; + void * _Nullable refCon; +} CVFillExtendedPixelsCallBackData; + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVPixelFormatFillExtendedPixelsCallback __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern CFDictionaryRef __attribute__((cf_returns_retained)) _Nullable CVPixelFormatDescriptionCreateWithPixelFormatType(CFAllocatorRef _Nullable allocator, OSType pixelFormat) __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern CFArrayRef __attribute__((cf_returns_retained)) _Nullable CVPixelFormatDescriptionArrayCreateWithAllPixelFormatTypes(CFAllocatorRef _Nullable allocator) __attribute__((availability(ios,introduced=4.0))); + + +__attribute__((visibility("default"))) extern void CVPixelFormatDescriptionRegisterDescriptionWithPixelFormatType(CFDictionaryRef _Nonnull description, OSType pixelFormat) __attribute__((availability(ios,introduced=4.0))); +} + + + +extern "C" { + + + + + +// @protocol MTLTexture; +typedef CVImageBufferRef CVMetalTextureRef; + +__attribute__((visibility("default"))) extern CFTypeID CVMetalTextureGetTypeID(void) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + + + + + +__attribute__((visibility("default"))) extern id /**/ _Nullable CVMetalTextureGetTexture( CVMetalTextureRef _Nonnull image ) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + + + + + +__attribute__((visibility("default"))) extern Boolean CVMetalTextureIsFlipped( CVMetalTextureRef _Nonnull image ) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern void CVMetalTextureGetCleanTexCoords( CVMetalTextureRef _Nonnull image, + float lowerLeft[_Nonnull 2], + float lowerRight[_Nonnull 2], + float upperRight[_Nonnull 2], + float upperLeft[_Nonnull 2] ) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVMetalTextureUsage __attribute__((availability(macosx,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,unavailable))); + + + + + +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVMetalTextureStorageMode __attribute__((availability(macosx,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + + +} +extern "C" { +__attribute__((visibility("default"))) extern const CFStringRef _Nonnull kCVMetalTextureCacheMaximumTextureAgeKey __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +// @protocol MTLDevice; + + + + + + +typedef struct __attribute__((objc_bridge(id))) __CVMetalTextureCache *CVMetalTextureCacheRef; + +__attribute__((visibility("default"))) extern CFTypeID CVMetalTextureCacheGetTypeID(void) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern CVReturn CVMetalTextureCacheCreate( + CFAllocatorRef _Nullable allocator, + CFDictionaryRef _Nullable cacheAttributes, + id /**/ _Nonnull metalDevice, + CFDictionaryRef _Nullable textureAttributes, + __attribute__((cf_returns_retained)) CVMetalTextureCacheRef _Nullable * _Nonnull cacheOut ) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern CVReturn CVMetalTextureCacheCreateTextureFromImage( + CFAllocatorRef _Nullable allocator, + CVMetalTextureCacheRef _Nonnull textureCache, + CVImageBufferRef _Nonnull sourceImage, + CFDictionaryRef _Nullable textureAttributes, + MTLPixelFormat pixelFormat, + size_t width, + size_t height, + size_t planeIndex, + __attribute__((cf_returns_retained)) CVMetalTextureRef _Nullable * _Nonnull textureOut ) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +__attribute__((visibility("default"))) extern void CVMetalTextureCacheFlush(CVMetalTextureCacheRef _Nonnull textureCache, CVOptionFlags options) __attribute__((availability(macosx,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); + + + + +} + +typedef struct __attribute__((objc_bridge(id))) CGImageSource * CGImageSourceRef; + + + +typedef const struct __attribute__((objc_bridge(id))) CGImageMetadata *CGImageMetadataRef; + + + + + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGImageMetadataGetTypeID(void); + + + + + + + +typedef struct __attribute__((objc_bridge(id))) CGImageMetadata *CGMutableImageMetadataRef; + + + + + +extern "C" __attribute__((visibility("default"))) CGMutableImageMetadataRef _Nonnull CGImageMetadataCreateMutable(void) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CGMutableImageMetadataRef _Nullable CGImageMetadataCreateMutableCopy(CGImageMetadataRef _Nonnull metadata) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +typedef struct __attribute__((objc_bridge(id))) CGImageMetadataTag *CGImageMetadataTagRef; + + + + + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGImageMetadataTagGetTypeID(void) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceExif __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceExifAux __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceExifEX __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceDublinCore __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceIPTCCore __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceIPTCExtension __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespacePhotoshop __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceTIFF __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceXMPBasic __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataNamespaceXMPRights __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixExif __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixExifAux __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixExifEX __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixDublinCore __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixIPTCCore __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixIPTCExtension __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixPhotoshop __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixTIFF __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixXMPBasic __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataPrefixXMPRights __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +#pragma clang assume_nonnull end +typedef int32_t CGImageMetadataType; enum { + kCGImageMetadataTypeInvalid = -1, + kCGImageMetadataTypeDefault = 0, + kCGImageMetadataTypeString = 1, + kCGImageMetadataTypeArrayUnordered = 2, + kCGImageMetadataTypeArrayOrdered = 3, + kCGImageMetadataTypeAlternateArray = 4, + kCGImageMetadataTypeAlternateText = 5, + kCGImageMetadataTypeStructure = 6 +}; +extern "C" __attribute__((visibility("default"))) CGImageMetadataTagRef _Nullable CGImageMetadataTagCreate (CFStringRef _Nonnull xmlns, CFStringRef _Nullable prefix, CFStringRef _Nonnull name, CGImageMetadataType type, CFTypeRef _Nonnull value) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageMetadataTagCopyNamespace(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageMetadataTagCopyPrefix(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageMetadataTagCopyName(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFTypeRef _Nullable CGImageMetadataTagCopyValue(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageMetadataType CGImageMetadataTagGetType(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nullable CGImageMetadataTagCopyQualifiers(CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nullable CGImageMetadataCopyTags(CGImageMetadataRef _Nonnull metadata) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CGImageMetadataTagRef _Nullable CGImageMetadataCopyTagWithPath(CGImageMetadataRef _Nonnull metadata, CGImageMetadataTagRef _Nullable parent, CFStringRef _Nonnull path) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageMetadataCopyStringValueWithPath(CGImageMetadataRef _Nonnull metadata, CGImageMetadataTagRef _Nullable parent, CFStringRef _Nonnull path) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) bool CGImageMetadataRegisterNamespaceForPrefix(CGMutableImageMetadataRef _Nonnull metadata, CFStringRef _Nonnull xmlns, CFStringRef _Nonnull prefix, _Nullable CFErrorRef * _Nullable err) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) bool CGImageMetadataSetTagWithPath(CGMutableImageMetadataRef _Nonnull metadata, CGImageMetadataTagRef _Nullable parent, CFStringRef _Nonnull path, CGImageMetadataTagRef _Nonnull tag) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) bool CGImageMetadataSetValueWithPath(CGMutableImageMetadataRef _Nonnull metadata, CGImageMetadataTagRef _Nullable parent, CFStringRef _Nonnull path, CFTypeRef _Nonnull value) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) bool CGImageMetadataRemoveTagWithPath(CGMutableImageMetadataRef _Nonnull metadata, CGImageMetadataTagRef _Nullable parent, CFStringRef _Nonnull path) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +typedef bool(*CGImageMetadataTagBlock)(CFStringRef _Nonnull path, CGImageMetadataTagRef _Nonnull tag); +extern "C" __attribute__((visibility("default"))) void CGImageMetadataEnumerateTagsUsingBlock(CGImageMetadataRef _Nonnull metadata, CFStringRef _Nullable rootPath, CFDictionaryRef _Nullable options, CGImageMetadataTagBlock _Nonnull block) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef _Nonnull kCGImageMetadataEnumerateRecursively __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CGImageMetadataTagRef _Nullable CGImageMetadataCopyTagMatchingImageProperty(CGImageMetadataRef _Nonnull metadata, CFStringRef _Nonnull dictionaryName, CFStringRef _Nonnull propertyName) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) bool CGImageMetadataSetValueMatchingImageProperty(CGMutableImageMetadataRef _Nonnull metadata, CFStringRef _Nonnull dictionaryName, CFStringRef _Nonnull propertyName, CFTypeRef _Nonnull value) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CFDataRef _Nullable CGImageMetadataCreateXMPData (CGImageMetadataRef _Nonnull metadata, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) CGImageMetadataRef _Nullable CGImageMetadataCreateFromXMPData (CFDataRef _Nonnull data) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef _Nonnull kCFErrorDomainCGImageMetadata; + + + + + +typedef int32_t CGImageMetadataErrors; enum { + kCGImageMetadataErrorUnknown = 0, + kCGImageMetadataErrorUnsupportedFormat = 1, + kCGImageMetadataErrorBadArgument = 2, + kCGImageMetadataErrorConflictingArguments = 3, + kCGImageMetadataErrorPrefixConflict = 4, +}; + + + +typedef int32_t CGImageSourceStatus; enum { + kCGImageStatusUnexpectedEOF = -5, + kCGImageStatusInvalidData = -4, + kCGImageStatusUnknownType = -3, + kCGImageStatusReadingHeader = -2, + kCGImageStatusIncomplete = -1, + kCGImageStatusComplete = 0 +}; + +#pragma clang assume_nonnull begin + + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceTypeIdentifierHint __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceShouldCache __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceShouldCacheImmediately __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceShouldAllowFloat __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceCreateThumbnailFromImageIfAbsent __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceCreateThumbnailFromImageAlways __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceThumbnailMaxPixelSize __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceCreateThumbnailWithTransform __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageSourceSubsampleFactor __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGImageSourceGetTypeID (void) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nonnull CGImageSourceCopyTypeIdentifiers(void) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceRef _Nullable CGImageSourceCreateWithDataProvider(CGDataProviderRef _Nonnull provider, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceRef _Nullable CGImageSourceCreateWithData(CFDataRef _Nonnull data, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceRef _Nullable CGImageSourceCreateWithURL(CFURLRef _Nonnull url, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CFStringRef _Nullable CGImageSourceGetType(CGImageSourceRef _Nonnull isrc) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageSourceGetCount(CGImageSourceRef _Nonnull isrc) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CFDictionaryRef _Nullable CGImageSourceCopyProperties(CGImageSourceRef _Nonnull isrc, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CFDictionaryRef _Nullable CGImageSourceCopyPropertiesAtIndex(CGImageSourceRef _Nonnull isrc, size_t index, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageMetadataRef _Nullable CGImageSourceCopyMetadataAtIndex (CGImageSourceRef _Nonnull isrc, size_t index, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageSourceCreateImageAtIndex(CGImageSourceRef _Nonnull isrc, size_t index, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGImageSourceRemoveCacheAtIndex(CGImageSourceRef _Nonnull isrc, size_t index) __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageRef _Nullable CGImageSourceCreateThumbnailAtIndex(CGImageSourceRef _Nonnull isrc, size_t index, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceRef _Nonnull CGImageSourceCreateIncremental(CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGImageSourceUpdateData(CGImageSourceRef _Nonnull isrc, CFDataRef _Nonnull data, bool final) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGImageSourceUpdateDataProvider(CGImageSourceRef _Nonnull isrc, CGDataProviderRef _Nonnull provider, bool final) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceStatus CGImageSourceGetStatus(CGImageSourceRef _Nonnull isrc) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) CGImageSourceStatus CGImageSourceGetStatusAtIndex(CGImageSourceRef _Nonnull isrc, size_t index) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) size_t CGImageSourceGetPrimaryImageIndex(CGImageSourceRef _Nonnull isrc) __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) CFDictionaryRef _Nullable CGImageSourceCopyAuxiliaryDataInfoAtIndex(CGImageSourceRef _Nonnull isrc, size_t index, CFStringRef _Nonnull auxiliaryImageDataType ) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + +typedef struct __attribute__((objc_bridge(id))) CGImageDestination * CGImageDestinationRef; +#pragma clang assume_nonnull begin + + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationLossyCompressionQuality __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationBackgroundColor __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationImageMaxPixelSize __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationEmbedThumbnail __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationOptimizeColorForSharing __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=9.3))); +#pragma clang assume_nonnull end + + + + + +extern "C" __attribute__((visibility("default"))) CFTypeID CGImageDestinationGetTypeID(void) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) CFArrayRef _Nonnull CGImageDestinationCopyTypeIdentifiers(void) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) CGImageDestinationRef _Nullable CGImageDestinationCreateWithDataConsumer(CGDataConsumerRef _Nonnull consumer, CFStringRef _Nonnull type, size_t count, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) CGImageDestinationRef _Nullable CGImageDestinationCreateWithData(CFMutableDataRef _Nonnull data, CFStringRef _Nonnull type, size_t count, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) CGImageDestinationRef _Nullable CGImageDestinationCreateWithURL(CFURLRef _Nonnull url, CFStringRef _Nonnull type, size_t count, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) void CGImageDestinationSetProperties(CGImageDestinationRef _Nonnull idst, CFDictionaryRef _Nullable properties) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGImageDestinationAddImage(CGImageDestinationRef _Nonnull idst, CGImageRef _Nonnull image, CFDictionaryRef _Nullable properties) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) void CGImageDestinationAddImageFromSource(CGImageDestinationRef _Nonnull idst, CGImageSourceRef _Nonnull isrc, size_t index, CFDictionaryRef _Nullable properties) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) bool CGImageDestinationFinalize(CGImageDestinationRef _Nonnull idst) __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) void CGImageDestinationAddImageAndMetadata(CGImageDestinationRef _Nonnull idst, CGImageRef _Nonnull image, CGImageMetadataRef _Nullable metadata, CFDictionaryRef _Nullable options) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +#pragma clang assume_nonnull begin + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationMetadata __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationMergeMetadata __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataShouldExcludeXMP __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageMetadataShouldExcludeGPS __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationDateTime __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageDestinationOrientation __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +#pragma clang assume_nonnull end +extern "C" __attribute__((visibility("default"))) bool CGImageDestinationCopyImageSource(CGImageDestinationRef _Nonnull idst, CGImageSourceRef _Nonnull isrc, CFDictionaryRef _Nullable options, _Nullable CFErrorRef * _Nullable err) __attribute__((availability(macos,introduced=10.8))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) void CGImageDestinationAddAuxiliaryDataInfo(CGImageDestinationRef _Nonnull idst, CFStringRef _Nonnull auxiliaryImageDataType, CFDictionaryRef _Nonnull auxiliaryDataInfoDictionary ) __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSDictionary __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyRawDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerMinoltaDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerFujiDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerOlympusDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerPentaxDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageProperty8BIMDictionary __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxDictionary __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyOpenEXRDictionary __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerAppleDictionary __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyFileContentsDictionary __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyFileSize __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPixelHeight __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPixelWidth __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDPIHeight __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDPIWidth __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDepth __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyOrientation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIsFloat __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIsIndexed __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHasAlpha __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyColorModel __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyProfileName __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPrimaryImage __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyColorModelRGB __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyColorModelGray __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyColorModelCMYK __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyColorModelLab __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFCompression __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFPhotometricInterpretation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFDocumentName __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFImageDescription __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFMake __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFModel __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFOrientation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFXResolution __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFYResolution __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFResolutionUnit __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFSoftware __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFTransferFunction __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFDateTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFArtist __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFHostComputer __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFCopyright __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFWhitePoint __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFPrimaryChromaticities __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFTileWidth __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyTIFFTileLength __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFVersion __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFXDensity __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFYDensity __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFDensityUnit __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyJFIFIsProgressive __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSLoopCount __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSDelayTime __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSUnclampedDelayTime __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSCanvasPixelWidth __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSCanvasPixelHeight __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHEICSFrameInfoArray __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifExposureTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFNumber __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifExposureProgram __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSpectralSensitivity __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifISOSpeedRatings __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifOECF __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSensitivityType __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifStandardOutputSensitivity __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifRecommendedExposureIndex __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifISOSpeed __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifISOSpeedLatitudeyyy __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifISOSpeedLatitudezzz __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifVersion __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifDateTimeOriginal __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifDateTimeDigitized __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifOffsetTime __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifOffsetTimeOriginal __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifOffsetTimeDigitized __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifComponentsConfiguration __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifCompressedBitsPerPixel __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifShutterSpeedValue __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifApertureValue __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifBrightnessValue __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifExposureBiasValue __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifMaxApertureValue __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubjectDistance __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifMeteringMode __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifLightSource __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFlash __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFocalLength __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubjectArea __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifMakerNote __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifUserComment __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubsecTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubsecTimeOriginal __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubsecTimeDigitized __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFlashPixVersion __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifColorSpace __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifPixelXDimension __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifPixelYDimension __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifRelatedSoundFile __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFlashEnergy __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSpatialFrequencyResponse __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFocalPlaneXResolution __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFocalPlaneYResolution __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFocalPlaneResolutionUnit __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubjectLocation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifExposureIndex __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSensingMethod __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFileSource __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSceneType __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifCFAPattern __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifCustomRendered __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifExposureMode __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifWhiteBalance __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifDigitalZoomRatio __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifFocalLenIn35mmFilm __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSceneCaptureType __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifGainControl __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifContrast __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSaturation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSharpness __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifDeviceSettingDescription __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubjectDistRange __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifImageUniqueID __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifCameraOwnerName __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifBodySerialNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifLensSpecification __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifLensMake __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifLensModel __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifLensSerialNumber __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifGamma __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifCompositeImage __attribute__((availability(macos,introduced=10.15.1))) __attribute__((availability(ios,introduced=13.1))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSourceImageNumberOfCompositeImage __attribute__((availability(macos,introduced=10.15.1))) __attribute__((availability(ios,introduced=13.1))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSourceExposureTimesOfCompositeImage __attribute__((availability(macos,introduced=10.15.1))) __attribute__((availability(ios,introduced=13.1))); + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifSubsecTimeOrginal __attribute__((availability(macos,introduced=10.4,deprecated=10.11,message="No longer supported"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="No longer supported"))); + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxLensInfo __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxLensModel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxLensID __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxLensSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxImageNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxFlashCompensation __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxOwnerName __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyExifAuxFirmware __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFLoopCount __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFDelayTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFImageColorMap __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFHasGlobalColorMap __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFUnclampedDelayTime __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFCanvasPixelWidth __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFCanvasPixelHeight __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGIFFrameInfoArray __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGAuthor __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGChromaticities __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGComment __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGCopyright __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGCreationTime __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGDescription __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGDisclaimer __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGGamma __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGInterlaceType __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGModificationTime __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGSoftware __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGSource __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGsRGBIntent __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGTitle __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGWarning __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGXPixelsPerMeter __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGYPixelsPerMeter __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGLoopCount __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGDelayTime __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGUnclampedDelayTime __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGFrameInfoArray __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGCanvasPixelWidth __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAPNGCanvasPixelHeight __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSVersion __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSLatitudeRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSLatitude __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSLongitudeRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSLongitude __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSAltitudeRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSAltitude __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSTimeStamp __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSSatellites __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSStatus __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSMeasureMode __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDOP __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSSpeedRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSSpeed __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSTrackRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSTrack __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSImgDirectionRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSImgDirection __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSMapDatum __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestLatitudeRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestLatitude __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestLongitudeRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestLongitude __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestBearingRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestBearing __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestDistanceRef __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDestDistance __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSProcessingMethod __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSAreaInformation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDateStamp __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSDifferental __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyGPSHPositioningError __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCObjectTypeReference __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCObjectAttributeReference __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCObjectName __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCEditStatus __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCEditorialUpdate __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCUrgency __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCSubjectReference __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCategory __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCSupplementalCategory __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCFixtureIdentifier __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCKeywords __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContentLocationCode __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContentLocationName __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCReleaseDate __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCReleaseTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExpirationDate __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExpirationTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCSpecialInstructions __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCActionAdvised __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCReferenceService __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCReferenceDate __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCReferenceNumber __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCDateCreated __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCTimeCreated __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCDigitalCreationDate __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCDigitalCreationTime __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCOriginatingProgram __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCProgramVersion __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCObjectCycle __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCByline __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCBylineTitle __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCity __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCSubLocation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCProvinceState __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCountryPrimaryLocationCode __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCountryPrimaryLocationName __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCOriginalTransmissionReference __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCHeadline __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCredit __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCSource __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCopyrightNotice __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContact __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCaptionAbstract __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCWriterEditor __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCImageType __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCImageOrientation __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCLanguageIdentifier __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCStarRating __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCCreatorContactInfo __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCRightsUsageTerms __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCScene __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAboutCvTerm __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAboutCvTermCvId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAboutCvTermId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAboutCvTermName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAboutCvTermRefinedAbout __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAddlModelInfo __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkOrObject __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCircaDateCreated __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkContentDescription __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkContributionDescription __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCopyrightNotice __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCreator __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCreatorID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCopyrightOwnerID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkCopyrightOwnerName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkLicensorID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkLicensorName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkDateCreated __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkPhysicalDescription __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkSource __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkSourceInventoryNo __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkSourceInvURL __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkStylePeriod __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtArtworkTitle __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAudioBitrate __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAudioBitrateMode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtAudioChannelCount __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCircaDateCreated __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContainerFormat __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContainerFormatIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContainerFormatName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContributor __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContributorIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContributorName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtContributorRole __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCopyrightYear __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCreator __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCreatorIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCreatorName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtCreatorRole __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtControlledVocabularyTerm __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreen __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegion __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionD __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionH __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionText __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionUnit __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionW __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionX __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDataOnScreenRegionY __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDigitalImageGUID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDigitalSourceFileType __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDigitalSourceType __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDopesheet __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDopesheetLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDopesheetLinkLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtDopesheetLinkLinkQualifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEmbdEncRightsExpr __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEmbeddedEncodedRightsExpr __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEmbeddedEncodedRightsExprType __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEmbeddedEncodedRightsExprLangID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEpisode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEpisodeIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEpisodeName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEpisodeNumber __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtEvent __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtShownEvent __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtShownEventIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtShownEventName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtExternalMetadataLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtFeedIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtGenre __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtGenreCvId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtGenreCvTermId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtGenreCvTermName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtGenreCvTermRefinedAbout __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtHeadline __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtIPTCLastEdited __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLinkedEncRightsExpr __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLinkedEncodedRightsExpr __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLinkedEncodedRightsExprType __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLinkedEncodedRightsExprLangID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationCreated __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationCity __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationCountryCode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationCountryName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationGPSAltitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationGPSLatitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationGPSLongitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationLocationId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationLocationName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationProvinceState __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationSublocation __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationWorldRegion __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtLocationShown __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtMaxAvailHeight __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtMaxAvailWidth __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtModelAge __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtOrganisationInImageCode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtOrganisationInImageName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonHeard __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonHeardIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonHeardName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImage __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageWDetails __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageCharacteristic __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageCvTermCvId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageCvTermId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageCvTermName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageCvTermRefinedAbout __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageDescription __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPersonInImageName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtProductInImage __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtProductInImageDescription __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtProductInImageGTIN __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtProductInImageName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPublicationEvent __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPublicationEventDate __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPublicationEventIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtPublicationEventName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRating __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRatingRegion __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionCity __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionCountryCode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionCountryName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionGPSAltitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionGPSLatitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionGPSLongitude __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionLocationId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionLocationName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionProvinceState __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionSublocation __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingRegionWorldRegion __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingScaleMaxValue __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingScaleMinValue __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingSourceLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingValue __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRatingValueLogoLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRegistryID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRegistryEntryRole __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRegistryItemID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtRegistryOrganisationID __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtReleaseReady __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeason __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeasonIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeasonName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeasonNumber __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeries __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeriesIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSeriesName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtStorylineIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtStreamReady __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtStylePeriod __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSupplyChainSource __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSupplyChainSourceIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtSupplyChainSourceName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTemporalCoverage __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTemporalCoverageFrom __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTemporalCoverageTo __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTranscript __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTranscriptLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTranscriptLinkLink __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtTranscriptLinkLinkQualifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoBitrate __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoBitrateMode __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoDisplayAspectRatio __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoEncodingProfile __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoShotType __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoShotTypeIdentifier __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoShotTypeName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVideoStreamsCount __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtVisualColor __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtWorkflowTag __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtWorkflowTagCvId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtWorkflowTagCvTermId __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtWorkflowTagCvTermName __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCExtWorkflowTagCvTermRefinedAbout __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoCity __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoCountry __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoAddress __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoPostalCode __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoStateProvince __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoEmails __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoPhones __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyIPTCContactInfoWebURLs __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageProperty8BIMLayerNames __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageProperty8BIMVersion __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGVersion __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBackwardVersion __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGUniqueCameraModel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGLocalizedCameraModel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCameraSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGLensInfo __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBlackLevel __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGWhiteLevel __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCalibrationIlluminant1 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCalibrationIlluminant2 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGColorMatrix1 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGColorMatrix2 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCameraCalibration1 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCameraCalibration2 __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAsShotNeutral __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAsShotWhiteXY __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBaselineExposure __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBaselineNoise __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBaselineSharpness __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPrivateData __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCameraCalibrationSignature __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileCalibrationSignature __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGNoiseProfile __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGWarpRectilinear __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGWarpFisheye __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGFixVignetteRadial __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGActiveArea __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAnalogBalance __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAntiAliasStrength __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAsShotICCProfile __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAsShotPreProfileMatrix __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGAsShotProfileName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBaselineExposureOffset __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBayerGreenSplit __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBestQualityScale __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBlackLevelDeltaH __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBlackLevelDeltaV __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGBlackLevelRepeatDim __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCFALayout __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCFAPlaneColor __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGChromaBlurRadius __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGColorimetricReference __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCurrentICCProfile __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGCurrentPreProfileMatrix __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDefaultBlackRender __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDefaultCropOrigin __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDefaultCropSize __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDefaultScale __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGDefaultUserCrop __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGExtraCameraProfiles __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGForwardMatrix1 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGForwardMatrix2 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGLinearizationTable __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGLinearResponseLimit __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGMakerNoteSafety __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGMaskedAreas __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGNewRawImageDigest __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGNoiseReductionApplied __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOpcodeList1 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOpcodeList2 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOpcodeList3 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalBestQualityFinalSize __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalDefaultCropSize __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalDefaultFinalSize __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalRawFileData __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalRawFileDigest __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGOriginalRawFileName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewApplicationName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewApplicationVersion __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewColorSpace __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewDateTime __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewSettingsDigest __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGPreviewSettingsName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileCopyright __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileEmbedPolicy __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileHueSatMapData1 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileHueSatMapData2 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileHueSatMapDims __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileHueSatMapEncoding __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileLookTableData __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileLookTableDims __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileLookTableEncoding __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileName __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGProfileToneCurve __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGRawDataUniqueID __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGRawImageDigest __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGRawToPreviewGain __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGReductionMatrix1 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGReductionMatrix2 __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGRowInterleaveFactor __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGShadowScale __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyDNGSubTileBlockSize __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFDescription __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFFirmware __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFOwnerName __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFImageName __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFImageFileName __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFReleaseMethod __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFReleaseTiming __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFRecordID __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFSelfTimingTime __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFCameraSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFImageSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFContinuousDrive __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFFocusMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFMeteringMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFShootingMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFLensModel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFLensMaxMM __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFLensMinMM __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFWhiteBalanceIndex __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFFlashExposureComp __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyCIFFMeasuredEV __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonISOSetting __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonColorMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonQuality __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonWhiteBalanceMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonSharpenMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonFocusMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonFlashSetting __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonISOSelection __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonFlashExposureComp __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonImageAdjustment __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonLensAdapter __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonLensType __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonLensInfo __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonFocusDistance __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonDigitalZoom __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonShootingMode __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonCameraSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerNikonShutterCount __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonOwnerName __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonCameraSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonImageSerialNumber __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonFlashExposureComp __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonContinuousDrive __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonLensModel __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonFirmware __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyMakerCanonAspectRatioInfo __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=4.0))); + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyOpenEXRAspectRatio __attribute__((availability(macos,introduced=10.9))) __attribute__((availability(ios,introduced=11.3))); + + + +typedef uint32_t CGImagePropertyOrientation; enum { + kCGImagePropertyOrientationUp = 1, + kCGImagePropertyOrientationUpMirrored, + kCGImagePropertyOrientationDown, + kCGImagePropertyOrientationDownMirrored, + kCGImagePropertyOrientationLeftMirrored, + kCGImagePropertyOrientationRight, + kCGImagePropertyOrientationRightMirrored, + kCGImagePropertyOrientationLeft +}; +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPNGCompressionFilter __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypeDepth __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypeDisparity __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypePortraitEffectsMatte __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))); + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationSkinMatte __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationHairMatte __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataTypeSemanticSegmentationTeethMatte __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataInfoData __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataInfoDataDescription __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAuxiliaryDataInfoMetadata __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyImageCount __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyWidth __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyHeight __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyBytesPerRow __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyNamedColorSpace __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyPixelFormat __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyImages __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyThumbnailImages __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAuxiliaryData __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImagePropertyAuxiliaryDataType __attribute__((availability(macos,introduced=10.13))) __attribute__((availability(ios,introduced=11.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + +typedef OSStatus CGImageAnimationStatus; enum { + kCGImageAnimationStatus_ParameterError = -22140, + kCGImageAnimationStatus_CorruptInputImage = -22141, + kCGImageAnimationStatus_UnsupportedFormat = -22142, + kCGImageAnimationStatus_IncompleteInputImage = -22143, + kCGImageAnimationStatus_AllocationFailure = -22144 +}; + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAnimationStartIndex __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAnimationDelayTime __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + +extern "C" __attribute__((visibility("default"))) const CFStringRef kCGImageAnimationLoopCount __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + +typedef void (*CGImageSourceAnimationBlock)(size_t index, CGImageRef image, bool* stop); + + + + + + + +extern "C" __attribute__((visibility("default"))) OSStatus CGAnimateImageAtURLWithBlock(CFURLRef url, CFDictionaryRef _Nullable options, CGImageSourceAnimationBlock block) __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) OSStatus CGAnimateImageDataWithBlock(CFDataRef data, CFDictionaryRef _Nullable options, CGImageSourceAnimationBlock block) __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +// @class CIContext; +#ifndef _REWRITER_typedef_CIContext +#define _REWRITER_typedef_CIContext +typedef struct objc_object CIContext; +typedef struct {} _objc_exc_CIContext; +#endif + +#ifndef _REWRITER_typedef_CIFilterShape +#define _REWRITER_typedef_CIFilterShape +typedef struct objc_object CIFilterShape; +typedef struct {} _objc_exc_CIFilterShape; +#endif + +#ifndef _REWRITER_typedef_CIColor +#define _REWRITER_typedef_CIColor +typedef struct objc_object CIColor; +typedef struct {} _objc_exc_CIColor; +#endif + +#ifndef _REWRITER_typedef_CIFilter +#define _REWRITER_typedef_CIFilter +typedef struct objc_object CIFilter; +typedef struct {} _objc_exc_CIFilter; +#endif + +// @class AVDepthData; +#ifndef _REWRITER_typedef_AVDepthData +#define _REWRITER_typedef_AVDepthData +typedef struct objc_object AVDepthData; +typedef struct {} _objc_exc_AVDepthData; +#endif + +// @class AVPortraitEffectsMatte; +#ifndef _REWRITER_typedef_AVPortraitEffectsMatte +#define _REWRITER_typedef_AVPortraitEffectsMatte +typedef struct objc_object AVPortraitEffectsMatte; +typedef struct {} _objc_exc_AVPortraitEffectsMatte; +#endif + +// @class AVSemanticSegmentationMatte; +#ifndef _REWRITER_typedef_AVSemanticSegmentationMatte +#define _REWRITER_typedef_AVSemanticSegmentationMatte +typedef struct objc_object AVSemanticSegmentationMatte; +typedef struct {} _objc_exc_AVSemanticSegmentationMatte; +#endif + + +// @protocol MTLTexture; + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIImage +#define _REWRITER_typedef_CIImage +typedef struct objc_object CIImage; +typedef struct {} _objc_exc_CIImage; +#endif + +struct CIImage_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + + + +typedef int CIFormat __attribute__((swift_wrapper(enum))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatARGB8 __attribute__((availability(ios,introduced=6_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatBGRA8; +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGBA8; +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatABGR8 __attribute__((availability(ios,introduced=9_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGBAh __attribute__((availability(ios,introduced=6_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGBA16 __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGBAf __attribute__((availability(ios,introduced=7_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatA8 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatA16 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatAh __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatAf __attribute__((availability(ios,introduced=9_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatR8 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatR16 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRh __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRf __attribute__((availability(ios,introduced=9_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRG8 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRG16 __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGh __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatRGf __attribute__((availability(ios,introduced=9_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatL8 __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatL16 __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLh __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLf __attribute__((availability(ios,introduced=10_0))); + +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLA8 __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLA16 __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLAh __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIFormat kCIFormatLAf __attribute__((availability(ios,introduced=10_0))); +typedef NSString * CIImageOption __attribute__((swift_wrapper(enum))); + + + + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageColorSpace; + + + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageNearestSampling __attribute__((availability(ios,introduced=11_0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageProperties __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageApplyOrientationProperty __attribute__((availability(ios,introduced=11_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageTextureTarget __attribute__((availability(ios,unavailable))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageTextureFormat __attribute__((availability(ios,unavailable))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliaryDepth __attribute__((availability(ios,introduced=11_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliaryDisparity __attribute__((availability(ios,introduced=11_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliaryPortraitEffectsMatte __attribute__((availability(ios,introduced=12_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliarySemanticSegmentationSkinMatte __attribute__((availability(ios,introduced=13_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliarySemanticSegmentationHairMatte __attribute__((availability(ios,introduced=13_0))); +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageAuxiliarySemanticSegmentationTeethMatte __attribute__((availability(ios,introduced=13_0))); + + + +// + (CIImage *)imageWithCGImage:(CGImageRef)image; +#if 0 ++ (CIImage *)imageWithCGImage:(CGImageRef)image + options:(nullable NSDictionary *)options; +#endif + + + +#if 0 ++ (CIImage *)imageWithCGImageSource:(CGImageSourceRef)source + index:(size_t)index + options:(nullable NSDictionary *)dict __attribute__((availability(ios,introduced=13_0))); +#endif + + + +// + (CIImage *)imageWithCGLayer:(CGLayerRef)layer __attribute__((availability(ios,unavailable))); +#if 0 ++ (CIImage *)imageWithCGLayer:(CGLayerRef)layer + options:(nullable NSDictionary *)options __attribute__((availability(ios,unavailable))); +#endif + + + + + + +#if 0 ++ (CIImage *)imageWithBitmapData:(NSData *)data + bytesPerRow:(size_t)bytesPerRow + size:(CGSize)size + format:(CIFormat)format + colorSpace:(nullable CGColorSpaceRef)colorSpace; +#endif + + + + + + + +#if 0 ++ (CIImage *)imageWithTexture:(unsigned int)name + size:(CGSize)size + flipped:(BOOL)flipped + colorSpace:(nullable CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=6_0,deprecated=12_0,message="" "Core Image OpenGL API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#endif + + + + + + + +#if 0 ++ (CIImage *)imageWithTexture:(unsigned int)name + size:(CGSize)size + flipped:(BOOL)flipped + options:(nullable NSDictionary *)options __attribute__((availability(ios,unavailable))); +#endif + + + + + +#if 0 ++ (nullable CIImage *)imageWithMTLTexture:(id)texture + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=9_0))); +#endif + + +// + (nullable CIImage *)imageWithContentsOfURL:(NSURL *)url; +#if 0 ++ (nullable CIImage *)imageWithContentsOfURL:(NSURL *)url + options:(nullable NSDictionary *)options; +#endif + + +// + (nullable CIImage *)imageWithData:(NSData *)data; +#if 0 ++ (nullable CIImage *)imageWithData:(NSData *)data + options:(nullable NSDictionary *)options; +#endif + + + +// + (CIImage *)imageWithCVImageBuffer:(CVImageBufferRef)imageBuffer __attribute__((availability(ios,introduced=9_0))); +#if 0 ++ (CIImage *)imageWithCVImageBuffer:(CVImageBufferRef)imageBuffer + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=9_0))); +#endif + + + +// + (CIImage *)imageWithCVPixelBuffer:(CVPixelBufferRef)pixelBuffer __attribute__((availability(ios,introduced=5_0))); +#if 0 ++ (CIImage *)imageWithCVPixelBuffer:(CVPixelBufferRef)pixelBuffer + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=5_0))); +#endif + + + + +// + (CIImage *)imageWithIOSurface:(IOSurfaceRef)surface __attribute__((availability(ios,introduced=5_0))); +#if 0 ++ (CIImage *)imageWithIOSurface:(IOSurfaceRef)surface + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=5_0))); +#endif + + + + + +// + (CIImage *)imageWithColor:(CIColor *)color; + + +// + (CIImage *)emptyImage; + + +@property (class, strong, readonly) CIImage *blackImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *whiteImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *grayImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *redImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *greenImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *blueImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *cyanImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *magentaImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *yellowImage __attribute__((availability(ios,introduced=13_0))); +@property (class, strong, readonly) CIImage *clearImage __attribute__((availability(ios,introduced=13_0))); + + + +// - (instancetype)initWithCGImage:(CGImageRef)image; +#if 0 +- (instancetype)initWithCGImage:(CGImageRef)image + options:(nullable NSDictionary *)options; +#endif + + +#if 0 +- (instancetype) initWithCGImageSource:(CGImageSourceRef)source + index:(size_t)index + options:(nullable NSDictionary *)dict __attribute__((availability(ios,introduced=13_0))); +#endif + + +#if 0 +- (instancetype)initWithCGLayer:(CGLayerRef)layer + __attribute__((availability(ios,unavailable))); +#endif + +#if 0 +- (instancetype)initWithCGLayer:(CGLayerRef)layer + options:(nullable NSDictionary *)options + __attribute__((availability(ios,unavailable))); +#endif + + +// - (nullable instancetype)initWithData:(NSData *)data; +#if 0 +- (nullable instancetype)initWithData:(NSData *)data + options:(nullable NSDictionary *)options; +#endif + + +#if 0 +- (instancetype)initWithBitmapData:(NSData *)data + bytesPerRow:(size_t)bytesPerRow + size:(CGSize)size + format:(CIFormat)format + colorSpace:(nullable CGColorSpaceRef)colorSpace; +#endif + + +#if 0 +- (instancetype)initWithTexture:(unsigned int)name + size:(CGSize)size + flipped:(BOOL)flipped + colorSpace:(nullable CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=6_0,deprecated=12_0,message="" "Core Image OpenGL API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#endif + + +#if 0 +- (instancetype)initWithTexture:(unsigned int)name + size:(CGSize)size + flipped:(BOOL)flipped + options:(nullable NSDictionary *)options __attribute__((availability(ios,unavailable))); +#endif + + + +#if 0 +- (nullable instancetype)initWithMTLTexture:(id)texture + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=9_0))); +#endif + + +// - (nullable instancetype)initWithContentsOfURL:(NSURL *)url; +#if 0 +- (nullable instancetype)initWithContentsOfURL:(NSURL *)url + options:(nullable NSDictionary *)options; +#endif + + + +// - (instancetype)initWithIOSurface:(IOSurfaceRef)surface __attribute__((availability(ios,introduced=5_0))); + +#if 0 +- (instancetype)initWithIOSurface:(IOSurfaceRef)surface + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=5_0))); +#endif + +// - (instancetype)initWithCVImageBuffer:(CVImageBufferRef)imageBuffer __attribute__((availability(ios,introduced=9_0))); +#if 0 +- (instancetype)initWithCVImageBuffer:(CVImageBufferRef)imageBuffer + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=9_0))); +#endif + + +// - (instancetype)initWithCVPixelBuffer:(CVPixelBufferRef)pixelBuffer __attribute__((availability(ios,introduced=5_0))); +#if 0 +- (instancetype)initWithCVPixelBuffer:(CVPixelBufferRef)pixelBuffer + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=5_0))); +#endif + + +// - (instancetype)initWithColor:(CIColor *)color; + + + +// - (CIImage *)imageByApplyingTransform:(CGAffineTransform)matrix; + + +#if 0 +- (CIImage *)imageByApplyingTransform:(CGAffineTransform)matrix + highQualityDownsample:(BOOL)highQualityDownsample __attribute__((availability(ios,introduced=10_0))); +#endif + + + + + +// - (CIImage *)imageByApplyingOrientation:(int)orientation __attribute__((availability(ios,introduced=8_0))); + + + + +// - (CGAffineTransform)imageTransformForOrientation:(int)orientation __attribute__((availability(ios,introduced=8_0))); + + +// - (CIImage *)imageByApplyingCGOrientation:(CGImagePropertyOrientation)orientation __attribute__((availability(ios,introduced=11_0))); + + +// - (CGAffineTransform)imageTransformForCGOrientation:(CGImagePropertyOrientation)orientation __attribute__((availability(ios,introduced=11_0))); + + + +// - (CIImage *)imageByCompositingOverImage:(CIImage *)dest __attribute__((availability(ios,introduced=8_0))); + + +// - (CIImage *)imageByCroppingToRect:(CGRect)rect; + + +// - (CIImage *)imageByClampingToExtent __attribute__((availability(ios,introduced=8_0))); + + + +// - (CIImage *)imageByClampingToRect:(CGRect)rect __attribute__((availability(ios,introduced=10_0))); + + + + + +#if 0 +- (CIImage *)imageByApplyingFilter:(NSString *)filterName + withInputParameters:(nullable NSDictionary *)params __attribute__((availability(ios,introduced=8_0))); +#endif + + + + + + +// - (CIImage *)imageByApplyingFilter:(NSString *)filterName __attribute__((availability(ios,introduced=11_0))); + + + + +// - (nullable CIImage *)imageByColorMatchingColorSpaceToWorkingSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); + + + +// - (nullable CIImage *)imageByColorMatchingWorkingSpaceToColorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageByPremultiplyingAlpha __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageByUnpremultiplyingAlpha __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageBySettingAlphaOneInExtent:(CGRect)extent __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageByApplyingGaussianBlurWithSigma:(double)sigma __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageBySettingProperties:(NSDictionary*)properties __attribute__((availability(ios,introduced=10_0))); + + +// - (CIImage *)imageBySamplingLinear __attribute__((availability(ios,introduced=11_0))); + + +// - (CIImage *)imageBySamplingNearest __attribute__((availability(ios,introduced=11_0))); + + + +// - (CIImage *)imageByInsertingIntermediate __attribute__((availability(ios,introduced=12_0))); + + + +// - (CIImage *)imageByInsertingIntermediate:(BOOL)cache __attribute__((availability(ios,introduced=12_0))); + + +// @property (nonatomic, readonly) CGRect extent; + + + + +// @property (atomic, readonly) NSDictionary *properties __attribute__((availability(ios,introduced=5_0))); + + +// @property (atomic, readonly) CIFilterShape *definition __attribute__((availability(ios,unavailable))); + + + +// @property (atomic, readonly, nullable) NSURL *url __attribute__((availability(ios,introduced=9_0))); + + + +// @property (atomic, readonly, nullable) CGColorSpaceRef colorSpace __attribute__((availability(ios,introduced=9_0))) __attribute__((cf_returns_not_retained)); + + + + +// @property (nonatomic, readonly, nullable) CVPixelBufferRef pixelBuffer __attribute__((availability(ios,introduced=10_0))); + + + +// @property (nonatomic, readonly, nullable) CGImageRef CGImage __attribute__((availability(ios,introduced=10_0))); + + + +#if 0 +- (CGRect)regionOfInterestForImage:(CIImage *)image + inRect:(CGRect)rect __attribute__((availability(ios,introduced=6_0))); +#endif + + +/* @end */ + + + +// @interface CIImage (AutoAdjustment) + + + +typedef NSString * CIImageAutoAdjustmentOption __attribute__((swift_wrapper(enum))); +extern "C" __attribute__((visibility("default"))) CIImageAutoAdjustmentOption const kCIImageAutoAdjustEnhance __attribute__((availability(ios,introduced=5_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIImageAutoAdjustmentOption const kCIImageAutoAdjustRedEye __attribute__((availability(ios,introduced=5_0))); + + + + + +extern "C" __attribute__((visibility("default"))) CIImageAutoAdjustmentOption const kCIImageAutoAdjustFeatures __attribute__((availability(ios,introduced=5_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIImageAutoAdjustmentOption const kCIImageAutoAdjustCrop __attribute__((availability(ios,introduced=8_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIImageAutoAdjustmentOption const kCIImageAutoAdjustLevel __attribute__((availability(ios,introduced=8_0))); +// - (NSArray *)autoAdjustmentFilters __attribute__((availability(ios,introduced=5_0))); +#if 0 +- (NSArray *)autoAdjustmentFiltersWithOptions:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=5_0))); +#endif + + +/* @end */ + + +// @interface CIImage (AVDepthData) + + + +// @property (nonatomic, readonly, nullable) AVDepthData *depthData __attribute__((availability(ios,introduced=11_0))); + +#if 0 +-(nullable instancetype) initWithDepthData:(AVDepthData *)data + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=11_0))); +#endif + + +// -(nullable instancetype)initWithDepthData:(AVDepthData *)data __attribute__((availability(ios,introduced=11_0))); + +#if 0 ++(nullable instancetype)imageWithDepthData:(AVDepthData *)data + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=11_0))); +#endif + + +// +(nullable instancetype)imageWithDepthData:(AVDepthData *)data __attribute__((availability(ios,introduced=11_0))); + +/* @end */ + + + +// @interface CIImage (AVPortraitEffectsMatte) + + + +// @property (nonatomic, readonly, nullable) AVPortraitEffectsMatte *portraitEffectsMatte __attribute__((availability(ios,introduced=12_0))); + +#if 0 +-(nullable instancetype) initWithPortaitEffectsMatte:(AVPortraitEffectsMatte *)matte + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=12_0))); +#endif + + +// -(nullable instancetype)initWithPortaitEffectsMatte:(AVPortraitEffectsMatte *)matte __attribute__((availability(ios,introduced=11_0))); + +#if 0 ++(nullable instancetype)imageWithPortaitEffectsMatte:(AVPortraitEffectsMatte *)matte + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=12_0))); +#endif + + +// +(nullable instancetype)imageWithPortaitEffectsMatte:(AVPortraitEffectsMatte *)matte __attribute__((availability(ios,introduced=12_0))); + +/* @end */ + + +// @interface CIImage (AVSemanticSegmentationMatte) + + + +// @property (nonatomic, readonly, nullable) AVSemanticSegmentationMatte *semanticSegmentationMatte __attribute__((availability(ios,introduced=13_0))); + +#if 0 +-(nullable instancetype)initWithSemanticSegmentationMatte:(AVSemanticSegmentationMatte *)matte + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=13_0))); +#endif + + +// -(nullable instancetype)initWithSemanticSegmentationMatte:(AVSemanticSegmentationMatte *)matte __attribute__((availability(ios,introduced=13_0))); + +#if 0 ++(nullable instancetype)imageWithSemanticSegmentationMatte:(AVSemanticSegmentationMatte *)matte + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=13_0))); +#endif + + +// +(nullable instancetype)imageWithSemanticSegmentationMatte:(AVSemanticSegmentationMatte *)matte __attribute__((availability(ios,introduced=13_0))); + + +/* @end */ + +#pragma clang assume_nonnull end +// @class CIFilter; +#ifndef _REWRITER_typedef_CIFilter +#define _REWRITER_typedef_CIFilter +typedef struct objc_object CIFilter; +typedef struct {} _objc_exc_CIFilter; +#endif + + +// @protocol MTLDevice, MTLTexture, MTLCommandBuffer, MTLCommandQueue; + +#pragma clang assume_nonnull begin + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIContext +#define _REWRITER_typedef_CIContext +typedef struct objc_object CIContext; +typedef struct {} _objc_exc_CIContext; +#endif + +struct CIContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + + + +typedef NSString * CIContextOption __attribute__((swift_wrapper(enum))); + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextOutputColorSpace; + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextWorkingColorSpace; + + + + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextWorkingFormat __attribute__((availability(ios,introduced=8_0))); + + + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextHighQualityDownsample __attribute__((availability(ios,introduced=9_0))); + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextOutputPremultiplied __attribute__((availability(ios,introduced=7_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextCacheIntermediates __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextUseSoftwareRenderer; + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextPriorityRequestLow __attribute__((availability(ios,introduced=8_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIContextOption const kCIContextAllowLowPower __attribute__((availability(ios,introduced=13_0))); +#if 0 ++ (CIContext *)contextWithCGContext:(CGContextRef)cgctx + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=9_0))); +#endif + +#if 0 ++ (CIContext *)contextWithOptions:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=5_0))); +#endif + + +// + (CIContext *)context __attribute__((availability(ios,introduced=5_0))); + +#if 0 +- (instancetype)initWithOptions:(nullable NSDictionary *)options +__attribute__((availability(ios,introduced=5_0))); +#endif + + +// - (instancetype)init __attribute__((availability(ios,introduced=5_0))); +#if 0 ++ (CIContext *)contextWithEAGLContext:(EAGLContext *)eaglContext + __attribute__((availability(ios,introduced=5_0,deprecated=12_0,message="" "Core Image OpenGLES API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#endif + + +#if 0 ++ (CIContext *)contextWithEAGLContext:(EAGLContext *)eaglContext + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=5_0,deprecated=12_0,message="" "Core Image OpenGLES API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#endif + +// + (CIContext *)contextWithMTLDevice:(id)device __attribute__((availability(ios,introduced=9_0))); + +#if 0 ++ (CIContext *)contextWithMTLDevice:(id)device + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=9_0))); +#endif + + + + + +// + (CIContext *)contextWithMTLCommandQueue:(id)commandQueue __attribute__((availability(ios,introduced=13_0))); + +#if 0 ++ (CIContext *)contextWithMTLCommandQueue:(id)commandQueue + options:(nullable NSDictionary *)options +__attribute__((availability(ios,introduced=13_0))); +#endif + + + + + + + +// @property (nullable, nonatomic, readonly) CGColorSpaceRef workingColorSpace __attribute__((availability(ios,introduced=9_0))); + + +// @property (nonatomic, readonly) CIFormat workingFormat __attribute__((availability(ios,introduced=9_0))); + + + + + + +#if 0 +- (void)drawImage:(CIImage *)image + atPoint:(CGPoint)atPoint + fromRect:(CGRect)fromRect __attribute__((availability(ios,introduced=5_0,deprecated=6_0,message="" ))); +#endif + + + + +#if 0 +- (void)drawImage:(CIImage *)image + inRect:(CGRect)inRect + fromRect:(CGRect)fromRect; +#endif + + + + + + +#if 0 +- (nullable CGLayerRef)createCGLayerWithSize:(CGSize)size + info:(nullable CFDictionaryRef)info +__attribute__((cf_returns_retained)) __attribute__((availability(ios,unavailable))); +#endif + +#if 0 +- (void)render:(CIImage *)image + toBitmap:(void *)data + rowBytes:(ptrdiff_t)rowBytes + bounds:(CGRect)bounds + format:(CIFormat)format + colorSpace:(nullable CGColorSpaceRef)colorSpace; +#endif + +#if 0 +- (void)render:(CIImage *)image + toIOSurface:(IOSurfaceRef)surface + bounds:(CGRect)bounds + colorSpace:(nullable CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=5_0))); +#endif + +#if 0 +- (void)render:(CIImage *)image +toCVPixelBuffer:(CVPixelBufferRef)buffer __attribute__((availability(ios,introduced=5_0))); +#endif + +#if 0 +- (void)render:(CIImage *)image +toCVPixelBuffer:(CVPixelBufferRef)buffer + bounds:(CGRect)bounds + colorSpace:(nullable CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=5_0))); +#endif + + + + + + + + +#if 0 +- (void)render:(CIImage *)image + toMTLTexture:(id)texture + commandBuffer:(nullable id)commandBuffer + bounds:(CGRect)bounds + colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=9_0))); +#endif + +// - (void)reclaimResources __attribute__((availability(ios,unavailable))); + + + +// - (void)clearCaches __attribute__((availability(ios,introduced=10_0))); + + + +// - (CGSize)inputImageMaximumSize __attribute__((availability(ios,introduced=5_0))); + + + +// - (CGSize)outputImageMaximumSize __attribute__((availability(ios,introduced=5_0))); + +/* @end */ + + + +// @interface CIContext (createCGImage) + + + + + +#if 0 +- (nullable CGImageRef)createCGImage:(CIImage *)image + fromRect:(CGRect)fromRect +__attribute__((cf_returns_retained)); +#endif + + + + + + + + +#if 0 +- (nullable CGImageRef)createCGImage:(CIImage *)image + fromRect:(CGRect)fromRect + format:(CIFormat)format + colorSpace:(nullable CGColorSpaceRef)colorSpace +__attribute__((cf_returns_retained)); +#endif + +#if 0 +- (nullable CGImageRef)createCGImage:(CIImage *)image + fromRect:(CGRect)fromRect + format:(CIFormat)format + colorSpace:(nullable CGColorSpaceRef)colorSpace + deferred:(BOOL)deferred +__attribute__((cf_returns_retained)) __attribute__((availability(ios,introduced=10_0))); +#endif + + +/* @end */ + + + +// @interface CIContext (OfflineGPUSupport) + + + + +// +(unsigned int)offlineGPUCount __attribute__((availability(ios,unavailable))); +/* @end */ + + +typedef NSString * CIImageRepresentationOption __attribute__((swift_wrapper(enum))); + +// @interface CIContext (ImageRepresentation) + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationAVDepthData __attribute__((availability(ios,introduced=11_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationDepthImage __attribute__((availability(ios,introduced=11_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationDisparityImage __attribute__((availability(ios,introduced=11_0))); + + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationAVPortraitEffectsMatte __attribute__((availability(ios,introduced=12_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationPortraitEffectsMatteImage __attribute__((availability(ios,introduced=12_0))); + + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationAVSemanticSegmentationMattes __attribute__((availability(ios,introduced=13_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationSemanticSegmentationSkinMatteImage __attribute__((availability(ios,introduced=13_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationSemanticSegmentationHairMatteImage __attribute__((availability(ios,introduced=13_0))); + + +extern "C" __attribute__((visibility("default"))) CIImageRepresentationOption const kCIImageRepresentationSemanticSegmentationTeethMatteImage __attribute__((availability(ios,introduced=13_0))); + + + + + + +#if 0 +- (nullable NSData*) TIFFRepresentationOfImage:(CIImage*)image + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options __attribute__((availability(ios,introduced=10_0))); +#endif + + + + + + +#if 0 +- (nullable NSData*) JPEGRepresentationOfImage:(CIImage*)image + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options __attribute__((availability(ios,introduced=10_0))); +#endif + + + + + + + +#if 0 +- (nullable NSData*) HEIFRepresentationOfImage:(CIImage*)image + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options __attribute__((availability(ios,introduced=11_0))); +#endif + + + + + + +#if 0 +- (nullable NSData*) PNGRepresentationOfImage:(CIImage*)image + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options __attribute__((availability(ios,introduced=11_0))); +#endif + + + + + + +#if 0 +- (BOOL) writeTIFFRepresentationOfImage:(CIImage*)image + toURL:(NSURL*)url + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options + error:(NSError **)errorPtr __attribute__((availability(ios,introduced=10_0))); +#endif + + + + + + +#if 0 +- (BOOL) writePNGRepresentationOfImage:(CIImage*)image + toURL:(NSURL*)url + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options + error:(NSError **)errorPtr __attribute__((availability(ios,introduced=11_0))); +#endif + + + + + + +#if 0 +- (BOOL) writeJPEGRepresentationOfImage:(CIImage*)image + toURL:(NSURL*)url + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options + error:(NSError **)errorPtr __attribute__((availability(ios,introduced=10_0))); +#endif + + + + + + + +#if 0 +- (BOOL) writeHEIFRepresentationOfImage:(CIImage*)image + toURL:(NSURL*)url + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace + options:(NSDictionary*)options + error:(NSError **)errorPtr __attribute__((availability(ios,introduced=11_0))); +#endif + + + +/* @end */ + + +// @interface CIContext (CIDepthBlurEffect) +// - (nullable CIFilter *) depthBlurEffectFilterForImageURL:(NSURL *)url options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=12_0))); + + + + + + +// - (nullable CIFilter *) depthBlurEffectFilterForImageData:(NSData *)data options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=12_0))); +#if 0 +- (nullable CIFilter *) depthBlurEffectFilterForImage:(CIImage *)image + disparityImage:(CIImage *)disparityImage + portraitEffectsMatte:(nullable CIImage *)portraitEffectsMatte + orientation:(CGImagePropertyOrientation)orientation + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=12_0))); +#endif + + +#if 0 +- (nullable CIFilter *) depthBlurEffectFilterForImage:(CIImage *)image + disparityImage:(CIImage *)disparityImage + portraitEffectsMatte:(nullable CIImage *)portraitEffectsMatte + hairSemanticSegmentation:(nullable CIImage *)hairSemanticSegmentation + orientation:(CGImagePropertyOrientation)orientation + options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=13_0))); +#endif + + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class NSString; +#ifndef _REWRITER_typedef_NSString +#define _REWRITER_typedef_NSString +typedef struct objc_object NSString; +typedef struct {} _objc_exc_NSString; +#endif + +// @class CIFilter; +#ifndef _REWRITER_typedef_CIFilter +#define _REWRITER_typedef_CIFilter +typedef struct objc_object CIFilter; +typedef struct {} _objc_exc_CIFilter; +#endif + + + + +#pragma clang assume_nonnull begin + +// @protocol CIFilterConstructor +// - (nullable CIFilter *)filterWithName:(NSString *)name; +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeFilterName; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeFilterDisplayName; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeDescription __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeFilterAvailable_Mac __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeFilterAvailable_iOS __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeReferenceDocumentation __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeFilterCategories; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeClass; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeType; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeMin; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeMax; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeSliderMin; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeSliderMax; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeDefault; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeIdentity; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeName; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeDisplayName; + + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIUIParameterSet __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIUISetBasic __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIUISetIntermediate __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIUISetAdvanced __attribute__((availability(ios,introduced=9_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIUISetDevelopment __attribute__((availability(ios,introduced=9_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeTime; +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeScalar; +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeDistance; +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeAngle; +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeBoolean; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeInteger __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeCount __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypePosition; +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeOffset; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypePosition3; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeRectangle; + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeOpaqueColor __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeColor __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeGradient __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeImage __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIAttributeTypeTransform __attribute__((availability(ios,introduced=5_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryDistortionEffect; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryGeometryAdjustment; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryCompositeOperation; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryHalftoneEffect; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryColorAdjustment; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryColorEffect; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryTransition; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryTileEffect; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryGenerator; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryReduction __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryGradient; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryStylize; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategorySharpen; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryBlur; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryVideo; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryStillImage; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryInterlaced; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryNonSquarePixels; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryHighDynamicRange; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryBuiltIn; +extern "C" __attribute__((visibility("default"))) NSString * const kCICategoryFilterGenerator __attribute__((availability(ios,introduced=9_0))); + + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIApplyOptionExtent __attribute__((availability(ios,unavailable))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIApplyOptionDefinition __attribute__((availability(ios,unavailable))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIApplyOptionUserInfo __attribute__((availability(ios,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIApplyOptionColorSpace __attribute__((availability(ios,unavailable))); + + + + +extern "C" __attribute__((visibility("default"))) NSString * const kCIOutputImageKey __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputBackgroundImageKey __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputImageKey __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputDepthImageKey __attribute__((availability(ios,introduced=11_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputDisparityImageKey __attribute__((availability(ios,introduced=11_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputAmountKey __attribute__((availability(ios,introduced=12_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputTimeKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputTransformKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputScaleKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputAspectRatioKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputCenterKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputRadiusKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputAngleKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputRefractionKey __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputWidthKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputSharpnessKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputIntensityKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputEVKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputSaturationKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputColorKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputBrightnessKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputContrastKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputBiasKey __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputWeightsKey __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputGradientImageKey __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputMaskImageKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputMatteImageKey __attribute__((availability(ios,introduced=12_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputShadingImageKey __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputTargetImageKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputExtentKey __attribute__((availability(ios,introduced=7_0))); +extern "C" __attribute__((visibility("default"))) NSString * const kCIInputVersionKey __attribute__((availability(ios,introduced=6_0))); + + +// @class CIKernel; +#ifndef _REWRITER_typedef_CIKernel +#define _REWRITER_typedef_CIKernel +typedef struct objc_object CIKernel; +typedef struct {} _objc_exc_CIKernel; +#endif + +#ifndef _REWRITER_typedef_CIImage +#define _REWRITER_typedef_CIImage +typedef struct objc_object CIImage; +typedef struct {} _objc_exc_CIImage; +#endif + +// @protocol CIFilterConstructor; + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIFilter +#define _REWRITER_typedef_CIFilter +typedef struct objc_object CIFilter; +typedef struct {} _objc_exc_CIFilter; +#endif + +struct CIFilter_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv[8]; +}; + + +// @property (readonly, nonatomic, nullable) CIImage *outputImage __attribute__((availability(ios,introduced=5_0))); + + + + + + +// @property (nonatomic, copy) NSString *name; +// - (NSString *)name __attribute__((availability(ios,introduced=5_0))); +// - (void)setName:(NSString *)aString __attribute__((availability(ios,introduced=10_0))); + + + + +// @property (getter=isEnabled) BOOL enabled __attribute__((availability(ios,unavailable))); + + + +// @property (nonatomic, readonly) NSArray *inputKeys; + + +// @property (nonatomic, readonly) NSArray *outputKeys; + + +// - (void)setDefaults; + + +// @property (nonatomic, readonly) NSDictionary *attributes; +#if 0 +- (nullable CIImage *)apply:(CIKernel *)k + arguments:(nullable NSArray *)args + options:(nullable NSDictionary *)dict __attribute__((availability(ios,unavailable))); +#endif + + + +// - (nullable CIImage *)apply:(CIKernel *)k, ... __attribute__((sentinel(0,1))) __attribute__((availability(ios,unavailable))) __attribute__((availability(swift, unavailable, message=""))); + +/* @end */ + + + +// @protocol CIFilter + + // @property (readonly, nonatomic, nullable) CIImage *outputImage; + + /* @optional */ + + + + // + (nullable NSDictionary*) customAttributes; + +/* @end */ + + + + + +// @interface CIFilter (CIFilterRegistry) + + + + +// + (nullable CIFilter *) filterWithName:(NSString *) name; + + + + + +#if 0 ++ (nullable CIFilter *)filterWithName:(NSString *)name + keysAndValues:key0, ... __attribute__((sentinel(0,1))) __attribute__((availability(swift, unavailable, message=""))); +#endif + + + + + + +#if 0 ++ (nullable CIFilter *)filterWithName:(NSString *)name + withInputParameters:(nullable NSDictionary *)params __attribute__((availability(ios,introduced=8_0))); +#endif + + + +// + (NSArray *)filterNamesInCategory:(nullable NSString *)category; + + +// + (NSArray *)filterNamesInCategories:(nullable NSArray *)categories; +#if 0 ++ (void)registerFilterName:(NSString *)name + constructor:(id)anObject + classAttributes:(NSDictionary *)attributes __attribute__((availability(ios,introduced=9_0))); +#endif + + + +// + (nullable NSString *)localizedNameForFilterName:(NSString *)filterName __attribute__((availability(ios,introduced=9_0))); + + +// + (NSString *)localizedNameForCategory:(NSString *)category __attribute__((availability(ios,introduced=9_0))); + + +// + (nullable NSString *)localizedDescriptionForFilterName:(NSString *)filterName __attribute__((availability(ios,introduced=9_0))); + + + + +// + (nullable NSURL *)localizedReferenceDocumentationForFilterName:(NSString *)filterName __attribute__((availability(ios,introduced=9_0))); + +/* @end */ + + + + +// @interface CIFilter (CIFilterXMPSerialization) +#if 0 ++ (nullable NSData*)serializedXMPFromFilters:(NSArray *)filters + inputImageExtent:(CGRect)extent + __attribute__((availability(ios,introduced=6_0))); +#endif + + + + +#if 0 ++ (NSArray *)filterArrayFromSerializedXMP:(NSData *)xmpData + inputImageExtent:(CGRect)extent + error:(NSError **)outError + __attribute__((availability(ios,introduced=6_0))); +#endif + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +typedef CGRect (*CIKernelROICallback)(int index, CGRect destRect); + + +// @class CIImage; +#ifndef _REWRITER_typedef_CIImage +#define _REWRITER_typedef_CIImage +typedef struct objc_object CIImage; +typedef struct {} _objc_exc_CIImage; +#endif + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=8_0))) + +#ifndef _REWRITER_typedef_CIKernel +#define _REWRITER_typedef_CIKernel +typedef struct objc_object CIKernel; +typedef struct {} _objc_exc_CIKernel; +#endif + +struct CIKernel_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + +// + (nullable NSArray *)kernelsWithString:(NSString *)string __attribute__((availability(ios,introduced=8_0,deprecated=12_0,message="" "Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); + + + + + + +// + (nullable instancetype)kernelWithString:(NSString *)string __attribute__((availability(ios,introduced=8_0,deprecated=12_0,message="" "Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); + + + + + + + +#if 0 ++ (nullable instancetype)kernelWithFunctionName:(NSString *)name + fromMetalLibraryData:(NSData *)data + error:(NSError **)error __attribute__((availability(ios,introduced=11_0))); +#endif + + +#if 0 ++ (nullable instancetype)kernelWithFunctionName:(NSString *)name + fromMetalLibraryData:(NSData *)data + outputPixelFormat:(CIFormat)format + error:(NSError **)error __attribute__((availability(ios,introduced=11_0))); +#endif + + + +// @property (atomic, readonly) NSString *name __attribute__((availability(ios,introduced=8_0))); +// - (void)setROISelector:(SEL)method __attribute__((availability(ios,introduced=9_0))); +#if 0 +- (nullable CIImage *)applyWithExtent:(CGRect)extent + roiCallback:(CIKernelROICallback)callback + arguments:(nullable NSArray *)args __attribute__((availability(ios,introduced=8_0))); +#endif + +/* @end */ + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=8_0))) + +#ifndef _REWRITER_typedef_CIColorKernel +#define _REWRITER_typedef_CIColorKernel +typedef struct objc_object CIColorKernel; +typedef struct {} _objc_exc_CIColorKernel; +#endif + +struct CIColorKernel_IMPL { + struct CIKernel_IMPL CIKernel_IVARS; +}; + + + + + + + +// + (nullable instancetype)kernelWithString:(NSString *)string __attribute__((availability(ios,introduced=8_0,deprecated=12_0,message="" "Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#if 0 +- (nullable CIImage *)applyWithExtent:(CGRect)extent + arguments:(nullable NSArray *)args; +#endif + +/* @end */ + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=8_0))) + +#ifndef _REWRITER_typedef_CIWarpKernel +#define _REWRITER_typedef_CIWarpKernel +typedef struct objc_object CIWarpKernel; +typedef struct {} _objc_exc_CIWarpKernel; +#endif + +struct CIWarpKernel_IMPL { + struct CIKernel_IMPL CIKernel_IVARS; +}; + + + + + + + +// + (nullable instancetype)kernelWithString:(NSString *)string __attribute__((availability(ios,introduced=8_0,deprecated=12_0,message="" "Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#if 0 +- (nullable CIImage *)applyWithExtent:(CGRect)extent + roiCallback:(CIKernelROICallback)callback + inputImage:(CIImage*)image + arguments:(nullable NSArray *)args; +#endif + +/* @end */ + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIBlendKernel +#define _REWRITER_typedef_CIBlendKernel +typedef struct objc_object CIBlendKernel; +typedef struct {} _objc_exc_CIBlendKernel; +#endif + +struct CIBlendKernel_IMPL { + struct CIColorKernel_IMPL CIColorKernel_IVARS; +}; + + + +// + (nullable instancetype)kernelWithString:(NSString *)string __attribute__((availability(ios,introduced=8_0,deprecated=12_0,message="" "Core Image Kernel Language API deprecated. (Define CI_SILENCE_GL_DEPRECATION to silence these warnings)"))); +#if 0 +- (nullable CIImage *)applyWithForeground:(CIImage*)foreground + background:(CIImage*)background; +#endif + +#if 0 +- (nullable CIImage *)applyWithForeground:(CIImage*)foreground + background:(CIImage*)background + colorSpace:(CGColorSpaceRef)colorSpace __attribute__((availability(ios,introduced=13_0))); +#endif + + +/* @end */ + + +// @interface CIBlendKernel (BuiltIn) + + + + + +@property (class, strong, readonly) CIBlendKernel *componentAdd; +@property (class, strong, readonly) CIBlendKernel *componentMultiply; +@property (class, strong, readonly) CIBlendKernel *componentMin; +@property (class, strong, readonly) CIBlendKernel *componentMax; + + + + +@property (class, strong, readonly) CIBlendKernel *clear; +@property (class, strong, readonly) CIBlendKernel *source; +@property (class, strong, readonly) CIBlendKernel *destination; +@property (class, strong, readonly) CIBlendKernel *sourceOver; +@property (class, strong, readonly) CIBlendKernel *destinationOver; +@property (class, strong, readonly) CIBlendKernel *sourceIn; +@property (class, strong, readonly) CIBlendKernel *destinationIn; +@property (class, strong, readonly) CIBlendKernel *sourceOut; +@property (class, strong, readonly) CIBlendKernel *destinationOut; +@property (class, strong, readonly) CIBlendKernel *sourceAtop; +@property (class, strong, readonly) CIBlendKernel *destinationAtop; +@property (class, strong, readonly) CIBlendKernel *exclusiveOr; + + + + + + +@property (class, strong, readonly) CIBlendKernel *multiply; +@property (class, strong, readonly) CIBlendKernel *screen; +@property (class, strong, readonly) CIBlendKernel *overlay; +@property (class, strong, readonly) CIBlendKernel *darken; +@property (class, strong, readonly) CIBlendKernel *lighten; +@property (class, strong, readonly) CIBlendKernel *colorDodge; +@property (class, strong, readonly) CIBlendKernel *colorBurn; +@property (class, strong, readonly) CIBlendKernel *hardLight; +@property (class, strong, readonly) CIBlendKernel *softLight; +@property (class, strong, readonly) CIBlendKernel *difference; +@property (class, strong, readonly) CIBlendKernel *exclusion; + + +@property (class, strong, readonly) CIBlendKernel *hue; +@property (class, strong, readonly) CIBlendKernel *saturation; +@property (class, strong, readonly) CIBlendKernel *color; +@property (class, strong, readonly) CIBlendKernel *luminosity; + + +@property (class, strong, readonly) CIBlendKernel *subtract; +@property (class, strong, readonly) CIBlendKernel *divide; +@property (class, strong, readonly) CIBlendKernel *linearBurn; +@property (class, strong, readonly) CIBlendKernel *linearDodge; +@property (class, strong, readonly) CIBlendKernel *vividLight; +@property (class, strong, readonly) CIBlendKernel *linearLight; +@property (class, strong, readonly) CIBlendKernel *pinLight; +@property (class, strong, readonly) CIBlendKernel *hardMix; +@property (class, strong, readonly) CIBlendKernel *darkerColor; +@property (class, strong, readonly) CIBlendKernel *lighterColor; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class CIImage; +#ifndef _REWRITER_typedef_CIImage +#define _REWRITER_typedef_CIImage +typedef struct objc_object CIImage; +typedef struct {} _objc_exc_CIImage; +#endif + +// @class CIContext; +#ifndef _REWRITER_typedef_CIContext +#define _REWRITER_typedef_CIContext +typedef struct objc_object CIContext; +typedef struct {} _objc_exc_CIContext; +#endif + +// @class CIFeature; +#ifndef _REWRITER_typedef_CIFeature +#define _REWRITER_typedef_CIFeature +typedef struct objc_object CIFeature; +typedef struct {} _objc_exc_CIFeature; +#endif + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIDetector +#define _REWRITER_typedef_CIDetector +typedef struct objc_object CIDetector; +typedef struct {} _objc_exc_CIDetector; +#endif + +struct CIDetector_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +#if 0 ++ (nullable CIDetector *)detectorOfType:(NSString*)type + context:(nullable CIContext *)context + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=5_0))); +#endif + + + + +#if 0 +- (NSArray *)featuresInImage:(CIImage *)image + __attribute__((availability(ios,introduced=5_0))); +#endif + + + + + +#if 0 +- (NSArray *)featuresInImage:(CIImage *)image + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=5_0))); +#endif + + +/* @end */ + + + + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorTypeFace __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorTypeRectangle __attribute__((availability(ios,introduced=8_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorTypeQRCode __attribute__((availability(ios,introduced=8_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorTypeText __attribute__((availability(ios,introduced=9_0))); + + + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorAccuracy __attribute__((availability(ios,introduced=5_0))); + + + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorAccuracyLow __attribute__((availability(ios,introduced=5_0))); +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorAccuracyHigh __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorTracking __attribute__((availability(ios,introduced=6_0))); +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorMinFeatureSize __attribute__((availability(ios,introduced=6_0))); + + + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorMaxFeatureCount __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorNumberOfAngles __attribute__((availability(ios,introduced=9_0))); + + + + + + + +extern "C" __attribute__((visibility("default"))) NSString *const CIDetectorImageOrientation __attribute__((availability(ios,introduced=5_0))); + + +extern "C" __attribute__((visibility("default"))) NSString *const CIDetectorEyeBlink __attribute__((availability(ios,introduced=7_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString *const CIDetectorSmile __attribute__((availability(ios,introduced=7_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorFocalLength __attribute__((availability(ios,introduced=8_0))); + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorAspectRatio __attribute__((availability(ios,introduced=8_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIDetectorReturnSubFeatures __attribute__((availability(ios,introduced=9.0))); +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIFeature +#define _REWRITER_typedef_CIFeature +typedef struct objc_object CIFeature; +typedef struct {} _objc_exc_CIFeature; +#endif + +struct CIFeature_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (readonly, retain) NSString *type; + +// @property (readonly, assign) CGRect bounds; + +/* @end */ + + + +extern "C" __attribute__((visibility("default"))) NSString* const CIFeatureTypeFace; + +extern "C" __attribute__((visibility("default"))) NSString* const CIFeatureTypeRectangle; + +extern "C" __attribute__((visibility("default"))) NSString* const CIFeatureTypeQRCode; + +extern "C" __attribute__((visibility("default"))) NSString* const CIFeatureTypeText; + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=5_0))) + +#ifndef _REWRITER_typedef_CIFaceFeature +#define _REWRITER_typedef_CIFaceFeature +typedef struct objc_object CIFaceFeature; +typedef struct {} _objc_exc_CIFaceFeature; +#endif + +struct CIFaceFeature_IMPL { + struct CIFeature_IMPL CIFeature_IVARS; + CGRect bounds; + BOOL hasLeftEyePosition; + CGPoint leftEyePosition; + BOOL hasRightEyePosition; + CGPoint rightEyePosition; + BOOL hasMouthPosition; + CGPoint mouthPosition; + BOOL hasTrackingID; + int trackingID; + BOOL hasTrackingFrameCount; + int trackingFrameCount; + BOOL hasFaceAngle; + float faceAngle; + BOOL hasSmile; + BOOL leftEyeClosed; + BOOL rightEyeClosed; +}; + + + + + + + + +// @property (readonly, assign) CGRect bounds; +// @property (readonly, assign) BOOL hasLeftEyePosition; +// @property (readonly, assign) CGPoint leftEyePosition; +// @property (readonly, assign) BOOL hasRightEyePosition; +// @property (readonly, assign) CGPoint rightEyePosition; +// @property (readonly, assign) BOOL hasMouthPosition; +// @property (readonly, assign) CGPoint mouthPosition; + +// @property (readonly, assign) BOOL hasTrackingID; +// @property (readonly, assign) int trackingID; +// @property (readonly, assign) BOOL hasTrackingFrameCount; +// @property (readonly, assign) int trackingFrameCount; + +// @property (readonly, assign) BOOL hasFaceAngle; +// @property (readonly, assign) float faceAngle; + +// @property (readonly, assign) BOOL hasSmile; +// @property (readonly, assign) BOOL leftEyeClosed; +// @property (readonly, assign) BOOL rightEyeClosed; + +/* @end */ + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=8_0))) + +#ifndef _REWRITER_typedef_CIRectangleFeature +#define _REWRITER_typedef_CIRectangleFeature +typedef struct objc_object CIRectangleFeature; +typedef struct {} _objc_exc_CIRectangleFeature; +#endif + +struct CIRectangleFeature_IMPL { + struct CIFeature_IMPL CIFeature_IVARS; + CGRect bounds; + CGPoint topLeft; + CGPoint topRight; + CGPoint bottomLeft; + CGPoint bottomRight; +}; + + +// @property (readonly) CGRect bounds; +// @property (readonly) CGPoint topLeft; +// @property (readonly) CGPoint topRight; +// @property (readonly) CGPoint bottomLeft; +// @property (readonly) CGPoint bottomRight; + +/* @end */ + + + + + +// @class CIQRCodeDescriptor; +#ifndef _REWRITER_typedef_CIQRCodeDescriptor +#define _REWRITER_typedef_CIQRCodeDescriptor +typedef struct objc_object CIQRCodeDescriptor; +typedef struct {} _objc_exc_CIQRCodeDescriptor; +#endif + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=8_0))) + +#ifndef _REWRITER_typedef_CIQRCodeFeature +#define _REWRITER_typedef_CIQRCodeFeature +typedef struct objc_object CIQRCodeFeature; +typedef struct {} _objc_exc_CIQRCodeFeature; +#endif + +struct CIQRCodeFeature_IMPL { + struct CIFeature_IMPL CIFeature_IVARS; + CGRect bounds; + CGPoint topLeft; + CGPoint topRight; + CGPoint bottomLeft; + CGPoint bottomRight; + CIQRCodeDescriptor *symbolDescriptor; +}; + + +// @property (readonly) CGRect bounds; +// @property (readonly) CGPoint topLeft; +// @property (readonly) CGPoint topRight; +// @property (readonly) CGPoint bottomLeft; +// @property (readonly) CGPoint bottomRight; + +// @property (nullable, readonly) NSString* messageString; + +// @property (nullable, readonly) CIQRCodeDescriptor *symbolDescriptor __attribute__((availability(ios,introduced=11_0))); + +/* @end */ + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0))) + +#ifndef _REWRITER_typedef_CITextFeature +#define _REWRITER_typedef_CITextFeature +typedef struct objc_object CITextFeature; +typedef struct {} _objc_exc_CITextFeature; +#endif + +struct CITextFeature_IMPL { + struct CIFeature_IMPL CIFeature_IVARS; +}; + + +// @property (readonly) CGRect bounds; +// @property (readonly) CGPoint topLeft; +// @property (readonly) CGPoint topRight; +// @property (readonly) CGPoint bottomLeft; +// @property (readonly) CGPoint bottomRight; +// @property (nullable, readonly) NSArray *subFeatures; + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @interface CIImage (CIImageProvider) + + + + + + +#if 0 ++ (CIImage *)imageWithImageProvider:(id)p + size:(size_t)width + :(size_t)height + format:(CIFormat)f + colorSpace:(nullable CGColorSpaceRef)cs + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=9_0))); +#endif + + +#if 0 +- (instancetype)initWithImageProvider:(id)p + size:(size_t)width + :(size_t)height + format:(CIFormat)f + colorSpace:(nullable CGColorSpaceRef)cs + options:(nullable NSDictionary *)options + __attribute__((availability(ios,introduced=9_0))); +#endif + + +/* @end */ + + + +// @interface NSObject (CIImageProvider) +#if 0 +- (void)provideImageData:(void *)data + bytesPerRow:(size_t)rowbytes + origin:(size_t)x + :(size_t)y + size:(size_t)width + :(size_t)height + userInfo:(nullable id)info; +#endif + + +/* @end */ + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageProviderTileSize __attribute__((availability(ios,introduced=9_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIImageOption const kCIImageProviderUserInfo __attribute__((availability(ios,introduced=9_0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol MTLTexture, MTLCommandBuffer; + +// @protocol CIImageProcessorInput; +// @protocol CIImageProcessorOutput; + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=10_0))) + +#ifndef _REWRITER_typedef_CIImageProcessorKernel +#define _REWRITER_typedef_CIImageProcessorKernel +typedef struct objc_object CIImageProcessorKernel; +typedef struct {} _objc_exc_CIImageProcessorKernel; +#endif + +struct CIImageProcessorKernel_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +#if 0 ++ (BOOL)processWithInputs:(nullable NSArray> *)inputs + arguments:(nullable NSDictionary *)arguments + output:(id )output + error:(NSError **)error; +#endif + +#if 0 ++ (CGRect)roiForInput:(int)input + arguments:(nullable NSDictionary *)arguments + outputRect:(CGRect)outputRect; +#endif + +// + (CIFormat)formatForInputAtIndex:(int)input; +@property (class, readonly) CIFormat outputFormat; +@property (class, readonly) bool outputIsOpaque __attribute__((availability(ios,introduced=11_0))); +@property (class, readonly) bool synchronizeInputs; +#if 0 ++ (nullable CIImage *)applyWithExtent:(CGRect)extent + inputs:(nullable NSArray *)inputs + arguments:(nullable NSDictionary *)args + error:(NSError **)error; +#endif + +/* @end */ + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=10_0))) +// @protocol CIImageProcessorInput + + + +// @property (nonatomic, readonly) CGRect region; + + + +// @property (nonatomic, readonly) size_t bytesPerRow; + + +// @property (nonatomic, readonly) CIFormat format; + + + +// @property (readonly, nonatomic) const void *baseAddress __attribute__((objc_returns_inner_pointer)); + + + + +// @property (nonatomic, readonly) IOSurfaceRef surface; + + + + +// @property (nonatomic, readonly, nullable) CVPixelBufferRef pixelBuffer; + + + + +// @property (nonatomic, readonly, nullable) id metalTexture; + +/* @end */ + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=10_0))) +// @protocol CIImageProcessorOutput + + +// @property (nonatomic, readonly) CGRect region; + + + +// @property (nonatomic, readonly) size_t bytesPerRow; + + +// @property (nonatomic, readonly) CIFormat format; + + +// @property (readonly, nonatomic) void *baseAddress __attribute__((objc_returns_inner_pointer)); + + + +// @property (nonatomic, readonly) IOSurfaceRef surface; + + + +// @property (nonatomic, readonly, nullable) CVPixelBufferRef pixelBuffer; + + + +// @property (nonatomic, readonly, nullable) id metalTexture; + + +// @property (nonatomic, readonly, nullable) id metalCommandBuffer; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0))) + +#ifndef _REWRITER_typedef_CIImageAccumulator +#define _REWRITER_typedef_CIImageAccumulator +typedef struct objc_object CIImageAccumulator; +typedef struct {} _objc_exc_CIImageAccumulator; +#endif + +struct CIImageAccumulator_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_state; +}; + + + + + + + + +#if 0 ++ (nullable instancetype)imageAccumulatorWithExtent:(CGRect)extent + format:(CIFormat)format; +#endif + + +#if 0 ++ (nullable instancetype)imageAccumulatorWithExtent:(CGRect)extent + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace +__attribute__((availability(ios,introduced=9_0))); +#endif + + +#if 0 +- (nullable instancetype)initWithExtent:(CGRect)extent + format:(CIFormat)format; +#endif + + +#if 0 +- (nullable instancetype)initWithExtent:(CGRect)extent + format:(CIFormat)format + colorSpace:(CGColorSpaceRef)colorSpace +__attribute__((availability(ios,introduced=9_0))); +#endif + + + +// @property (readonly) CGRect extent; + + +// @property (readonly) CIFormat format; + + + + +// - (CIImage *)image; + + +// - (void)setImage:(CIImage *)image; + + + + +// - (void)setImage:(CIImage *)image dirtyRect:(CGRect)dirtyRect; + + +// - (void)clear; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0))) + +#ifndef _REWRITER_typedef_CIFilterShape +#define _REWRITER_typedef_CIFilterShape +typedef struct objc_object CIFilterShape; +typedef struct {} _objc_exc_CIFilterShape; +#endif + +struct CIFilterShape_IMPL { + struct NSObject_IMPL NSObject_IVARS; + uint32_t _pad; + void *_priv; +}; + + + +// + (instancetype)shapeWithRect:(CGRect)r; + + + +// - (instancetype)initWithRect:(CGRect)r; +// - (CIFilterShape *)transformBy:(CGAffineTransform)m interior:(BOOL)flag; + + +// - (CIFilterShape *)insetByX:(int)dx Y:(int)dy; + + +// - (CIFilterShape *)unionWith:(CIFilterShape *)s2; + + + +// - (CIFilterShape *)unionWithRect:(CGRect)r; + + +// - (CIFilterShape *)intersectWith:(CIFilterShape *)s2; + + + +// - (CIFilterShape *)intersectWithRect:(CGRect)r; + + + +// @property (readonly) CGRect extent; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class CIFilterShape; +#ifndef _REWRITER_typedef_CIFilterShape +#define _REWRITER_typedef_CIFilterShape +typedef struct objc_object CIFilterShape; +typedef struct {} _objc_exc_CIFilterShape; +#endif + +#ifndef _REWRITER_typedef_CIImage +#define _REWRITER_typedef_CIImage +typedef struct objc_object CIImage; +typedef struct {} _objc_exc_CIImage; +#endif + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0))) + +#ifndef _REWRITER_typedef_CISampler +#define _REWRITER_typedef_CISampler +typedef struct objc_object CISampler; +typedef struct {} _objc_exc_CISampler; +#endif + +struct CISampler_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + + +// + (instancetype)samplerWithImage:(CIImage *)im; +// + (instancetype)samplerWithImage:(CIImage *)im keysAndValues:key0, ... __attribute__((sentinel(0,1))); +// + (instancetype)samplerWithImage:(CIImage *)im options:(nullable NSDictionary *)dict; + + + +// - (instancetype)initWithImage:(CIImage *)im; +// - (instancetype)initWithImage:(CIImage *)im keysAndValues:key0, ...; +// - (instancetype)initWithImage:(CIImage *)im options:(nullable NSDictionary *)dict __attribute__((objc_designated_initializer)); + + + + + + +// @property (readonly) CIFilterShape * definition; + + + + +// @property (readonly) CGRect extent; + +/* @end */ + + + + + +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerAffineMatrix __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerWrapMode __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerFilterMode __attribute__((availability(ios,introduced=9_0))); + +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerWrapBlack __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerWrapClamp __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerFilterNearest __attribute__((availability(ios,introduced=9_0))); +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerFilterLinear __attribute__((availability(ios,introduced=9_0))); + + + + +extern "C" __attribute__((visibility("default"))) NSString *const kCISamplerColorSpace __attribute__((availability(ios,introduced=9_0))); +#pragma clang assume_nonnull end +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + +// @class NSDictionary; +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +// @class NSData; +#ifndef _REWRITER_typedef_NSData +#define _REWRITER_typedef_NSData +typedef struct objc_object NSData; +typedef struct {} _objc_exc_NSData; +#endif + + +typedef NSString * CIRAWFilterOption __attribute__((swift_wrapper(enum))); + + + +// @interface CIFilter (CIRAWFilter) + + +// + (CIFilter *)filterWithImageURL:(NSURL *)url options:(NSDictionary *)options __attribute__((availability(ios,introduced=10_0))); + + + + +// + (CIFilter *)filterWithImageData:(NSData *)data options:(NSDictionary *)options __attribute__((availability(ios,introduced=10_0))); + + + + + + +// + (CIFilter *)filterWithCVPixelBuffer:(CVPixelBufferRef)pixelBuffer properties:(NSDictionary *)properties options:(NSDictionary *)options __attribute__((availability(ios,introduced=10_0))); + + +// + (NSArray *) supportedRawCameraModels __attribute__((availability(ios,introduced=13_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputAllowDraftModeKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputDecoderVersionKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCISupportedDecoderVersionsKey __attribute__((availability(ios,introduced=10_0))); +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputBaselineExposureKey __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputBoostKey __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputBoostShadowAmountKey __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputDisableGamutMapKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNeutralChromaticityXKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNeutralChromaticityYKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNeutralTemperatureKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNeutralTintKey __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNeutralLocationKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputScaleFactorKey __attribute__((availability(ios,introduced=10_0))); + + + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputIgnoreImageOrientationKey __attribute__((availability(ios,introduced=10_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputImageOrientationKey __attribute__((availability(ios,introduced=10_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputEnableSharpeningKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputEnableChromaticNoiseTrackingKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNoiseReductionAmountKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputMoireAmountKey __attribute__((availability(ios,introduced=11_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputEnableVendorLensCorrectionKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputLuminanceNoiseReductionAmountKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputColorNoiseReductionAmountKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNoiseReductionSharpnessAmountKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNoiseReductionContrastAmountKey __attribute__((availability(ios,introduced=10_0))); + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputNoiseReductionDetailAmountKey __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) NSString *const kCIInputEnableEDRModeKey __attribute__((availability(ios,introduced=12_0))); + + + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIInputLinearSpaceFilter __attribute__((availability(ios,introduced=10_0))); + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIOutputNativeSizeKey __attribute__((availability(ios,introduced=10_0))); + + + + +extern "C" __attribute__((visibility("default"))) CIRAWFilterOption const kCIActiveKeys __attribute__((availability(ios,introduced=10_0))); + +/* @end */ + +#pragma clang assume_nonnull begin + + + + + +typedef NSString *IOSurfacePropertyKey __attribute__((swift_wrapper(enum))); + + + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyAllocSize __attribute__((availability(ios,introduced=12.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyWidth __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyHeight __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyBytesPerRow __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyBytesPerElement __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyElementWidth __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyElementHeight __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyOffset __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneInfo __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneWidth __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneHeight __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneBytesPerRow __attribute__((availability(ios,introduced=10.0))); + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneOffset __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneSize __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneBase __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneBytesPerElement __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneElementWidth __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPlaneElementHeight __attribute__((availability(ios,introduced=10.0))); + + + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyCacheMode __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPixelFormat __attribute__((availability(ios,introduced=10.0))); + + +extern IOSurfacePropertyKey IOSurfacePropertyKeyPixelSizeCastingAllowed __attribute__((availability(ios,introduced=10.0))); + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=10_0))) + +#ifndef _REWRITER_typedef_IOSurface +#define _REWRITER_typedef_IOSurface +typedef struct objc_object IOSurface; +typedef struct {} _objc_exc_IOSurface; +#endif + +struct IOSurface_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_impl; +}; + + + +// - (nullable instancetype)initWithProperties:(NSDictionary *)properties; +// - (kern_return_t)lockWithOptions:(IOSurfaceLockOptions)options seed:(nullable uint32_t *)seed; +// - (kern_return_t)unlockWithOptions:(IOSurfaceLockOptions)options seed:(nullable uint32_t *)seed; + + +// @property (readonly) NSInteger allocationSize; + +// @property (readonly) NSInteger width; +// @property (readonly) NSInteger height; +// @property (readonly) void *baseAddress __attribute__((objc_returns_inner_pointer)); +// @property (readonly) OSType pixelFormat; + +// @property (readonly) NSInteger bytesPerRow; +// @property (readonly) NSInteger bytesPerElement; +// @property (readonly) NSInteger elementWidth; +// @property (readonly) NSInteger elementHeight; + + + +// @property (readonly) uint32_t seed; + + +// @property (readonly) NSUInteger planeCount; + + + + +// - (NSInteger)widthOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (NSInteger)heightOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (NSInteger)bytesPerRowOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (NSInteger)bytesPerElementOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (NSInteger)elementWidthOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (NSInteger)elementHeightOfPlaneAtIndex:(NSUInteger)planeIndex; +// - (void *)baseAddressOfPlaneAtIndex:(NSUInteger)planeIndex __attribute__((objc_returns_inner_pointer)); + + + + +// - (void)setAttachment:(id)anObject forKey:(NSString *)key; +// - (nullable id)attachmentForKey:(NSString *)key; +// - (void)removeAttachmentForKey:(NSString *)key; +// - (void)setAllAttachments:(NSDictionary *)dict; +// - (nullable NSDictionary *)allAttachments; +// - (void)removeAllAttachments; +// @property (readonly, getter = isInUse) BOOL inUse; +// - (void)incrementUseCount; +// - (void)decrementUseCount; + + + + +// @property (readonly ) int32_t localUseCount; + + + + +// @property (readonly) BOOL allowsPixelSizeCasting; + + +#if 0 +- (kern_return_t)setPurgeable:(IOSurfacePurgeabilityState)newState oldState:(IOSurfacePurgeabilityState * _Nullable)oldState + __attribute__((availability(ios,introduced=11.0))); +#endif + + +/* @end */ + + + +extern IOSurfacePropertyKey IOSurfacePropertyAllocSizeKey __attribute__((availability(ios,introduced=10.0,deprecated=12.0))); +#pragma clang assume_nonnull end + + + +// @protocol MTLTexture, MTLCommandBuffer; + +#pragma clang assume_nonnull begin + + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIRenderDestination +#define _REWRITER_typedef_CIRenderDestination +typedef struct objc_object CIRenderDestination; +typedef struct {} _objc_exc_CIRenderDestination; +#endif + +struct CIRenderDestination_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + +// - (instancetype) initWithPixelBuffer:(CVPixelBufferRef)pixelBuffer; +// - (instancetype) initWithIOSurface:(IOSurface*)surface; +#if 0 +- (instancetype) initWithMTLTexture:(id)texture + commandBuffer:(nullable id)commandBuffer; +#endif + +#if 0 +- (instancetype) initWithWidth:(NSUInteger)width + height:(NSUInteger)height + pixelFormat:(MTLPixelFormat)pixelFormat + commandBuffer:(nullable id)commandBuffer + mtlTextureProvider:(nullable id (^)(void))block; +#endif + +#if 0 +- (instancetype) initWithGLTexture:(unsigned int)texture + target:(unsigned int)target + width:(NSUInteger)width + height:(NSUInteger)height; +#endif + +#if 0 +- (instancetype) initWithBitmapData:(void *)data + width:(NSUInteger)width + height:(NSUInteger)height + bytesPerRow:(NSUInteger)bytesPerRow + format:(CIFormat)format; +#endif + + + + + +// @property (readonly) NSUInteger width; +// @property (readonly) NSUInteger height; + + +typedef NSUInteger CIRenderDestinationAlphaMode; enum { + CIRenderDestinationAlphaNone = 0, + CIRenderDestinationAlphaPremultiplied = 1, + CIRenderDestinationAlphaUnpremultiplied = 2 +}; + + + + +// @property CIRenderDestinationAlphaMode alphaMode; +// @property (getter=isFlipped) BOOL flipped; + + + +// @property (getter=isDithered) BOOL dithered; + + + + +// @property (getter=isClamped) BOOL clamped; + + + + + + +// @property (nullable, nonatomic) CGColorSpaceRef colorSpace; + + + +// @property (nullable, nonatomic, retain) CIBlendKernel* blendKernel; + + + + +// @property BOOL blendsInDestinationColorSpace; + +/* @end */ + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIRenderInfo +#define _REWRITER_typedef_CIRenderInfo +typedef struct objc_object CIRenderInfo; +typedef struct {} _objc_exc_CIRenderInfo; +#endif + +struct CIRenderInfo_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + + +// @property (readonly) NSTimeInterval kernelExecutionTime; + + + + +// @property (readonly) NSInteger passCount; + + +// @property (readonly) NSInteger pixelsProcessed; + +/* @end */ + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIRenderTask +#define _REWRITER_typedef_CIRenderTask +typedef struct objc_object CIRenderTask; +typedef struct {} _objc_exc_CIRenderTask; +#endif + +struct CIRenderTask_IMPL { + struct NSObject_IMPL NSObject_IVARS; + void *_priv; +}; + + +// - (nullable CIRenderInfo*) waitUntilCompletedAndReturnError:(NSError**)error; + +/* @end */ + + + +// @interface CIContext (CIRenderDestination) +#if 0 +- (nullable CIRenderTask*) startTaskToRender:(CIImage*)image + fromRect:(CGRect)fromRect + toDestination:(CIRenderDestination*)destination + atPoint:(CGPoint)atPoint + error:(NSError**)error __attribute__((availability(ios,introduced=11_0))); +#endif + + + + + +#if 0 +- (nullable CIRenderTask*) startTaskToRender:(CIImage*)image + toDestination:(CIRenderDestination*)destination + error:(NSError**)error __attribute__((availability(ios,introduced=11_0))); +#endif + +#if 0 +- (BOOL) prepareRender:(CIImage*)image + fromRect:(CGRect)fromRect + toDestination:(CIRenderDestination*)destination + atPoint:(CGPoint)atPoint + error:(NSError**)error __attribute__((availability(ios,introduced=11_0))); +#endif + + + + + +#if 0 +- (nullable CIRenderTask*) startTaskToClear:(CIRenderDestination*)destination + error:(NSError**)error __attribute__((availability(ios,introduced=11_0))); +#endif + + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIBarcodeDescriptor +#define _REWRITER_typedef_CIBarcodeDescriptor +typedef struct objc_object CIBarcodeDescriptor; +typedef struct {} _objc_exc_CIBarcodeDescriptor; +#endif + +struct CIBarcodeDescriptor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +/* @end */ + +typedef NSInteger CIQRCodeErrorCorrectionLevel; enum +{ + CIQRCodeErrorCorrectionLevelL __attribute__((swift_name("levelL"))) = 'L', + CIQRCodeErrorCorrectionLevelM __attribute__((swift_name("levelM"))) = 'M', + CIQRCodeErrorCorrectionLevelQ __attribute__((swift_name("levelQ"))) = 'Q', + CIQRCodeErrorCorrectionLevelH __attribute__((swift_name("levelH"))) = 'H', + +} __attribute__((swift_name("CIQRCodeDescriptor.ErrorCorrectionLevel"))); + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIQRCodeDescriptor +#define _REWRITER_typedef_CIQRCodeDescriptor +typedef struct objc_object CIQRCodeDescriptor; +typedef struct {} _objc_exc_CIQRCodeDescriptor; +#endif + +struct CIQRCodeDescriptor_IMPL { + struct CIBarcodeDescriptor_IMPL CIBarcodeDescriptor_IVARS; + NSData *errorCorrectedPayload; + NSInteger symbolVersion; + uint8_t maskPattern; + CIQRCodeErrorCorrectionLevel errorCorrectionLevel; +}; + +// @property (readonly) NSData *errorCorrectedPayload; +// @property (readonly) NSInteger symbolVersion; +// @property (readonly) uint8_t maskPattern; +// @property (readonly) CIQRCodeErrorCorrectionLevel errorCorrectionLevel; + + +#if 0 +- (nullable instancetype)initWithPayload:(NSData *)errorCorrectedPayload + symbolVersion:(NSInteger)symbolVersion + maskPattern:(uint8_t)maskPattern + errorCorrectionLevel:(CIQRCodeErrorCorrectionLevel)errorCorrectionLevel; +#endif + + + +#if 0 ++ (nullable instancetype)descriptorWithPayload:(NSData *)errorCorrectedPayload + symbolVersion:(NSInteger)symbolVersion + maskPattern:(uint8_t)maskPattern + errorCorrectionLevel:(CIQRCodeErrorCorrectionLevel)errorCorrectionLevel; +#endif + + +/* @end */ + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIAztecCodeDescriptor +#define _REWRITER_typedef_CIAztecCodeDescriptor +typedef struct objc_object CIAztecCodeDescriptor; +typedef struct {} _objc_exc_CIAztecCodeDescriptor; +#endif + +struct CIAztecCodeDescriptor_IMPL { + struct CIBarcodeDescriptor_IMPL CIBarcodeDescriptor_IVARS; + NSData *errorCorrectedPayload; + BOOL isCompact; + NSInteger layerCount; + NSInteger dataCodewordCount; +}; + +// @property (readonly) NSData *errorCorrectedPayload; +// @property (readonly) BOOL isCompact; +// @property (readonly) NSInteger layerCount; +// @property (readonly) NSInteger dataCodewordCount; + + +#if 0 +- (nullable instancetype)initWithPayload:(NSData *)errorCorrectedPayload + isCompact:(BOOL)isCompact + layerCount:(NSInteger)layerCount + dataCodewordCount:(NSInteger)dataCodewordCount; +#endif + + + +#if 0 ++ (nullable instancetype)descriptorWithPayload:(NSData *)errorCorrectedPayload + isCompact:(BOOL)isCompact + layerCount:(NSInteger)layerCount + dataCodewordCount:(NSInteger)dataCodewordCount; +#endif + + +/* @end */ + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIPDF417CodeDescriptor +#define _REWRITER_typedef_CIPDF417CodeDescriptor +typedef struct objc_object CIPDF417CodeDescriptor; +typedef struct {} _objc_exc_CIPDF417CodeDescriptor; +#endif + +struct CIPDF417CodeDescriptor_IMPL { + struct CIBarcodeDescriptor_IMPL CIBarcodeDescriptor_IVARS; + NSData *errorCorrectedPayload; + BOOL isCompact; + NSInteger rowCount; + NSInteger columnCount; +}; + +// @property(readonly) NSData *errorCorrectedPayload; +// @property (readonly) BOOL isCompact; +// @property (readonly) NSInteger rowCount; +// @property (readonly) NSInteger columnCount; + + +#if 0 +- (nullable instancetype)initWithPayload:(NSData *)errorCorrectedPayload + isCompact:(BOOL)isCompact + rowCount:(NSInteger)rowCount + columnCount:(NSInteger)columnCount; +#endif + + + +#if 0 ++ (nullable instancetype)descriptorWithPayload:(NSData *)errorCorrectedPayload + isCompact:(BOOL)isCompact + rowCount:(NSInteger)rowCount + columnCount:(NSInteger)columnCount; +#endif + + +/* @end */ + +typedef NSInteger CIDataMatrixCodeECCVersion; enum +{ + CIDataMatrixCodeECCVersion000 __attribute__((swift_name("v000"))) = 0, + CIDataMatrixCodeECCVersion050 __attribute__((swift_name("v050"))) = 50, + CIDataMatrixCodeECCVersion080 __attribute__((swift_name("v080"))) = 80, + CIDataMatrixCodeECCVersion100 __attribute__((swift_name("v100"))) = 100, + CIDataMatrixCodeECCVersion140 __attribute__((swift_name("v140"))) = 140, + CIDataMatrixCodeECCVersion200 __attribute__((swift_name("v200"))) = 200, + +} __attribute__((swift_name("CIDataMatrixCodeDescriptor.ECCVersion"))); + + + + + + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=11_0))) + +#ifndef _REWRITER_typedef_CIDataMatrixCodeDescriptor +#define _REWRITER_typedef_CIDataMatrixCodeDescriptor +typedef struct objc_object CIDataMatrixCodeDescriptor; +typedef struct {} _objc_exc_CIDataMatrixCodeDescriptor; +#endif + +struct CIDataMatrixCodeDescriptor_IMPL { + struct CIBarcodeDescriptor_IMPL CIBarcodeDescriptor_IVARS; + NSData *errorCorrectedPayload; + NSInteger rowCount; + NSInteger columnCount; + CIDataMatrixCodeECCVersion eccVersion; +}; + +// @property (readonly) NSData *errorCorrectedPayload; +// @property (readonly) NSInteger rowCount; +// @property (readonly) NSInteger columnCount; +// @property (readonly) CIDataMatrixCodeECCVersion eccVersion; + + +#if 0 +- (nullable instancetype)initWithPayload:(NSData *)errorCorrectedPayload + rowCount:(NSInteger)rowCount + columnCount:(NSInteger)columnCount + eccVersion:(CIDataMatrixCodeECCVersion)eccVersion; +#endif + + + +#if 0 ++ (nullable instancetype)descriptorWithPayload:(NSData *)errorCorrectedPayload + rowCount:(NSInteger)rowCount + columnCount:(NSInteger)columnCount + eccVersion:(CIDataMatrixCodeECCVersion)eccVersion; +#endif + + +/* @end */ + +// @class NSUserActivity; +#ifndef _REWRITER_typedef_NSUserActivity +#define _REWRITER_typedef_NSUserActivity +typedef struct objc_object NSUserActivity; +typedef struct {} _objc_exc_NSUserActivity; +#endif + + +// @interface NSUserActivity (CIBarcodeDescriptor) + + + + +// @property (nonatomic, nullable, readonly, copy) CIBarcodeDescriptor *detectedBarcodeDescriptor __attribute__((availability(macos,introduced=10.13.4))) __attribute__((availability(ios,introduced=11.3))) __attribute__((availability(tvos,introduced=11.3))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +struct UIColor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha; +// + (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha; +// + (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; +// + (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha __attribute__((availability(ios,introduced=10.0))); +// + (UIColor *)colorWithCGColor:(CGColorRef)cgColor; +// + (UIColor *)colorWithPatternImage:(UIImage *)image; + +// + (UIColor *)colorWithCIColor:(CIColor *)ciColor __attribute__((availability(ios,introduced=5.0))); + + + +// - (UIColor *)initWithWhite:(CGFloat)white alpha:(CGFloat)alpha; +// - (UIColor *)initWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha; +// - (UIColor *)initWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; +// - (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha __attribute__((availability(ios,introduced=10.0))); +// - (UIColor *)initWithCGColor:(CGColorRef)cgColor; +// - (UIColor *)initWithPatternImage:(UIImage*)image; + +// - (UIColor *)initWithCIColor:(CIColor *)ciColor __attribute__((availability(ios,introduced=5.0))); + + + + +@property(class, nonatomic, readonly) UIColor *blackColor; +@property(class, nonatomic, readonly) UIColor *darkGrayColor; +@property(class, nonatomic, readonly) UIColor *lightGrayColor; +@property(class, nonatomic, readonly) UIColor *whiteColor; +@property(class, nonatomic, readonly) UIColor *grayColor; +@property(class, nonatomic, readonly) UIColor *redColor; +@property(class, nonatomic, readonly) UIColor *greenColor; +@property(class, nonatomic, readonly) UIColor *blueColor; +@property(class, nonatomic, readonly) UIColor *cyanColor; +@property(class, nonatomic, readonly) UIColor *yellowColor; +@property(class, nonatomic, readonly) UIColor *magentaColor; +@property(class, nonatomic, readonly) UIColor *orangeColor; +@property(class, nonatomic, readonly) UIColor *purpleColor; +@property(class, nonatomic, readonly) UIColor *brownColor; +@property(class, nonatomic, readonly) UIColor *clearColor; + + +// - (void)set; + + +// - (void)setFill; +// - (void)setStroke; + + + +// - (BOOL)getWhite:(nullable CGFloat *)white alpha:(nullable CGFloat *)alpha __attribute__((availability(ios,introduced=5.0))); +// - (BOOL)getHue:(nullable CGFloat *)hue saturation:(nullable CGFloat *)saturation brightness:(nullable CGFloat *)brightness alpha:(nullable CGFloat *)alpha __attribute__((availability(ios,introduced=5.0))); +// - (BOOL)getRed:(nullable CGFloat *)red green:(nullable CGFloat *)green blue:(nullable CGFloat *)blue alpha:(nullable CGFloat *)alpha __attribute__((availability(ios,introduced=5.0))); + + +// - (UIColor *)colorWithAlphaComponent:(CGFloat)alpha; + + +// @property(nonatomic,readonly) CGColorRef CGColor; +// - (CGColorRef)CGColor __attribute__((objc_returns_inner_pointer)) __attribute__((cf_returns_not_retained)); + +// @property(nonatomic,readonly) CIColor *CIColor __attribute__((availability(ios,introduced=5.0))); + + +/* @end */ + + + +// @interface UIColor (UINSItemProvider) + +/* @end */ + + + + +// @interface CIColor(UIKitAdditions) + +// - (instancetype)initWithColor:(UIColor *)color __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + + +// @interface UIColor (UIColorNamedColors) +// + (nullable UIColor *)colorNamed:(NSString *)name __attribute__((availability(ios,introduced=11.0))); +// + (nullable UIColor *)colorNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=11.0))); +/* @end */ + + +// @interface UIColor (DynamicColors) +// + (UIColor *)colorWithDynamicProvider:(UIColor * (^)(UITraitCollection *traitCollection))dynamicProvider __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +// - (UIColor *)initWithDynamicProvider:(UIColor * (^)(UITraitCollection *traitCollection))dynamicProvider __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + +// - (UIColor *)resolvedColorWithTraitCollection:(UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef uint32_t UIFontDescriptorSymbolicTraits; enum { + + + + + UIFontDescriptorTraitItalic = 1u << 0, + UIFontDescriptorTraitBold = 1u << 1, + UIFontDescriptorTraitExpanded = 1u << 5, + UIFontDescriptorTraitCondensed = 1u << 6, + UIFontDescriptorTraitMonoSpace = 1u << 10, + UIFontDescriptorTraitVertical = 1u << 11, + UIFontDescriptorTraitUIOptimized = 1u << 12, + UIFontDescriptorTraitTightLeading = 1u << 15, + UIFontDescriptorTraitLooseLeading = 1u << 16, + + + + + UIFontDescriptorClassMask = 0xF0000000, + + UIFontDescriptorClassUnknown = 0u << 28, + UIFontDescriptorClassOldStyleSerifs = 1u << 28, + UIFontDescriptorClassTransitionalSerifs = 2u << 28, + UIFontDescriptorClassModernSerifs = 3u << 28, + UIFontDescriptorClassClarendonSerifs = 4u << 28, + UIFontDescriptorClassSlabSerifs = 5u << 28, + UIFontDescriptorClassFreeformSerifs = 7u << 28, + UIFontDescriptorClassSansSerif = 8u << 28, + UIFontDescriptorClassOrnamentals = 9u << 28, + UIFontDescriptorClassScripts = 10u << 28, + UIFontDescriptorClassSymbolic = 12u << 28 +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSUInteger UIFontDescriptorClass; +typedef NSString * UIFontTextStyle __attribute__((swift_wrapper(enum))); +typedef NSString * UIFontDescriptorAttributeName __attribute__((swift_wrapper(enum))); +typedef NSString * UIFontDescriptorTraitKey __attribute__((swift_wrapper(enum))); +typedef NSString * UIFontDescriptorFeatureKey __attribute__((swift_wrapper(struct))); +typedef CGFloat UIFontWeight __attribute__((swift_wrapper(struct))); + +typedef NSString * UIFontDescriptorSystemDesign __attribute__((swift_wrapper(enum))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorSystemDesign const UIFontDescriptorSystemDesignDefault __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=5.2))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorSystemDesign const UIFontDescriptorSystemDesignRounded __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=5.2))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorSystemDesign const UIFontDescriptorSystemDesignSerif __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorSystemDesign const UIFontDescriptorSystemDesignMonospaced __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +// @class NSMutableDictionary; +#ifndef _REWRITER_typedef_NSMutableDictionary +#define _REWRITER_typedef_NSMutableDictionary +typedef struct objc_object NSMutableDictionary; +typedef struct {} _objc_exc_NSMutableDictionary; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSSet +#define _REWRITER_typedef_NSSet +typedef struct objc_object NSSet; +typedef struct {} _objc_exc_NSSet; +#endif + +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIFontDescriptor +#define _REWRITER_typedef_UIFontDescriptor +typedef struct objc_object UIFontDescriptor; +typedef struct {} _objc_exc_UIFontDescriptor; +#endif + +struct UIFontDescriptor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property(nonatomic, readonly) NSString *postscriptName; +// @property(nonatomic, readonly) CGFloat pointSize; +// @property(nonatomic, readonly) CGAffineTransform matrix __attribute__((availability(macCatalyst,unavailable))); +// @property(nonatomic, readonly) UIFontDescriptorSymbolicTraits symbolicTraits; + +// - (nullable id)objectForKey:(UIFontDescriptorAttributeName)anAttribute; + +// @property(nonatomic, readonly) NSDictionary *fontAttributes; + + + +// - (NSArray *)matchingFontDescriptorsWithMandatoryKeys:(nullable NSSet *)mandatoryKeys; + + +// + (UIFontDescriptor *)fontDescriptorWithFontAttributes:(NSDictionary *)attributes; +// + (UIFontDescriptor *)fontDescriptorWithName:(NSString *)fontName size:(CGFloat)size; +// + (UIFontDescriptor *)fontDescriptorWithName:(NSString *)fontName matrix:(CGAffineTransform)matrix; + + +// + (UIFontDescriptor *)preferredFontDescriptorWithTextStyle:(UIFontTextStyle)style; + +// + (UIFontDescriptor *)preferredFontDescriptorWithTextStyle:(UIFontTextStyle)style compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))); + +// - (instancetype)initWithFontAttributes:(NSDictionary *)attributes __attribute__((objc_designated_initializer)); + +// - (UIFontDescriptor *)fontDescriptorByAddingAttributes:(NSDictionary *)attributes; +// - (UIFontDescriptor *)fontDescriptorWithSize:(CGFloat)newPointSize; +// - (UIFontDescriptor *)fontDescriptorWithMatrix:(CGAffineTransform)matrix __attribute__((availability(macCatalyst,unavailable))); +// - (UIFontDescriptor *)fontDescriptorWithFace:(NSString *)newFace; +// - (UIFontDescriptor *)fontDescriptorWithFamily:(NSString *)newFamily; + +// - (nullable UIFontDescriptor *)fontDescriptorWithSymbolicTraits:(UIFontDescriptorSymbolicTraits)symbolicTraits; +// - (nullable UIFontDescriptor *)fontDescriptorWithDesign:(UIFontDescriptorSystemDesign)design __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=5.2))) __attribute__((availability(tvos,introduced=13.0))); + + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorFamilyAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorNameAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorFaceAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorSizeAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorVisibleNameAttribute __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorMatrixAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorCharacterSetAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorCascadeListAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorTraitsAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorFixedAdvanceAttribute __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorFeatureSettingsAttribute __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorAttributeName const UIFontDescriptorTextStyleAttribute __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorTraitKey const UIFontSymbolicTrait __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorTraitKey const UIFontWeightTrait __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorTraitKey const UIFontWidthTrait __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorTraitKey const UIFontSlantTrait __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightUltraLight __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightThin __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightLight __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightRegular __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightMedium __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightSemibold __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightBold __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightHeavy __attribute__((availability(ios,introduced=8.2))); +extern "C" __attribute__((visibility ("default"))) const UIFontWeight UIFontWeightBlack __attribute__((availability(ios,introduced=8.2))); + + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorFeatureKey const UIFontFeatureTypeIdentifierKey __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontDescriptorFeatureKey const UIFontFeatureSelectorIdentifierKey __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleLargeTitle __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleTitle1 __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleTitle2 __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleTitle3 __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleHeadline __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleSubheadline __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleBody __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleCallout __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleFootnote __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleCaption1 __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIFontTextStyle const UIFontTextStyleCaption2 __attribute__((availability(ios,introduced=7.0))); +#pragma clang assume_nonnull end + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + +struct UIFont_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (UIFont *)preferredFontForTextStyle:(UIFontTextStyle)style __attribute__((availability(ios,introduced=7.0))); + +// + (UIFont *)preferredFontForTextStyle:(UIFontTextStyle)style compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,unavailable))); + + +// + (nullable UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize; + + +@property(class, nonatomic, readonly) NSArray *familyNames; + + +// + (NSArray *)fontNamesForFamilyName:(NSString *)familyName; + + + + + +// + (UIFont *)systemFontOfSize:(CGFloat)fontSize; +// + (UIFont *)boldSystemFontOfSize:(CGFloat)fontSize; +// + (UIFont *)italicSystemFontOfSize:(CGFloat)fontSize; + + + + +// + (UIFont *)systemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight __attribute__((availability(ios,introduced=8.2))); +// + (UIFont *)monospacedDigitSystemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight __attribute__((availability(ios,introduced=9.0))); + + +// + (UIFont *)monospacedSystemFontOfSize:(CGFloat)fontSize weight:(UIFontWeight)weight __attribute__((availability(ios,introduced=13.0))); + + + +// @property(nonatomic,readonly,strong) NSString *familyName; +// @property(nonatomic,readonly,strong) NSString *fontName; +// @property(nonatomic,readonly) CGFloat pointSize; +// @property(nonatomic,readonly) CGFloat ascender; +// @property(nonatomic,readonly) CGFloat descender; +// @property(nonatomic,readonly) CGFloat capHeight; +// @property(nonatomic,readonly) CGFloat xHeight; +// @property(nonatomic,readonly) CGFloat lineHeight __attribute__((availability(ios,introduced=4.0))); +// @property(nonatomic,readonly) CGFloat leading; + + +// - (UIFont *)fontWithSize:(CGFloat)fontSize; + + +// + (UIFont *)fontWithDescriptor:(UIFontDescriptor *)descriptor size:(CGFloat)pointSize __attribute__((availability(ios,introduced=7.0))); + + +// @property(nonatomic, readonly) UIFontDescriptor *fontDescriptor __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIBarStyle; enum { + UIBarStyleDefault = 0, + UIBarStyleBlack = 1, + + UIBarStyleBlackOpaque __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use UIBarStyleBlack instead."))) = 1, + UIBarStyleBlackTranslucent __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use UIBarStyleBlack and set the translucent property to YES instead."))) = 2, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIUserInterfaceSizeClass; enum { + UIUserInterfaceSizeClassUnspecified = 0, + UIUserInterfaceSizeClassCompact = 1, + UIUserInterfaceSizeClassRegular = 2, +} __attribute__((availability(ios,introduced=8.0))); + +typedef NSInteger UIUserInterfaceStyle; enum { + UIUserInterfaceStyleUnspecified, + UIUserInterfaceStyleLight, + UIUserInterfaceStyleDark, +} __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,unavailable))); + +typedef NSInteger UIUserInterfaceLayoutDirection; enum { + UIUserInterfaceLayoutDirectionLeftToRight, + UIUserInterfaceLayoutDirectionRightToLeft, +} __attribute__((availability(ios,introduced=5.0))); + + +typedef NSInteger UITraitEnvironmentLayoutDirection; enum { + UITraitEnvironmentLayoutDirectionUnspecified = -1, + UITraitEnvironmentLayoutDirectionLeftToRight = UIUserInterfaceLayoutDirectionLeftToRight, + UITraitEnvironmentLayoutDirectionRightToLeft = UIUserInterfaceLayoutDirectionRightToLeft, +} __attribute__((availability(ios,introduced=10.0))); + +typedef NSInteger UIDisplayGamut; enum { + UIDisplayGamutUnspecified = -1, + UIDisplayGamutSRGB, + UIDisplayGamutP3 +} __attribute__((availability(ios,introduced=10.0))); + + + + +typedef NSInteger UIAccessibilityContrast; enum { + UIAccessibilityContrastUnspecified = -1, + UIAccessibilityContrastNormal, + UIAccessibilityContrastHigh, +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + +typedef NSInteger UILegibilityWeight; enum { + UILegibilityWeightUnspecified = -1, + UILegibilityWeightRegular, + UILegibilityWeightBold +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +typedef NSInteger UIUserInterfaceLevel; enum { + UIUserInterfaceLevelUnspecified = -1, + UIUserInterfaceLevelBase, + UIUserInterfaceLevelElevated +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @interface UIColor (UIColorSystemColors) + + + + + + + +@property (class, nonatomic, readonly) UIColor *systemRedColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGreenColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemBlueColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemOrangeColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemYellowColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemPinkColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemPurpleColor __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemTealColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemIndigoColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + +@property (class, nonatomic, readonly) UIColor *systemGrayColor __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGray2Color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGray3Color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGray4Color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGray5Color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemGray6Color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + +@property (class, nonatomic, readonly) UIColor *labelColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *secondaryLabelColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *tertiaryLabelColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *quaternaryLabelColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + +@property (class, nonatomic, readonly) UIColor *linkColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + +@property (class, nonatomic, readonly) UIColor *placeholderTextColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + + + + +@property (class, nonatomic, readonly) UIColor *separatorColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *opaqueSeparatorColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *secondarySystemBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *tertiarySystemBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +@property (class, nonatomic, readonly) UIColor *systemGroupedBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *secondarySystemGroupedBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *tertiarySystemGroupedBackgroundColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +@property (class, nonatomic, readonly) UIColor *systemFillColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +@property (class, nonatomic, readonly) UIColor *secondarySystemFillColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +@property (class, nonatomic, readonly) UIColor *tertiarySystemFillColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +@property (class, nonatomic, readonly) UIColor *quaternarySystemFillColor __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +@property(class, nonatomic, readonly) UIColor *lightTextColor __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) UIColor *darkTextColor __attribute__((availability(tvos,unavailable))); + + + +@property(class, nonatomic, readonly) UIColor *groupTableViewBackgroundColor __attribute__((availability(ios,introduced=2.0,deprecated=13.0,replacement="systemGroupedBackgroundColor"))) __attribute__((availability(tvos,introduced=13.0,deprecated=13.0,replacement="systemGroupedBackgroundColor"))); + +@property(class, nonatomic, readonly) UIColor *viewFlipsideBackgroundColor __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) UIColor *scrollViewTexturedBackgroundColor __attribute__((availability(ios,introduced=3.2,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) UIColor *underPageBackgroundColor __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + + +// @interface UIFont (UIFontSystemFonts) +@property(class, nonatomic, readonly) CGFloat labelFontSize __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) CGFloat buttonFontSize __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) CGFloat smallSystemFontSize __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) CGFloat systemFontSize __attribute__((availability(tvos,unavailable))); +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + +// @protocol UIAppearanceContainer /* @end */ + + +// @protocol UIAppearance + + + + + + +// + (instancetype)appearance; +// + (instancetype)appearanceWhenContainedIn:(nullable Class )ContainerClass, ... __attribute__((sentinel(0,1))) __attribute__((availability(ios,introduced=5.0,deprecated=9.0,replacement="appearanceWhenContainedInInstancesOfClasses:"))) __attribute__((availability(tvos,unavailable))); +// + (instancetype)appearanceWhenContainedInInstancesOfClasses:(NSArray> *)containerTypes __attribute__((availability(ios,introduced=9.0))); + +// + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait __attribute__((availability(ios,introduced=8.0))); +// + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedIn:(nullable Class )ContainerClass, ... __attribute__((sentinel(0,1))) __attribute__((availability(ios,introduced=8.0,deprecated=9.0,replacement="appearanceForTraitCollection:whenContainedInInstancesOfClasses:"))) __attribute__((availability(tvos,unavailable))); +// + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedInInstancesOfClasses:(NSArray> *)containerTypes __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIDynamicAnimator; +#ifndef _REWRITER_typedef_UIDynamicAnimator +#define _REWRITER_typedef_UIDynamicAnimator +typedef struct objc_object UIDynamicAnimator; +typedef struct {} _objc_exc_UIDynamicAnimator; +#endif + +// @class UIBezierPath; +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + + +typedef NSUInteger UIDynamicItemCollisionBoundsType; enum { + UIDynamicItemCollisionBoundsTypeRectangle, + UIDynamicItemCollisionBoundsTypeEllipse, + UIDynamicItemCollisionBoundsTypePath +} __attribute__((availability(ios,introduced=9.0))); + +// @protocol UIDynamicItem + +// @property (nonatomic, readwrite) CGPoint center; +// @property (nonatomic, readonly) CGRect bounds; +// @property (nonatomic, readwrite) CGAffineTransform transform; + +/* @optional */ + + + + +// @property (nonatomic, readonly) UIDynamicItemCollisionBoundsType collisionBoundsType __attribute__((availability(ios,introduced=9.0))); + + + + + +// @property (nonatomic, readonly) UIBezierPath *collisionBoundingPath __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIDynamicItemGroup +#define _REWRITER_typedef_UIDynamicItemGroup +typedef struct objc_object UIDynamicItemGroup; +typedef struct {} _objc_exc_UIDynamicItemGroup; +#endif + +struct UIDynamicItemGroup_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithItems:(NSArray> *)items; + +// @property (nonatomic, readonly, copy) NSArray> *items; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIDynamicBehavior +#define _REWRITER_typedef_UIDynamicBehavior +typedef struct objc_object UIDynamicBehavior; +typedef struct {} _objc_exc_UIDynamicBehavior; +#endif + +struct UIDynamicBehavior_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (void)addChildBehavior:(UIDynamicBehavior *)behavior; +// - (void)removeChildBehavior:(UIDynamicBehavior *)behavior; + +// @property (nonatomic, readonly, copy) NSArray<__kindof UIDynamicBehavior *> *childBehaviors; + + +// @property (nullable, nonatomic,copy) void (^action)(void); + +// - (void)willMoveToAnimator:(nullable UIDynamicAnimator *)dynamicAnimator; + +// @property (nullable, nonatomic, readonly) UIDynamicAnimator *dynamicAnimator; + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSDictionary +#define _REWRITER_typedef_NSDictionary +typedef struct objc_object NSDictionary; +typedef struct {} _objc_exc_NSDictionary; +#endif + +#ifndef _REWRITER_typedef_NSLayoutAnchor +#define _REWRITER_typedef_NSLayoutAnchor +typedef struct objc_object NSLayoutAnchor; +typedef struct {} _objc_exc_NSLayoutAnchor; +#endif + + +typedef float UILayoutPriority __attribute__((swift_wrapper(struct))); +static const UILayoutPriority UILayoutPriorityRequired __attribute__((availability(ios,introduced=6.0))) = 1000; +static const UILayoutPriority UILayoutPriorityDefaultHigh __attribute__((availability(ios,introduced=6.0))) = 750; +static const UILayoutPriority UILayoutPriorityDragThatCanResizeScene __attribute__((availability(macCatalyst,introduced=13.0))) = 510; +static const UILayoutPriority UILayoutPrioritySceneSizeStayPut __attribute__((availability(macCatalyst,introduced=13.0))) = 500; +static const UILayoutPriority UILayoutPriorityDragThatCannotResizeScene __attribute__((availability(macCatalyst,introduced=13.0))) = 490; +static const UILayoutPriority UILayoutPriorityDefaultLow __attribute__((availability(ios,introduced=6.0))) = 250; +static const UILayoutPriority UILayoutPriorityFittingSizeLevel __attribute__((availability(ios,introduced=6.0))) = 50; +typedef NSInteger NSLayoutRelation; enum { + NSLayoutRelationLessThanOrEqual = -1, + NSLayoutRelationEqual = 0, + NSLayoutRelationGreaterThanOrEqual = 1, +}; + +typedef NSInteger NSLayoutAttribute; enum { + NSLayoutAttributeLeft = 1, + NSLayoutAttributeRight, + NSLayoutAttributeTop, + NSLayoutAttributeBottom, + NSLayoutAttributeLeading, + NSLayoutAttributeTrailing, + NSLayoutAttributeWidth, + NSLayoutAttributeHeight, + NSLayoutAttributeCenterX, + NSLayoutAttributeCenterY, + NSLayoutAttributeLastBaseline, + + NSLayoutAttributeBaseline __attribute__((availability(swift, unavailable, message="Use 'lastBaseline' instead"))) = NSLayoutAttributeLastBaseline, + + + + NSLayoutAttributeFirstBaseline __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))), + + + NSLayoutAttributeLeftMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeRightMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeTopMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeBottomMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeLeadingMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeTrailingMargin __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeCenterXWithinMargins __attribute__((availability(ios,introduced=8.0))), + NSLayoutAttributeCenterYWithinMargins __attribute__((availability(ios,introduced=8.0))), + + + NSLayoutAttributeNotAnAttribute = 0 +}; + +typedef NSUInteger NSLayoutFormatOptions; enum { + NSLayoutFormatAlignAllLeft = (1 << NSLayoutAttributeLeft), + NSLayoutFormatAlignAllRight = (1 << NSLayoutAttributeRight), + NSLayoutFormatAlignAllTop = (1 << NSLayoutAttributeTop), + NSLayoutFormatAlignAllBottom = (1 << NSLayoutAttributeBottom), + NSLayoutFormatAlignAllLeading = (1 << NSLayoutAttributeLeading), + NSLayoutFormatAlignAllTrailing = (1 << NSLayoutAttributeTrailing), + NSLayoutFormatAlignAllCenterX = (1 << NSLayoutAttributeCenterX), + NSLayoutFormatAlignAllCenterY = (1 << NSLayoutAttributeCenterY), + NSLayoutFormatAlignAllLastBaseline = (1 << NSLayoutAttributeLastBaseline), + NSLayoutFormatAlignAllFirstBaseline __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=8.0))) = (1 << NSLayoutAttributeFirstBaseline), + + NSLayoutFormatAlignAllBaseline __attribute__((availability(swift, unavailable, message="Use 'alignAllLastBaseline' instead"))) = NSLayoutFormatAlignAllLastBaseline, + + + + + NSLayoutFormatAlignmentMask = 0xFFFF, + + + + NSLayoutFormatDirectionLeadingToTrailing = 0 << 16, + NSLayoutFormatDirectionLeftToRight = 1 << 16, + NSLayoutFormatDirectionRightToLeft = 2 << 16, + + NSLayoutFormatDirectionMask = 0x3 << 16, + + + + + NSLayoutFormatSpacingEdgeToEdge __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 0 << 19, + NSLayoutFormatSpacingBaselineToBaseline __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 1 << 19, + + NSLayoutFormatSpacingMask __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 0x1 << 19, + +}; + +extern "C" __attribute((visibility("default"))) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLayoutConstraint +#define _REWRITER_typedef_NSLayoutConstraint +typedef struct objc_object NSLayoutConstraint; +typedef struct {} _objc_exc_NSLayoutConstraint; +#endif + +struct NSLayoutConstraint_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// + (NSArray *)constraintsWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(nullable NSDictionary *)metrics views:(NSDictionary *)views __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + +extern "C" __attribute((visibility("default"))) NSDictionary *_NSDictionaryOfVariableBindings(NSString *commaSeparatedKeysString, _Nullable id firstValue, ...) __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=6.0))); + + + + + +// + (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + + + +// @property UILayoutPriority priority; + + + + + + + +// @property BOOL shouldBeArchived; + + + + + +// @property (nullable, readonly, assign) id firstItem; +// @property (nullable, readonly, assign) id secondItem; +// @property (readonly) NSLayoutAttribute firstAttribute; +// @property (readonly) NSLayoutAttribute secondAttribute; + + + + +// @property (readonly, copy) NSLayoutAnchor *firstAnchor __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +// @property (readonly, copy, nullable) NSLayoutAnchor *secondAnchor __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))); +// @property (readonly) NSLayoutRelation relation; +// @property (readonly) CGFloat multiplier; + + + +// @property CGFloat constant; + + +// @property (getter=isActive) BOOL active __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + +// + (void)activateConstraints:(NSArray *)constraints __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + + +// + (void)deactivateConstraints:(NSArray *)constraints __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + +// @interface NSLayoutConstraint (NSIdentifier) + + + + +// @property (nullable, copy) NSString *identifier __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + +// @class NSLayoutYAxisAnchor; +#ifndef _REWRITER_typedef_NSLayoutYAxisAnchor +#define _REWRITER_typedef_NSLayoutYAxisAnchor +typedef struct objc_object NSLayoutYAxisAnchor; +typedef struct {} _objc_exc_NSLayoutYAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + +// @protocol UILayoutSupport +// @property(nonatomic,readonly) CGFloat length; + + + +// @property(readonly, strong) NSLayoutYAxisAnchor *topAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(readonly, strong) NSLayoutYAxisAnchor *bottomAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(readonly, strong) NSLayoutDimension *heightAnchor __attribute__((availability(ios,introduced=9.0))); +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIDeviceOrientation; enum { + UIDeviceOrientationUnknown, + UIDeviceOrientationPortrait, + UIDeviceOrientationPortraitUpsideDown, + UIDeviceOrientationLandscapeLeft, + UIDeviceOrientationLandscapeRight, + UIDeviceOrientationFaceUp, + UIDeviceOrientationFaceDown +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIDeviceBatteryState; enum { + UIDeviceBatteryStateUnknown, + UIDeviceBatteryStateUnplugged, + UIDeviceBatteryStateCharging, + UIDeviceBatteryStateFull, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIUserInterfaceIdiom; enum { + UIUserInterfaceIdiomUnspecified = -1, + UIUserInterfaceIdiomPhone __attribute__((availability(ios,introduced=3.2))), + UIUserInterfaceIdiomPad __attribute__((availability(ios,introduced=3.2))), + UIUserInterfaceIdiomTV __attribute__((availability(ios,introduced=9.0))), + UIUserInterfaceIdiomCarPlay __attribute__((availability(ios,introduced=9.0))), +}; + +static inline BOOL UIDeviceOrientationIsPortrait(UIDeviceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown); +} + +static inline BOOL UIDeviceOrientationIsLandscape(UIDeviceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight); +} + +static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsFlat(UIDeviceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIDeviceOrientationFaceUp || (orientation) == UIDeviceOrientationFaceDown); +} + +static inline __attribute__((always_inline)) BOOL UIDeviceOrientationIsValidInterfaceOrientation(UIDeviceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIDeviceOrientationPortrait || (orientation) == UIDeviceOrientationPortraitUpsideDown || (orientation) == UIDeviceOrientationLandscapeLeft || (orientation) == UIDeviceOrientationLandscapeRight); +} + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIDevice +#define _REWRITER_typedef_UIDevice +typedef struct objc_object UIDevice; +typedef struct {} _objc_exc_UIDevice; +#endif + +struct UIDevice_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property(class, nonatomic, readonly) UIDevice *currentDevice; + +// @property(nonatomic,readonly,strong) NSString *name; +// @property(nonatomic,readonly,strong) NSString *model; +// @property(nonatomic,readonly,strong) NSString *localizedModel; +// @property(nonatomic,readonly,strong) NSString *systemName; +// @property(nonatomic,readonly,strong) NSString *systemVersion; +// @property(nonatomic,readonly) UIDeviceOrientation orientation __attribute__((availability(tvos,unavailable))); + +// @property(nullable, nonatomic,readonly,strong) NSUUID *identifierForVendor __attribute__((availability(ios,introduced=6.0))); + +// @property(nonatomic,readonly,getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications __attribute__((availability(tvos,unavailable))); +// - (void)beginGeneratingDeviceOrientationNotifications __attribute__((availability(tvos,unavailable))); +// - (void)endGeneratingDeviceOrientationNotifications __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) UIDeviceBatteryState batteryState __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) float batteryLevel __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,getter=isProximityMonitoringEnabled) BOOL proximityMonitoringEnabled __attribute__((availability(ios,introduced=3.0))); +// @property(nonatomic,readonly) BOOL proximityState __attribute__((availability(ios,introduced=3.0))); + +// @property(nonatomic,readonly,getter=isMultitaskingSupported) BOOL multitaskingSupported __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic,readonly) UIUserInterfaceIdiom userInterfaceIdiom __attribute__((availability(ios,introduced=3.2))); + +// - (void)playInputClick __attribute__((availability(ios,introduced=4.2))); + +/* @end */ + + +// @protocol UIInputViewAudioFeedback +/* @optional */ + +// @property (nonatomic, readonly) BOOL enableInputClicksWhenVisible; + +/* @end */ + + + + +static inline UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM() __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use -[UIDevice userInterfaceIdiom] directly."))) __attribute__((availability(tvos,introduced=9.0,deprecated=11.0,message="Use -[UIDevice userInterfaceIdiom] directly."))) { + return (((BOOL (*)(id, SEL, SEL))(void *)objc_msgSend)((id)((UIDevice * _Nonnull (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("UIDevice"), sel_registerName("currentDevice")), sel_registerName("respondsToSelector:"), sel_registerName("userInterfaceIdiom")) ? + ((UIUserInterfaceIdiom (*)(id, SEL))(void *)objc_msgSend)((id)((UIDevice * _Nonnull (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("UIDevice"), sel_registerName("currentDevice")), sel_registerName("userInterfaceIdiom")) : + UIUserInterfaceIdiomPhone); +} + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIDeviceOrientationDidChangeNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIDeviceBatteryStateDidChangeNotification __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIDeviceBatteryLevelDidChangeNotification __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIDeviceProximityStateDidChangeNotification __attribute__((availability(ios,introduced=3.0))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIWindow; +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIGestureRecognizer +#define _REWRITER_typedef_UIGestureRecognizer +typedef struct objc_object UIGestureRecognizer; +typedef struct {} _objc_exc_UIGestureRecognizer; +#endif + + +typedef NSInteger UITouchPhase; enum { + UITouchPhaseBegan, + UITouchPhaseMoved, + UITouchPhaseStationary, + UITouchPhaseEnded, + UITouchPhaseCancelled, + UITouchPhaseRegionEntered __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))), + UITouchPhaseRegionMoved __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))), + UITouchPhaseRegionExited __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))), +}; + +typedef NSInteger UIForceTouchCapability; enum { + UIForceTouchCapabilityUnknown = 0, + UIForceTouchCapabilityUnavailable = 1, + UIForceTouchCapabilityAvailable = 2 +}; + +typedef NSInteger UITouchType; enum { + UITouchTypeDirect, + UITouchTypeIndirect, + UITouchTypePencil __attribute__((availability(ios,introduced=9.1))), + UITouchTypeStylus __attribute__((availability(ios,introduced=9.1))) = UITouchTypePencil, + UITouchTypeIndirectPointer __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))), +} __attribute__((availability(ios,introduced=9.0))); + +typedef NSInteger UITouchProperties; enum { + UITouchPropertyForce = (1UL << 0), + UITouchPropertyAzimuth = (1UL << 1), + UITouchPropertyAltitude = (1UL << 2), + UITouchPropertyLocation = (1UL << 3), +} __attribute__((availability(ios,introduced=9.1))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITouch +#define _REWRITER_typedef_UITouch +typedef struct objc_object UITouch; +typedef struct {} _objc_exc_UITouch; +#endif + +struct UITouch_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic,readonly) NSTimeInterval timestamp; +// @property(nonatomic,readonly) UITouchPhase phase; +// @property(nonatomic,readonly) NSUInteger tapCount; +// @property(nonatomic,readonly) UITouchType type __attribute__((availability(ios,introduced=9.0))); + + + +// @property(nonatomic,readonly) CGFloat majorRadius __attribute__((availability(ios,introduced=8.0))); +// @property(nonatomic,readonly) CGFloat majorRadiusTolerance __attribute__((availability(ios,introduced=8.0))); + +// @property(nullable,nonatomic,readonly,strong) UIWindow *window; +// @property(nullable,nonatomic,readonly,strong) UIView *view; +// @property(nullable,nonatomic,readonly,copy) NSArray *gestureRecognizers __attribute__((availability(ios,introduced=3.2))); + +// - (CGPoint)locationInView:(nullable UIView *)view; +// - (CGPoint)previousLocationInView:(nullable UIView *)view; + + + +// - (CGPoint)preciseLocationInView:(nullable UIView *)view __attribute__((availability(ios,introduced=9.1))); +// - (CGPoint)precisePreviousLocationInView:(nullable UIView *)view __attribute__((availability(ios,introduced=9.1))); + + +// @property(nonatomic,readonly) CGFloat force __attribute__((availability(ios,introduced=9.0))); + +// @property(nonatomic,readonly) CGFloat maximumPossibleForce __attribute__((availability(ios,introduced=9.0))); + + + +// - (CGFloat)azimuthAngleInView:(nullable UIView *)view __attribute__((availability(ios,introduced=9.1))); + + +// - (CGVector)azimuthUnitVectorInView:(nullable UIView *)view __attribute__((availability(ios,introduced=9.1))); + + + + +// @property(nonatomic,readonly) CGFloat altitudeAngle __attribute__((availability(ios,introduced=9.1))); + + + +// @property(nonatomic,readonly) NSNumber * _Nullable estimationUpdateIndex __attribute__((availability(ios,introduced=9.1))); + + +// @property(nonatomic,readonly) UITouchProperties estimatedProperties __attribute__((availability(ios,introduced=9.1))); + + + +// @property(nonatomic,readonly) UITouchProperties estimatedPropertiesExpectingUpdates __attribute__((availability(ios,introduced=9.1))); + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSString * UIContentSizeCategory __attribute__((swift_wrapper(enum))) __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryUnspecified __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryExtraSmall __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategorySmall __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryMedium __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryExtraLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryExtraExtraLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryExtraExtraExtraLarge __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryAccessibilityMedium __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryAccessibilityLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraExtraLarge __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIContentSizeCategory const UIContentSizeCategoryAccessibilityExtraExtraExtraLarge __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIContentSizeCategoryDidChangeNotification __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIContentSizeCategoryNewValueKey __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) BOOL UIContentSizeCategoryIsAccessibilityCategory(UIContentSizeCategory category) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((swift_private)); +extern "C" __attribute__((visibility ("default"))) NSComparisonResult UIContentSizeCategoryCompareToCategory(UIContentSizeCategory lhs, UIContentSizeCategory rhs) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) __attribute__((swift_private)); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + +struct UITraitCollection_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (BOOL)containsTraitsInCollection:(nullable UITraitCollection *)trait; + + + +// + (UITraitCollection *)traitCollectionWithTraitsFromCollections:(NSArray *)traitCollections; + + +// + (UITraitCollection *)traitCollectionWithUserInterfaceIdiom:(UIUserInterfaceIdiom)idiom; +// @property (nonatomic, readonly) UIUserInterfaceIdiom userInterfaceIdiom; + +// + (UITraitCollection *)traitCollectionWithUserInterfaceStyle:(UIUserInterfaceStyle)userInterfaceStyle __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, readonly) UIUserInterfaceStyle userInterfaceStyle __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,unavailable))); + +// + (UITraitCollection *)traitCollectionWithLayoutDirection:(UITraitEnvironmentLayoutDirection)layoutDirection __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, readonly) UITraitEnvironmentLayoutDirection layoutDirection __attribute__((availability(ios,introduced=10.0))); + +// + (UITraitCollection *)traitCollectionWithDisplayScale:(CGFloat)scale; +// @property (nonatomic, readonly) CGFloat displayScale; + +// + (UITraitCollection *)traitCollectionWithHorizontalSizeClass:(UIUserInterfaceSizeClass)horizontalSizeClass; +// @property (nonatomic, readonly) UIUserInterfaceSizeClass horizontalSizeClass; + +// + (UITraitCollection *)traitCollectionWithVerticalSizeClass:(UIUserInterfaceSizeClass)verticalSizeClass; +// @property (nonatomic, readonly) UIUserInterfaceSizeClass verticalSizeClass; + +// + (UITraitCollection *)traitCollectionWithForceTouchCapability:(UIForceTouchCapability)capability __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic, readonly) UIForceTouchCapability forceTouchCapability __attribute__((availability(ios,introduced=9.0))); + +// + (UITraitCollection *)traitCollectionWithPreferredContentSizeCategory:(UIContentSizeCategory)preferredContentSizeCategory __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, copy, readonly) UIContentSizeCategory preferredContentSizeCategory __attribute__((availability(ios,introduced=10.0))); + +// + (UITraitCollection *)traitCollectionWithDisplayGamut:(UIDisplayGamut)displayGamut __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, readonly) UIDisplayGamut displayGamut __attribute__((availability(ios,introduced=10.0))); + +// + (UITraitCollection *)traitCollectionWithAccessibilityContrast:(UIAccessibilityContrast)accessibilityContrast __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, readonly) UIAccessibilityContrast accessibilityContrast __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +// + (UITraitCollection *)traitCollectionWithUserInterfaceLevel:(UIUserInterfaceLevel)userInterfaceLevel __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, readonly) UIUserInterfaceLevel userInterfaceLevel __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// + (UITraitCollection *)traitCollectionWithLegibilityWeight:(UILegibilityWeight)legibilityWeight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// @property (nonatomic, readonly) UILegibilityWeight legibilityWeight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + + + +// @protocol UITraitEnvironment +// @property (nonatomic, readonly) UITraitCollection *traitCollection __attribute__((availability(ios,introduced=8.0))); + + +// - (void)traitCollectionDidChange:(nullable UITraitCollection *)previousTraitCollection __attribute__((availability(ios,introduced=8.0))); +/* @end */ + + + +// @interface UITraitCollection (CurrentTraitCollection) + + + + +@property (class, nonatomic, strong) UITraitCollection *currentTraitCollection __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + + + + + + +// - (void)performAsCurrentTraitCollection:(void (__attribute__((noescape)) ^)(void))actions __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + +// @interface UITraitCollection (DynamicAppearance) +// - (BOOL)hasDifferentColorAppearanceComparedToTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + +// @class UIImageConfiguration; +#ifndef _REWRITER_typedef_UIImageConfiguration +#define _REWRITER_typedef_UIImageConfiguration +typedef struct objc_object UIImageConfiguration; +typedef struct {} _objc_exc_UIImageConfiguration; +#endif + + +// @interface UITraitCollection (ImageConfiguration) + + + + +// @property (nonatomic, strong, readonly) UIImageConfiguration *imageConfiguration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +// @class NSLayoutXAxisAnchor; +#ifndef _REWRITER_typedef_NSLayoutXAxisAnchor +#define _REWRITER_typedef_NSLayoutXAxisAnchor +typedef struct objc_object NSLayoutXAxisAnchor; +typedef struct {} _objc_exc_NSLayoutXAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutYAxisAnchor +#define _REWRITER_typedef_NSLayoutYAxisAnchor +typedef struct objc_object NSLayoutYAxisAnchor; +typedef struct {} _objc_exc_NSLayoutYAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + + +#pragma clang assume_nonnull begin +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_UILayoutGuide +#define _REWRITER_typedef_UILayoutGuide +typedef struct objc_object UILayoutGuide; +typedef struct {} _objc_exc_UILayoutGuide; +#endif + +struct UILayoutGuide_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// @property(nonatomic,readonly) CGRect layoutFrame; + + + + + + +// @property(nonatomic,weak,nullable) UIView *owningView; + + + + +// @property(nonatomic,copy) NSString *identifier; + + + + +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *leadingAnchor; +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *trailingAnchor; +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *leftAnchor; +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *rightAnchor; +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *topAnchor; +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *bottomAnchor; +// @property(nonatomic,readonly,strong) NSLayoutDimension *widthAnchor; +// @property(nonatomic,readonly,strong) NSLayoutDimension *heightAnchor; +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *centerXAnchor; +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *centerYAnchor; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @protocol UIFocusEnvironment; + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIFocusGuide +#define _REWRITER_typedef_UIFocusGuide +typedef struct objc_object UIFocusGuide; +typedef struct {} _objc_exc_UIFocusGuide; +#endif + +struct UIFocusGuide_IMPL { + struct UILayoutGuide_IMPL UILayoutGuide_IVARS; +}; + + + +// @property (nonatomic, getter=isEnabled) BOOL enabled; + + + +// @property (nonatomic, copy, null_resettable) NSArray> *preferredFocusEnvironments __attribute__((availability(ios,introduced=10.0))); + + +// @property (nonatomic, weak, nullable) UIView *preferredFocusedView __attribute__((availability(ios,introduced=9.0,deprecated=10.0,replacement="preferredFocusEnvironments"))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) // @protocol UIFocusAnimationContext + + +// @property (nonatomic, readonly) NSTimeInterval duration; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIFocusAnimationCoordinator +#define _REWRITER_typedef_UIFocusAnimationCoordinator +typedef struct objc_object UIFocusAnimationCoordinator; +typedef struct {} _objc_exc_UIFocusAnimationCoordinator; +#endif + +struct UIFocusAnimationCoordinator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (void)addCoordinatedAnimations:(nullable void (^)(void))animations completion:(nullable void (^)(void))completion; +// - (void)addCoordinatedFocusingAnimations:(void (^ _Nullable)(id animationContext))animations completion:(void (^ _Nullable)(void))completion __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (void)addCoordinatedUnfocusingAnimations:(void (^ _Nullable)(id animationContext))animations completion:(void (^ _Nullable)(void))completion __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIFocusUpdateContext +#define _REWRITER_typedef_UIFocusUpdateContext +typedef struct objc_object UIFocusUpdateContext; +typedef struct {} _objc_exc_UIFocusUpdateContext; +#endif + +#ifndef _REWRITER_typedef_UIFocusMovementHint +#define _REWRITER_typedef_UIFocusMovementHint +typedef struct objc_object UIFocusMovementHint; +typedef struct {} _objc_exc_UIFocusMovementHint; +#endif + +// @protocol UICoordinateSpace, UIFocusItemContainer; + +typedef NSUInteger UIFocusHeading; enum { + UIFocusHeadingNone = 0, + UIFocusHeadingUp = 1 << 0, + UIFocusHeadingDown = 1 << 1, + UIFocusHeadingLeft = 1 << 2, + UIFocusHeadingRight = 1 << 3, + UIFocusHeadingNext = 1 << 4, + UIFocusHeadingPrevious = 1 << 5, +} __attribute__((availability(ios,introduced=9.0))); + +typedef NSString * UIFocusSoundIdentifier __attribute__((swift_wrapper(struct))); + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) // @protocol UIFocusEnvironment + + + + +// @property (nonatomic, copy, readonly) NSArray> *preferredFocusEnvironments; + + + +// @property (nonatomic, weak, readonly, nullable) id parentFocusEnvironment __attribute__((swift_name("parentFocusEnvironment"))) __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + + +// @property (nonatomic, readonly, nullable) id focusItemContainer __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + + + +// - (void)setNeedsFocusUpdate; + + + +// - (void)updateFocusIfNeeded; + + +// - (BOOL)shouldUpdateFocusInContext:(UIFocusUpdateContext *)context; + + +// - (void)didUpdateFocusInContext:(UIFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator; + +/* @optional */ + + + + + +// - (nullable UIFocusSoundIdentifier)soundIdentifierForFocusUpdateInContext:(UIFocusUpdateContext *)context __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property (nonatomic, weak, readonly, nullable) UIView *preferredFocusedView __attribute__((availability(ios,introduced=9.0,deprecated=10.0,replacement="preferredFocusEnvironments"))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) // @protocol UIFocusItem + + + +// @property(nonatomic, readonly) BOOL canBecomeFocused; + + +// @property (nonatomic, readonly) CGRect frame __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + +/* @optional */ + + + +// - (void)didHintFocusMovement:(UIFocusMovementHint *)hint __attribute__((availability(ios,introduced=12.0))); + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=12.0))) // @protocol UIFocusItemContainer + + + + + +// @property (nonatomic, readonly) id coordinateSpace; + + +// - (NSArray> *)focusItemsInRect:(CGRect)rect; + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=12.0))) // @protocol UIFocusItemScrollableContainer + + +// @property (nonatomic, readwrite) CGPoint contentOffset; + + + +// @property (nonatomic, readonly) CGSize contentSize; + + +// @property (nonatomic, readonly) CGSize visibleSize; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIFocusUpdateContext +#define _REWRITER_typedef_UIFocusUpdateContext +typedef struct objc_object UIFocusUpdateContext; +typedef struct {} _objc_exc_UIFocusUpdateContext; +#endif + +struct UIFocusUpdateContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, weak, readonly, nullable) id previouslyFocusedItem __attribute__((availability(ios,introduced=10.0))); + + +// @property (nonatomic, weak, readonly, nullable) id nextFocusedItem __attribute__((availability(ios,introduced=10.0))); + + + + +// @property (nonatomic, weak, readonly, nullable) UIView *previouslyFocusedView; + + + + +// @property (nonatomic, weak, readonly, nullable) UIView *nextFocusedView; + + +// @property (nonatomic, assign, readonly) UIFocusHeading focusHeading; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIFocusDidUpdateNotification __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIFocusMovementDidFailNotification __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +extern "C" __attribute__((visibility ("default"))) NSString * const UIFocusUpdateContextKey __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +extern "C" __attribute__((visibility ("default"))) NSString * const UIFocusUpdateAnimationCoordinatorKey __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + +extern "C" __attribute__((visibility ("default"))) UIFocusSoundIdentifier const UIFocusSoundIdentifierNone __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) UIFocusSoundIdentifier const UIFocusSoundIdentifierDefault __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSInteger UIViewAnimationCurve; enum { + UIViewAnimationCurveEaseInOut, + UIViewAnimationCurveEaseIn, + UIViewAnimationCurveEaseOut, + UIViewAnimationCurveLinear, +}; + +typedef NSInteger UIViewContentMode; enum { + UIViewContentModeScaleToFill, + UIViewContentModeScaleAspectFit, + UIViewContentModeScaleAspectFill, + UIViewContentModeRedraw, + UIViewContentModeCenter, + UIViewContentModeTop, + UIViewContentModeBottom, + UIViewContentModeLeft, + UIViewContentModeRight, + UIViewContentModeTopLeft, + UIViewContentModeTopRight, + UIViewContentModeBottomLeft, + UIViewContentModeBottomRight, +}; + +typedef NSInteger UIViewAnimationTransition; enum { + UIViewAnimationTransitionNone, + UIViewAnimationTransitionFlipFromLeft, + UIViewAnimationTransitionFlipFromRight, + UIViewAnimationTransitionCurlUp, + UIViewAnimationTransitionCurlDown, +}; + +typedef NSUInteger UIViewAutoresizing; enum { + UIViewAutoresizingNone = 0, + UIViewAutoresizingFlexibleLeftMargin = 1 << 0, + UIViewAutoresizingFlexibleWidth = 1 << 1, + UIViewAutoresizingFlexibleRightMargin = 1 << 2, + UIViewAutoresizingFlexibleTopMargin = 1 << 3, + UIViewAutoresizingFlexibleHeight = 1 << 4, + UIViewAutoresizingFlexibleBottomMargin = 1 << 5 +}; + +typedef NSUInteger UIViewAnimationOptions; enum { + UIViewAnimationOptionLayoutSubviews = 1 << 0, + UIViewAnimationOptionAllowUserInteraction = 1 << 1, + UIViewAnimationOptionBeginFromCurrentState = 1 << 2, + UIViewAnimationOptionRepeat = 1 << 3, + UIViewAnimationOptionAutoreverse = 1 << 4, + UIViewAnimationOptionOverrideInheritedDuration = 1 << 5, + UIViewAnimationOptionOverrideInheritedCurve = 1 << 6, + UIViewAnimationOptionAllowAnimatedContent = 1 << 7, + UIViewAnimationOptionShowHideTransitionViews = 1 << 8, + UIViewAnimationOptionOverrideInheritedOptions = 1 << 9, + + UIViewAnimationOptionCurveEaseInOut = 0 << 16, + UIViewAnimationOptionCurveEaseIn = 1 << 16, + UIViewAnimationOptionCurveEaseOut = 2 << 16, + UIViewAnimationOptionCurveLinear = 3 << 16, + + UIViewAnimationOptionTransitionNone = 0 << 20, + UIViewAnimationOptionTransitionFlipFromLeft = 1 << 20, + UIViewAnimationOptionTransitionFlipFromRight = 2 << 20, + UIViewAnimationOptionTransitionCurlUp = 3 << 20, + UIViewAnimationOptionTransitionCurlDown = 4 << 20, + UIViewAnimationOptionTransitionCrossDissolve = 5 << 20, + UIViewAnimationOptionTransitionFlipFromTop = 6 << 20, + UIViewAnimationOptionTransitionFlipFromBottom = 7 << 20, + + UIViewAnimationOptionPreferredFramesPerSecondDefault = 0 << 24, + UIViewAnimationOptionPreferredFramesPerSecond60 = 3 << 24, + UIViewAnimationOptionPreferredFramesPerSecond30 = 7 << 24, + +} __attribute__((availability(ios,introduced=4.0))); + +typedef NSUInteger UIViewKeyframeAnimationOptions; enum { + UIViewKeyframeAnimationOptionLayoutSubviews = UIViewAnimationOptionLayoutSubviews, + UIViewKeyframeAnimationOptionAllowUserInteraction = UIViewAnimationOptionAllowUserInteraction, + UIViewKeyframeAnimationOptionBeginFromCurrentState = UIViewAnimationOptionBeginFromCurrentState, + UIViewKeyframeAnimationOptionRepeat = UIViewAnimationOptionRepeat, + UIViewKeyframeAnimationOptionAutoreverse = UIViewAnimationOptionAutoreverse, + UIViewKeyframeAnimationOptionOverrideInheritedDuration = UIViewAnimationOptionOverrideInheritedDuration, + UIViewKeyframeAnimationOptionOverrideInheritedOptions = UIViewAnimationOptionOverrideInheritedOptions, + + UIViewKeyframeAnimationOptionCalculationModeLinear = 0 << 10, + UIViewKeyframeAnimationOptionCalculationModeDiscrete = 1 << 10, + UIViewKeyframeAnimationOptionCalculationModePaced = 2 << 10, + UIViewKeyframeAnimationOptionCalculationModeCubic = 3 << 10, + UIViewKeyframeAnimationOptionCalculationModeCubicPaced = 4 << 10 +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSUInteger UISystemAnimation; enum { + UISystemAnimationDelete, +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSInteger UIViewTintAdjustmentMode; enum { + UIViewTintAdjustmentModeAutomatic, + + UIViewTintAdjustmentModeNormal, + UIViewTintAdjustmentModeDimmed, +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSInteger UISemanticContentAttribute; enum { + UISemanticContentAttributeUnspecified = 0, + UISemanticContentAttributePlayback, + UISemanticContentAttributeSpatial, + UISemanticContentAttributeForceLeftToRight, + UISemanticContentAttributeForceRightToLeft +} __attribute__((availability(ios,introduced=9.0))); + +// @protocol UICoordinateSpace + +// - (CGPoint)convertPoint:(CGPoint)point toCoordinateSpace:(id )coordinateSpace __attribute__((availability(ios,introduced=8.0))); +// - (CGPoint)convertPoint:(CGPoint)point fromCoordinateSpace:(id )coordinateSpace __attribute__((availability(ios,introduced=8.0))); +// - (CGRect)convertRect:(CGRect)rect toCoordinateSpace:(id )coordinateSpace __attribute__((availability(ios,introduced=8.0))); +// - (CGRect)convertRect:(CGRect)rect fromCoordinateSpace:(id )coordinateSpace __attribute__((availability(ios,introduced=8.0))); + +// @property (readonly, nonatomic) CGRect bounds __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + +// @class UIBezierPath; +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIGestureRecognizer +#define _REWRITER_typedef_UIGestureRecognizer +typedef struct objc_object UIGestureRecognizer; +typedef struct {} _objc_exc_UIGestureRecognizer; +#endif + +#ifndef _REWRITER_typedef_UIMotionEffect +#define _REWRITER_typedef_UIMotionEffect +typedef struct objc_object UIMotionEffect; +typedef struct {} _objc_exc_UIMotionEffect; +#endif + +#ifndef _REWRITER_typedef_CALayer +#define _REWRITER_typedef_CALayer +typedef struct objc_object CALayer; +typedef struct {} _objc_exc_CALayer; +#endif + +#ifndef _REWRITER_typedef_UILayoutGuide +#define _REWRITER_typedef_UILayoutGuide +typedef struct objc_object UILayoutGuide; +typedef struct {} _objc_exc_UILayoutGuide; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +struct UIView_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + + +@property(class, nonatomic, readonly) Class layerClass; + +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; +// @property(nonatomic) NSInteger tag; +// @property(nonatomic,readonly,strong) CALayer *layer; + +// @property(nonatomic,readonly) BOOL canBecomeFocused __attribute__((availability(ios,introduced=9.0))); +// @property (readonly, nonatomic, getter=isFocused) BOOL focused __attribute__((availability(ios,introduced=9.0))); + +// @property (nonatomic) UISemanticContentAttribute semanticContentAttribute __attribute__((availability(ios,introduced=9.0))); + + +// + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)attribute __attribute__((availability(ios,introduced=9.0))); + + +// + (UIUserInterfaceLayoutDirection)userInterfaceLayoutDirectionForSemanticContentAttribute:(UISemanticContentAttribute)semanticContentAttribute relativeToLayoutDirection:(UIUserInterfaceLayoutDirection)layoutDirection __attribute__((availability(ios,introduced=10.0))); + + +// @property (readonly, nonatomic) UIUserInterfaceLayoutDirection effectiveUserInterfaceLayoutDirection __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + + +// @interface UIView(UIViewGeometry) + + +// @property(nonatomic) CGRect frame; + + +// @property(nonatomic) CGRect bounds; +// @property(nonatomic) CGPoint center; +// @property(nonatomic) CGAffineTransform transform; +// @property(nonatomic) CATransform3D transform3D __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))); +// @property(nonatomic) CGFloat contentScaleFactor __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic,getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,getter=isExclusiveTouch) BOOL exclusiveTouch __attribute__((availability(tvos,unavailable))); + +// - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event; +// - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event; + +// - (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view; +// - (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view; +// - (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view; +// - (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view; + +// @property(nonatomic) BOOL autoresizesSubviews; +// @property(nonatomic) UIViewAutoresizing autoresizingMask; + +// - (CGSize)sizeThatFits:(CGSize)size; +// - (void)sizeToFit; + +/* @end */ + + +// @interface UIView(UIViewHierarchy) + +// @property(nullable, nonatomic,readonly) UIView *superview; +// @property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *subviews; +// @property(nullable, nonatomic,readonly) UIWindow *window; + +// - (void)removeFromSuperview; +// - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; +// - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2; + +// - (void)addSubview:(UIView *)view; +// - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview; +// - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview; + +// - (void)bringSubviewToFront:(UIView *)view; +// - (void)sendSubviewToBack:(UIView *)view; + +// - (void)didAddSubview:(UIView *)subview; +// - (void)willRemoveSubview:(UIView *)subview; + +// - (void)willMoveToSuperview:(nullable UIView *)newSuperview; +// - (void)didMoveToSuperview; +// - (void)willMoveToWindow:(nullable UIWindow *)newWindow; +// - (void)didMoveToWindow; + +// - (BOOL)isDescendantOfView:(UIView *)view; +// - (nullable __kindof UIView *)viewWithTag:(NSInteger)tag; + + +// - (void)setNeedsLayout; +// - (void)layoutIfNeeded; + +// - (void)layoutSubviews; +// @property (nonatomic) UIEdgeInsets layoutMargins __attribute__((availability(ios,introduced=8.0))); + + + + +// @property (nonatomic) NSDirectionalEdgeInsets directionalLayoutMargins __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property (nonatomic) BOOL preservesSuperviewLayoutMargins __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic) BOOL insetsLayoutMarginsFromSafeArea __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// - (void)layoutMarginsDidChange __attribute__((availability(ios,introduced=8.0))); + +// @property (nonatomic,readonly) UIEdgeInsets safeAreaInsets __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (void)safeAreaInsetsDidChange __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// @property(readonly,strong) UILayoutGuide *layoutMarginsGuide __attribute__((availability(ios,introduced=9.0))); + + +// @property (nonatomic, readonly, strong) UILayoutGuide *readableContentGuide __attribute__((availability(ios,introduced=9.0))); + + + + +// @property(nonatomic,readonly,strong) UILayoutGuide *safeAreaLayoutGuide __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +/* @end */ + + +// @interface UIView(UIViewRendering) + +// - (void)drawRect:(CGRect)rect; + +// - (void)setNeedsDisplay; +// - (void)setNeedsDisplayInRect:(CGRect)rect; + +// @property(nonatomic) BOOL clipsToBounds; +// @property(nullable, nonatomic,copy) UIColor *backgroundColor __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic) CGFloat alpha; +// @property(nonatomic,getter=isOpaque) BOOL opaque; +// @property(nonatomic) BOOL clearsContextBeforeDrawing; +// @property(nonatomic,getter=isHidden) BOOL hidden; +// @property(nonatomic) UIViewContentMode contentMode; +// @property(nonatomic) CGRect contentStretch __attribute__((availability(ios,introduced=3.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// @property(nullable, nonatomic,strong) UIView *maskView __attribute__((availability(ios,introduced=8.0))); + + + + + + + +// @property(null_resettable, nonatomic, strong) UIColor *tintColor __attribute__((availability(ios,introduced=7.0))); + + + + + + + +// @property(nonatomic) UIViewTintAdjustmentMode tintAdjustmentMode __attribute__((availability(ios,introduced=7.0))); + + + + +// - (void)tintColorDidChange __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +// @interface UIView(UIViewAnimation) + +// + (void)setAnimationsEnabled:(BOOL)enabled; +@property(class, nonatomic, readonly) BOOL areAnimationsEnabled; +// + (void)performWithoutAnimation:(void (__attribute__((noescape)) ^)(void))actionsWithoutAnimation __attribute__((availability(ios,introduced=7.0))); + +@property(class, nonatomic, readonly) NSTimeInterval inheritedAnimationDuration __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + +// @interface UIView(UIViewAnimationWithBlocks) + +// + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=4.0))); + +// + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=4.0))); + +// + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations __attribute__((availability(ios,introduced=4.0))); + + +// + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=7.0))); + +// + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ _Nullable)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=4.0))); + +// + (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=4.0))); + + + +// + (void)performSystemAnimation:(UISystemAnimation)animation onViews:(NSArray<__kindof UIView *> *)views options:(UIViewAnimationOptions)options animations:(void (^ _Nullable)(void))parallelAnimations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=7.0))); + + +// + (void)modifyAnimationsWithRepeatCount:(CGFloat)count autoreverses:(BOOL)autoreverses animations:(void(__attribute__((noescape)) ^)(void))animations __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(tvos,introduced=12.0))); + +/* @end */ + + +// @interface UIView (UIViewKeyframeAnimations) + +// + (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=7.0))); +// + (void)addKeyframeWithRelativeStartTime:(double)frameStartTime relativeDuration:(double)frameDuration animations:(void (^)(void))animations __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +// @interface UIView (UIViewGestureRecognizers) + +// @property(nullable, nonatomic,copy) NSArray<__kindof UIGestureRecognizer *> *gestureRecognizers __attribute__((availability(ios,introduced=3.2))); + +// - (void)addGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer __attribute__((availability(ios,introduced=3.2))); +// - (void)removeGestureRecognizer:(UIGestureRecognizer*)gestureRecognizer __attribute__((availability(ios,introduced=3.2))); + + + + +// - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + + +// @interface UIView (UIViewMotionEffects) + + + + + + +// - (void)addMotionEffect:(UIMotionEffect *)effect __attribute__((availability(ios,introduced=7.0))); + + + +// - (void)removeMotionEffect:(UIMotionEffect *)effect __attribute__((availability(ios,introduced=7.0))); + +// @property (copy, nonatomic) NSArray<__kindof UIMotionEffect *> *motionEffects __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + + + + + + +typedef NSInteger UILayoutConstraintAxis; enum { + UILayoutConstraintAxisHorizontal = 0, + UILayoutConstraintAxisVertical = 1 +}; + + + + + + +// @interface UIView (UIConstraintBasedLayoutInstallingConstraints) + +// @property(nonatomic,readonly) NSArray<__kindof NSLayoutConstraint *> *constraints __attribute__((availability(ios,introduced=6.0))); + +// - (void)addConstraint:(NSLayoutConstraint *)constraint __attribute__((availability(ios,introduced=6.0))); +// - (void)addConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints __attribute__((availability(ios,introduced=6.0))); +// - (void)removeConstraint:(NSLayoutConstraint *)constraint __attribute__((availability(ios,introduced=6.0))); +// - (void)removeConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints __attribute__((availability(ios,introduced=6.0))); +/* @end */ + +// @interface UIView (UIConstraintBasedLayoutCoreMethods) +// - (void)updateConstraintsIfNeeded __attribute__((availability(ios,introduced=6.0))); +// - (void)updateConstraints __attribute__((availability(ios,introduced=6.0))) __attribute__((objc_requires_super)); +// - (BOOL)needsUpdateConstraints __attribute__((availability(ios,introduced=6.0))); +// - (void)setNeedsUpdateConstraints __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + + + +// @interface UIView (UIConstraintBasedCompatibility) + + + + + + + +// @property(nonatomic) BOOL translatesAutoresizingMaskIntoConstraints __attribute__((availability(ios,introduced=6.0))); + + + +@property(class, nonatomic, readonly) BOOL requiresConstraintBasedLayout __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + + + + +// @interface UIView (UIConstraintBasedLayoutLayering) +// - (CGRect)alignmentRectForFrame:(CGRect)frame __attribute__((availability(ios,introduced=6.0))); +// - (CGRect)frameForAlignmentRect:(CGRect)alignmentRect __attribute__((availability(ios,introduced=6.0))); + + + +// @property(nonatomic, readonly) UIEdgeInsets alignmentRectInsets __attribute__((availability(ios,introduced=6.0))); + +// - (UIView *)viewForBaselineLayout __attribute__((availability(ios,introduced=6.0,deprecated=9.0,message="Override -viewForFirstBaselineLayout or -viewForLastBaselineLayout as appropriate, instead"))) __attribute__((availability(tvos,unavailable))); +// @property(readonly,strong) UIView *viewForFirstBaselineLayout __attribute__((availability(ios,introduced=9.0))); +// @property(readonly,strong) UIView *viewForLastBaselineLayout __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) const CGFloat UIViewNoIntrinsicMetric __attribute__((availability(ios,introduced=6.0))); +// @property(nonatomic, readonly) CGSize intrinsicContentSize __attribute__((availability(ios,introduced=6.0))); +// - (void)invalidateIntrinsicContentSize __attribute__((availability(ios,introduced=6.0))); + +// - (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=6.0))); +// - (void)setContentHuggingPriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=6.0))); + +// - (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=6.0))); +// - (void)setContentCompressionResistancePriority:(UILayoutPriority)priority forAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) const CGSize UILayoutFittingCompressedSize __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) const CGSize UILayoutFittingExpandedSize __attribute__((availability(ios,introduced=6.0))); + +// @interface UIView (UIConstraintBasedLayoutFittingSize) + + + +// - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize __attribute__((availability(ios,introduced=6.0))); +// - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority __attribute__((availability(ios,introduced=8.0))); +/* @end */ + + +// @interface UIView (UILayoutGuideSupport) + + + +// @property(nonatomic,readonly,copy) NSArray<__kindof UILayoutGuide *> *layoutGuides __attribute__((availability(ios,introduced=9.0))); + + + +// - (void)addLayoutGuide:(UILayoutGuide *)layoutGuide __attribute__((availability(ios,introduced=9.0))); + + + +// - (void)removeLayoutGuide:(UILayoutGuide *)layoutGuide __attribute__((availability(ios,introduced=9.0))); +/* @end */ + + +// @class NSLayoutXAxisAnchor; +#ifndef _REWRITER_typedef_NSLayoutXAxisAnchor +#define _REWRITER_typedef_NSLayoutXAxisAnchor +typedef struct objc_object NSLayoutXAxisAnchor; +typedef struct {} _objc_exc_NSLayoutXAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutYAxisAnchor +#define _REWRITER_typedef_NSLayoutYAxisAnchor +typedef struct objc_object NSLayoutYAxisAnchor; +typedef struct {} _objc_exc_NSLayoutYAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + +// @interface UIView (UIViewLayoutConstraintCreation) + + +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *leadingAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *trailingAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *leftAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *rightAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *topAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *bottomAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutDimension *widthAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutDimension *heightAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutXAxisAnchor *centerXAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *centerYAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *firstBaselineAnchor __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic,readonly,strong) NSLayoutYAxisAnchor *lastBaselineAnchor __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + + + + + +// @interface UIView (UIConstraintBasedLayoutDebugging) + + + + +// - (NSArray<__kindof NSLayoutConstraint *> *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=6.0))); + + + + + + +// @property(nonatomic, readonly) BOOL hasAmbiguousLayout __attribute__((availability(ios,introduced=6.0))); + +// - (void)exerciseAmbiguityInLayout __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + + + +// @interface UILayoutGuide (UIConstraintBasedLayoutDebugging) + + + + +// - (NSArray<__kindof NSLayoutConstraint *> *)constraintsAffectingLayoutForAxis:(UILayoutConstraintAxis)axis __attribute__((availability(ios,introduced=10.0))); + + + + + +// @property(nonatomic, readonly) BOOL hasAmbiguousLayout __attribute__((availability(ios,introduced=10.0))); +/* @end */ + + +// @interface UIView (UIStateRestoration) +// @property (nullable, nonatomic, copy) NSString *restorationIdentifier __attribute__((availability(ios,introduced=6.0))); +// - (void) encodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +// - (void) decodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + +// @interface UIView (UISnapshotting) +// - (nullable UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates __attribute__((availability(ios,introduced=7.0))); +// - (nullable UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets __attribute__((availability(ios,introduced=7.0))); + +// - (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + +// @interface UIView (DeprecatedAnimations) + + + +// + (void)beginAnimations:(nullable NSString *)animationID context:(nullable void *)context __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)commitAnimations __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationDelegate:(nullable id)delegate __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationWillStartSelector:(nullable SEL)selector __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationDidStopSelector:(nullable SEL)selector __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationDuration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationDelay:(NSTimeInterval)delay __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationStartDate:(NSDate *)startDate __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationCurve:(UIViewAnimationCurve)curve __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationRepeatCount:(float)repeatCount __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); +// + (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the block-based animation API instead"))); + +/* @end */ + + +// @interface UIView (UserInterfaceStyle) +// @property (nonatomic) UIUserInterfaceStyle overrideUserInterfaceStyle __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @protocol UIPickerViewDataSource, UIPickerViewDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPickerView +#define _REWRITER_typedef_UIPickerView +typedef struct objc_object UIPickerView; +typedef struct {} _objc_exc_UIPickerView; +#endif + +struct UIPickerView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nullable,nonatomic,weak) id dataSource; +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic) BOOL showsSelectionIndicator __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="This property has no effect on iOS 7 and later."))); + + +// @property(nonatomic,readonly) NSInteger numberOfComponents; +// - (NSInteger)numberOfRowsInComponent:(NSInteger)component; +// - (CGSize)rowSizeForComponent:(NSInteger)component; + + + + +// - (nullable UIView *)viewForRow:(NSInteger)row forComponent:(NSInteger)component; + + +// - (void)reloadAllComponents; +// - (void)reloadComponent:(NSInteger)component; + + +// - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated; + +// - (NSInteger)selectedRowInComponent:(NSInteger)component; + +/* @end */ + + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIPickerViewDataSource +/* @required */ + + +// - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView; + + +// - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; +/* @end */ + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIPickerViewDelegate +/* @optional */ + + +// - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component __attribute__((availability(tvos,unavailable))); +// - (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component __attribute__((availability(tvos,unavailable))); + + + + +// - (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component __attribute__((availability(tvos,unavailable))); +// - (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +// - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view __attribute__((availability(tvos,unavailable))); + +// - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSUInteger UIControlEvents; enum { + UIControlEventTouchDown = 1 << 0, + UIControlEventTouchDownRepeat = 1 << 1, + UIControlEventTouchDragInside = 1 << 2, + UIControlEventTouchDragOutside = 1 << 3, + UIControlEventTouchDragEnter = 1 << 4, + UIControlEventTouchDragExit = 1 << 5, + UIControlEventTouchUpInside = 1 << 6, + UIControlEventTouchUpOutside = 1 << 7, + UIControlEventTouchCancel = 1 << 8, + + UIControlEventValueChanged = 1 << 12, + UIControlEventPrimaryActionTriggered __attribute__((availability(ios,introduced=9.0))) = 1 << 13, + + UIControlEventEditingDidBegin = 1 << 16, + UIControlEventEditingChanged = 1 << 17, + UIControlEventEditingDidEnd = 1 << 18, + UIControlEventEditingDidEndOnExit = 1 << 19, + + UIControlEventAllTouchEvents = 0x00000FFF, + UIControlEventAllEditingEvents = 0x000F0000, + UIControlEventApplicationReserved = 0x0F000000, + UIControlEventSystemReserved = 0xF0000000, + UIControlEventAllEvents = 0xFFFFFFFF +}; + +typedef NSInteger UIControlContentVerticalAlignment; enum { + UIControlContentVerticalAlignmentCenter = 0, + UIControlContentVerticalAlignmentTop = 1, + UIControlContentVerticalAlignmentBottom = 2, + UIControlContentVerticalAlignmentFill = 3, +}; + +typedef NSInteger UIControlContentHorizontalAlignment; enum { + UIControlContentHorizontalAlignmentCenter = 0, + UIControlContentHorizontalAlignmentLeft = 1, + UIControlContentHorizontalAlignmentRight = 2, + UIControlContentHorizontalAlignmentFill = 3, + UIControlContentHorizontalAlignmentLeading __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 4, + UIControlContentHorizontalAlignmentTrailing __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 5, +}; + +typedef NSUInteger UIControlState; enum { + UIControlStateNormal = 0, + UIControlStateHighlighted = 1 << 0, + UIControlStateDisabled = 1 << 1, + UIControlStateSelected = 1 << 2, + UIControlStateFocused __attribute__((availability(ios,introduced=9.0))) = 1 << 3, + UIControlStateApplication = 0x00FF0000, + UIControlStateReserved = 0xFF000000 +}; + +// @class UITouch; +#ifndef _REWRITER_typedef_UITouch +#define _REWRITER_typedef_UITouch +typedef struct objc_object UITouch; +typedef struct {} _objc_exc_UITouch; +#endif + +// @class UIEvent; +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIControl +#define _REWRITER_typedef_UIControl +typedef struct objc_object UIControl; +typedef struct {} _objc_exc_UIControl; +#endif + +struct UIControl_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + + +// @property(nonatomic,getter=isEnabled) BOOL enabled; +// @property(nonatomic,getter=isSelected) BOOL selected; +// @property(nonatomic,getter=isHighlighted) BOOL highlighted; +// @property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment; +// @property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment; +// @property(nonatomic, readonly) UIControlContentHorizontalAlignment effectiveContentHorizontalAlignment; + +// @property(nonatomic,readonly) UIControlState state; +// @property(nonatomic,readonly,getter=isTracking) BOOL tracking; +// @property(nonatomic,readonly,getter=isTouchInside) BOOL touchInside; + +// - (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event; +// - (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(nullable UIEvent *)event; +// - (void)endTrackingWithTouch:(nullable UITouch *)touch withEvent:(nullable UIEvent *)event; +// - (void)cancelTrackingWithEvent:(nullable UIEvent *)event; + + + + +// - (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; + + +// - (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents; + + +// @property(nonatomic,readonly) NSSet *allTargets; +// @property(nonatomic,readonly) UIControlEvents allControlEvents; + +// - (nullable NSArray *)actionsForTarget:(nullable id)target forControlEvent:(UIControlEvents)controlEvent; + + +// - (void)sendAction:(SEL)action to:(nullable id)target forEvent:(nullable UIEvent *)event; +// - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIRefreshControl +#define _REWRITER_typedef_UIRefreshControl +typedef struct objc_object UIRefreshControl; +typedef struct {} _objc_exc_UIRefreshControl; +#endif + +struct UIRefreshControl_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + + + + + + + +// - (instancetype)init; + +// @property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; + +// @property (null_resettable, nonatomic, strong) UIColor *tintColor; +// @property (nullable, nonatomic, strong) NSAttributedString *attributedTitle __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)beginRefreshing __attribute__((availability(ios,introduced=6.0))); + +// - (void)endRefreshing __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSInteger UIScrollViewIndicatorStyle; enum { + UIScrollViewIndicatorStyleDefault, + UIScrollViewIndicatorStyleBlack, + UIScrollViewIndicatorStyleWhite +}; + +typedef NSInteger UIScrollViewKeyboardDismissMode; enum { + UIScrollViewKeyboardDismissModeNone, + UIScrollViewKeyboardDismissModeOnDrag, + UIScrollViewKeyboardDismissModeInteractive, +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSInteger UIScrollViewIndexDisplayMode; enum { + UIScrollViewIndexDisplayModeAutomatic, + UIScrollViewIndexDisplayModeAlwaysHidden, +} __attribute__((availability(tvos,introduced=10.2))); + +typedef NSInteger UIScrollViewContentInsetAdjustmentBehavior; enum { + UIScrollViewContentInsetAdjustmentAutomatic, + UIScrollViewContentInsetAdjustmentScrollableAxes, + UIScrollViewContentInsetAdjustmentNever, + UIScrollViewContentInsetAdjustmentAlways, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef CGFloat UIScrollViewDecelerationRate __attribute__((swift_wrapper(enum))); + +extern "C" __attribute__((visibility ("default"))) const UIScrollViewDecelerationRate UIScrollViewDecelerationRateNormal __attribute__((availability(ios,introduced=3.0))); +extern "C" __attribute__((visibility ("default"))) const UIScrollViewDecelerationRate UIScrollViewDecelerationRateFast __attribute__((availability(ios,introduced=3.0))); + +// @class UIEvent; +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_UIPanGestureRecognizer +#define _REWRITER_typedef_UIPanGestureRecognizer +typedef struct objc_object UIPanGestureRecognizer; +typedef struct {} _objc_exc_UIPanGestureRecognizer; +#endif + +#ifndef _REWRITER_typedef_UIPinchGestureRecognizer +#define _REWRITER_typedef_UIPinchGestureRecognizer +typedef struct objc_object UIPinchGestureRecognizer; +typedef struct {} _objc_exc_UIPinchGestureRecognizer; +#endif + +// @protocol UIScrollViewDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIScrollView +#define _REWRITER_typedef_UIScrollView +typedef struct objc_object UIScrollView; +typedef struct {} _objc_exc_UIScrollView; +#endif + +struct UIScrollView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nonatomic) CGPoint contentOffset; +// @property(nonatomic) CGSize contentSize; +// @property(nonatomic) UIEdgeInsets contentInset; + + + + +// @property(nonatomic, readonly) UIEdgeInsets adjustedContentInset __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// - (void)adjustedContentInsetDidChange __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((objc_requires_super)); + + + + +// @property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +// @property(nonatomic) BOOL automaticallyAdjustsScrollIndicatorInsets __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property(nonatomic,readonly,strong) UILayoutGuide *contentLayoutGuide __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +// @property(nonatomic,readonly,strong) UILayoutGuide *frameLayoutGuide __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic,getter=isDirectionalLockEnabled) BOOL directionalLockEnabled; +// @property(nonatomic) BOOL bounces; +// @property(nonatomic) BOOL alwaysBounceVertical; +// @property(nonatomic) BOOL alwaysBounceHorizontal; +// @property(nonatomic,getter=isPagingEnabled) BOOL pagingEnabled __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled; + +// @property(nonatomic) BOOL showsVerticalScrollIndicator; +// @property(nonatomic) BOOL showsHorizontalScrollIndicator; +// @property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle; + +// @property(nonatomic) UIEdgeInsets verticalScrollIndicatorInsets __attribute__((availability(ios,introduced=11.1))) __attribute__((availability(tvos,introduced=11.1))); +// @property(nonatomic) UIEdgeInsets horizontalScrollIndicatorInsets __attribute__((availability(ios,introduced=11.1))) __attribute__((availability(tvos,introduced=11.1))); +// @property(nonatomic) UIEdgeInsets scrollIndicatorInsets; +// - (UIEdgeInsets)scrollIndicatorInsets __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="The scrollIndicatorInsets getter is deprecated, use the verticalScrollIndicatorInsets and horizontalScrollIndicatorInsets getters instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="The scrollIndicatorInsets getter is deprecated, use the verticalScrollIndicatorInsets and horizontalScrollIndicatorInsets getters instead."))); +// @property(nonatomic) UIScrollViewDecelerationRate decelerationRate __attribute__((availability(ios,introduced=3.0))); +// @property(nonatomic) UIScrollViewIndexDisplayMode indexDisplayMode __attribute__((availability(tvos,introduced=10.2))); + +// - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; +// - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated; + +// - (void)flashScrollIndicators; +// @property(nonatomic,readonly,getter=isTracking) BOOL tracking; +// @property(nonatomic,readonly,getter=isDragging) BOOL dragging; +// @property(nonatomic,readonly,getter=isDecelerating) BOOL decelerating; + +// @property(nonatomic) BOOL delaysContentTouches; +// @property(nonatomic) BOOL canCancelContentTouches; + + + + + +// - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(nullable UIEvent *)event inContentView:(UIView *)view; + + + +// - (BOOL)touchesShouldCancelInContentView:(UIView *)view; +// @property(nonatomic) CGFloat minimumZoomScale; +// @property(nonatomic) CGFloat maximumZoomScale; + +// @property(nonatomic) CGFloat zoomScale __attribute__((availability(ios,introduced=3.0))); +// - (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))); +// - (void)zoomToRect:(CGRect)rect animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))); + +// @property(nonatomic) BOOL bouncesZoom; + +// @property(nonatomic,readonly,getter=isZooming) BOOL zooming; +// @property(nonatomic,readonly,getter=isZoomBouncing) BOOL zoomBouncing; + + + +// @property(nonatomic) BOOL scrollsToTop __attribute__((availability(tvos,unavailable))); + + + + + +// @property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer __attribute__((availability(ios,introduced=5.0))); + +// @property(nullable, nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic, readonly) UIGestureRecognizer *directionalPressGestureRecognizer __attribute__((availability(tvos,introduced=9.0,deprecated=11.0,message="Configuring the panGestureRecognizer for indirect scrolling automatically supports directional presses now, so this property is no longer useful."))); + +// @property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode __attribute__((availability(ios,introduced=7.0))); + +// @property (nonatomic, strong, nullable) UIRefreshControl *refreshControl __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @protocol UIScrollViewDelegate + +/* @optional */ + +// - (void)scrollViewDidScroll:(UIScrollView *)scrollView; +// - (void)scrollViewDidZoom:(UIScrollView *)scrollView __attribute__((availability(ios,introduced=3.2))); + + +// - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; + +// - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset __attribute__((availability(ios,introduced=5.0))); + +// - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; + +// - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; +// - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; + +// - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; + +// - (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; +// - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view __attribute__((availability(ios,introduced=3.2))); +// - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; + +// - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView; +// - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView; + + + +// - (void)scrollViewDidChangeAdjustedContentInset:(UIScrollView *)scrollView __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + + + + + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIPickerViewAccessibilityDelegate + +/* @optional */ +// - (nullable NSString *)pickerView:(UIPickerView *)pickerView accessibilityLabelForComponent:(NSInteger)component; +// - (nullable NSString *)pickerView:(UIPickerView *)pickerView accessibilityHintForComponent:(NSInteger)component; +// - (NSArray *)pickerView:(UIPickerView *)pickerView accessibilityUserInputLabelsForComponent:(NSInteger)component __attribute__((availability(ios,introduced=13.0))); + + +// - (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView accessibilityAttributedLabelForComponent:(NSInteger)component __attribute__((availability(ios,introduced=11.0))); +// - (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView accessibilityAttributedHintForComponent:(NSInteger)component __attribute__((availability(ios,introduced=11.0))); +// - (NSArray *)pickerView:(UIPickerView *)pickerView accessibilityAttributedUserInputLabelsForComponent:(NSInteger)component __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + + + + + + + +// @protocol UIScrollViewAccessibilityDelegate + +/* @optional */ +// - (nullable NSString *)accessibilityScrollStatusForScrollView:(UIScrollView *)scrollView; + + +// - (nullable NSAttributedString *)accessibilityAttributedScrollStatusForScrollView:(UIScrollView *)scrollView __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + +// @interface UIView (UIAccessibilityInvertColors) +// @property(nonatomic) BOOL accessibilityIgnoresInvertColors __attribute__((availability(ios,introduced=11_0))) __attribute__((availability(tvos,introduced=11_0))); +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +typedef uint64_t UIAccessibilityTraits __attribute__((swift_wrapper(enum))); + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitNone; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitButton; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitLink; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitHeader __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitSearchField; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitImage; + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitSelected; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitPlaysSound; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitKeyboardKey; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitStaticText; + + + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitSummaryElement; + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitNotEnabled; + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitUpdatesFrequently; + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitStartsMediaSession __attribute__((availability(ios,introduced=4.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitAdjustable __attribute__((availability(ios,introduced=4.0))); + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitAllowsDirectInteraction __attribute__((availability(ios,introduced=5.0))); + + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitCausesPageTurn __attribute__((availability(ios,introduced=5.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTraits UIAccessibilityTraitTabBar __attribute__((availability(ios,introduced=10.0))); +typedef uint32_t UIAccessibilityNotifications __attribute__((swift_wrapper(enum))); + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityScreenChangedNotification; + + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityLayoutChangedNotification; + + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityAnnouncementNotification __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityPageScrolledNotification __attribute__((availability(ios,introduced=4.2))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityPauseAssistiveTechnologyNotification __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityNotifications UIAccessibilityResumeAssistiveTechnologyNotification __attribute__((availability(ios,introduced=8.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityAnnouncementDidFinishNotification __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityAnnouncementKeyStringValue __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityAnnouncementKeyWasSuccessful __attribute__((availability(ios,introduced=6.0))); + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityElementFocusedNotification __attribute__((availability(ios,introduced=9.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityFocusedElementKey __attribute__((availability(ios,introduced=9.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityUnfocusedElementKey __attribute__((availability(ios,introduced=9.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityAssistiveTechnologyKey __attribute__((availability(ios,introduced=9.0))); + +typedef NSString * UIAccessibilityAssistiveTechnologyIdentifier __attribute__((swift_wrapper(enum))); + + + + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityAssistiveTechnologyIdentifier const UIAccessibilityNotificationSwitchControlIdentifier __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityAssistiveTechnologyIdentifier const UIAccessibilityNotificationVoiceOverIdentifier __attribute__((availability(ios,introduced=9.0))); + + + + + +typedef NSInteger UIAccessibilityNavigationStyle; enum { + + + + + UIAccessibilityNavigationStyleAutomatic = 0, + + + + + UIAccessibilityNavigationStyleSeparate = 1, + + + + + + UIAccessibilityNavigationStyleCombined = 2, +} __attribute__((availability(ios,introduced=8.0))); + + +typedef NSInteger UIAccessibilityContainerType; enum { + UIAccessibilityContainerTypeNone = 0, + UIAccessibilityContainerTypeDataTable, + UIAccessibilityContainerTypeList, + UIAccessibilityContainerTypeLandmark, + UIAccessibilityContainerTypeSemanticGroup __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +} __attribute__((availability(ios,introduced=11.0))); + + + + +typedef NSString * UIAccessibilityTextualContext __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextWordProcessing __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextNarrative __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextMessaging __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextSpreadsheet __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextFileSystem __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextSourceCode __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) UIAccessibilityTextualContext const UIAccessibilityTextualContextConsole __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributePunctuation __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributeLanguage __attribute__((availability(ios,introduced=7.0))); + + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributePitch __attribute__((availability(ios,introduced=7.0))); + + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributeQueueAnnouncement __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributeIPANotation __attribute__((availability(ios,introduced=11.0))); + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilitySpeechAttributeSpellOut __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilityTextAttributeHeadingLevel __attribute__((availability(ios,introduced=11.0))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilityTextAttributeCustom __attribute__((availability(ios,introduced=11.0))); + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const UIAccessibilityTextAttributeContext __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +// @interface NSObject (UIAccessibilityContainer) + + + + +// - (NSInteger)accessibilityElementCount; + + + + + +// - (nullable id)accessibilityElementAtIndex:(NSInteger)index; + + + + + +// - (NSInteger)indexOfAccessibilityElement:(id)element; + + + + +// @property (nullable, nonatomic, strong) NSArray *accessibilityElements __attribute__((availability(ios,introduced=8.0))); + + + + +// @property (nonatomic) UIAccessibilityContainerType accessibilityContainerType __attribute__((availability(ios,introduced=11.0))); + +/* @end */ + + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) // @protocol UIAccessibilityContainerDataTableCell +/* @required */ + + + +// - (NSRange)accessibilityRowRange; +// - (NSRange)accessibilityColumnRange; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) // @protocol UIAccessibilityContainerDataTable +/* @required */ + + + +// - (nullable id)accessibilityDataTableCellElementForRow:(NSUInteger)row column:(NSUInteger)column; + +// - (NSUInteger)accessibilityRowCount; +// - (NSUInteger)accessibilityColumnCount; + +/* @optional */ + + +// - (nullable NSArray> *)accessibilityHeaderElementsForRow:(NSUInteger)row; +// - (nullable NSArray> *)accessibilityHeaderElementsForColumn:(NSUInteger)column; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIAccessibilityCustomAction +#define _REWRITER_typedef_UIAccessibilityCustomAction +typedef struct objc_object UIAccessibilityCustomAction; +typedef struct {} _objc_exc_UIAccessibilityCustomAction; +#endif + +struct UIAccessibilityCustomAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithName:(NSString *)name target:(nullable id)target selector:(SEL)selector; +// - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName target:(nullable id)target selector:(SEL)selector __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef BOOL(*UIAccessibilityCustomActionHandler)(UIAccessibilityCustomAction *customAction); +// - (instancetype)initWithName:(NSString *)name actionHandler:(UIAccessibilityCustomActionHandler)actionHandler __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName actionHandler:(UIAccessibilityCustomActionHandler)actionHandler __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property (nonatomic, copy) NSString *name; + + + + + +// @property (nonatomic, copy) NSAttributedString *attributedName __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +// @property (nullable, nonatomic, weak) id target; + + + + + + + +// @property (nonatomic, assign) SEL selector; + + + + +// @property (nonatomic, copy, nullable) UIAccessibilityCustomActionHandler actionHandler __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + + + +typedef NSInteger UITextAutocapitalizationType; enum { + UITextAutocapitalizationTypeNone, + UITextAutocapitalizationTypeWords, + UITextAutocapitalizationTypeSentences, + UITextAutocapitalizationTypeAllCharacters, +}; +typedef NSInteger UITextAutocorrectionType; enum { + UITextAutocorrectionTypeDefault, + UITextAutocorrectionTypeNo, + UITextAutocorrectionTypeYes, +}; + + + + + + +typedef NSInteger UITextSpellCheckingType; enum { + UITextSpellCheckingTypeDefault, + UITextSpellCheckingTypeNo, + UITextSpellCheckingTypeYes, +} __attribute__((availability(ios,introduced=5.0))); + + + + + +typedef NSInteger UITextSmartQuotesType; enum { + UITextSmartQuotesTypeDefault, + UITextSmartQuotesTypeNo, + UITextSmartQuotesTypeYes, +} __attribute__((availability(ios,introduced=11.0))); + + + + + +typedef NSInteger UITextSmartDashesType; enum { + UITextSmartDashesTypeDefault, + UITextSmartDashesTypeNo, + UITextSmartDashesTypeYes, +} __attribute__((availability(ios,introduced=11.0))); + + + + + +typedef NSInteger UITextSmartInsertDeleteType; enum { + UITextSmartInsertDeleteTypeDefault, + UITextSmartInsertDeleteTypeNo, + UITextSmartInsertDeleteTypeYes, +} __attribute__((availability(ios,introduced=11.0))); +typedef NSInteger UIKeyboardType; enum { + UIKeyboardTypeDefault, + UIKeyboardTypeASCIICapable, + UIKeyboardTypeNumbersAndPunctuation, + UIKeyboardTypeURL, + UIKeyboardTypeNumberPad, + UIKeyboardTypePhonePad, + UIKeyboardTypeNamePhonePad, + UIKeyboardTypeEmailAddress, + UIKeyboardTypeDecimalPad __attribute__((availability(ios,introduced=4.1))), + UIKeyboardTypeTwitter __attribute__((availability(ios,introduced=5.0))), + UIKeyboardTypeWebSearch __attribute__((availability(ios,introduced=7.0))), + UIKeyboardTypeASCIICapableNumberPad __attribute__((availability(ios,introduced=10.0))), + + UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, + +}; +typedef NSInteger UIKeyboardAppearance; enum { + UIKeyboardAppearanceDefault, + UIKeyboardAppearanceDark __attribute__((availability(ios,introduced=7.0))), + UIKeyboardAppearanceLight __attribute__((availability(ios,introduced=7.0))), + UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark, +}; +typedef NSInteger UIReturnKeyType; enum { + UIReturnKeyDefault, + UIReturnKeyGo, + UIReturnKeyGoogle, + UIReturnKeyJoin, + UIReturnKeyNext, + UIReturnKeyRoute, + UIReturnKeySearch, + UIReturnKeySend, + UIReturnKeyYahoo, + UIReturnKeyDone, + UIReturnKeyEmergencyCall, + UIReturnKeyContinue __attribute__((availability(ios,introduced=9.0))), +}; + +typedef NSString * UITextContentType __attribute__((swift_wrapper(enum))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=12.0))) +#ifndef _REWRITER_typedef_UITextInputPasswordRules +#define _REWRITER_typedef_UITextInputPasswordRules +typedef struct objc_object UITextInputPasswordRules; +typedef struct {} _objc_exc_UITextInputPasswordRules; +#endif + +struct UITextInputPasswordRules_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic,readonly) NSString *passwordRulesDescriptor; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); +// + (instancetype)passwordRulesWithDescriptor:(NSString *)passwordRulesDescriptor; + +/* @end */ + + + + + + + + +// @protocol UITextInputTraits + +/* @optional */ + +// @property(nonatomic) UITextAutocapitalizationType autocapitalizationType; +// @property(nonatomic) UITextAutocorrectionType autocorrectionType; +// @property(nonatomic) UITextSpellCheckingType spellCheckingType __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic) UITextSmartQuotesType smartQuotesType __attribute__((availability(ios,introduced=11.0))); +// @property(nonatomic) UITextSmartDashesType smartDashesType __attribute__((availability(ios,introduced=11.0))); +// @property(nonatomic) UITextSmartInsertDeleteType smartInsertDeleteType __attribute__((availability(ios,introduced=11.0))); +// @property(nonatomic) UIKeyboardType keyboardType; +// @property(nonatomic) UIKeyboardAppearance keyboardAppearance; +// @property(nonatomic) UIReturnKeyType returnKeyType; +// @property(nonatomic) BOOL enablesReturnKeyAutomatically; +// @property(nonatomic,getter=isSecureTextEntry) BOOL secureTextEntry; + + +// @property(null_unspecified,nonatomic,copy) UITextContentType textContentType __attribute__((availability(ios,introduced=10.0))); + + + + + + +// @property(nullable,nonatomic,copy) UITextInputPasswordRules *passwordRules __attribute__((availability(ios,introduced=12.0))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeNamePrefix __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeGivenName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeMiddleName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeFamilyName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeNameSuffix __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeNickname __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeJobTitle __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeOrganizationName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeLocation __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeFullStreetAddress __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeStreetAddressLine1 __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeStreetAddressLine2 __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeAddressCity __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeAddressState __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeAddressCityAndState __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeSublocality __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeCountryName __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypePostalCode __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeTelephoneNumber __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeEmailAddress __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeURL __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeCreditCardNumber __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeUsername __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypePassword __attribute__((availability(ios,introduced=11.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeNewPassword __attribute__((availability(ios,introduced=12.0))); +extern "C" __attribute__((visibility ("default"))) UITextContentType const UITextContentTypeOneTimeCode __attribute__((availability(ios,introduced=12.0))); +#pragma clang assume_nonnull end + + +// @class UIFont; +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + +// @class UIFontDescriptor; +#ifndef _REWRITER_typedef_UIFontDescriptor +#define _REWRITER_typedef_UIFontDescriptor +typedef struct objc_object UIFontDescriptor; +typedef struct {} _objc_exc_UIFontDescriptor; +#endif + + + + + + + + +// @class NSParagraphStyle; +#ifndef _REWRITER_typedef_NSParagraphStyle +#define _REWRITER_typedef_NSParagraphStyle +typedef struct objc_object NSParagraphStyle; +typedef struct {} _objc_exc_NSParagraphStyle; +#endif + +// @class NSTextTab; +#ifndef _REWRITER_typedef_NSTextTab +#define _REWRITER_typedef_NSTextTab +typedef struct objc_object NSTextTab; +typedef struct {} _objc_exc_NSTextTab; +#endif + + + + + + +extern "C" { +#pragma clang assume_nonnull begin + + + + + +typedef const struct __attribute__((objc_bridge_related(NSParagraphStyle,,))) __CTParagraphStyle * CTParagraphStyleRef; + + + + + + + +CFTypeID CTParagraphStyleGetTypeID( void ) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +typedef uint8_t CTTextAlignment; enum { + kCTTextAlignmentLeft = 0, + kCTTextAlignmentRight = 1, + kCTTextAlignmentCenter = 2, + kCTTextAlignmentJustified = 3, + kCTTextAlignmentNatural = 4, + + kCTLeftTextAlignment __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Deprecated"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Deprecated"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + = kCTTextAlignmentLeft, + kCTRightTextAlignment __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Deprecated"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Deprecated"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + = kCTTextAlignmentRight, + kCTCenterTextAlignment __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Deprecated"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Deprecated"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + = kCTTextAlignmentCenter, + kCTJustifiedTextAlignment __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Deprecated"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Deprecated"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + = kCTTextAlignmentJustified, + kCTNaturalTextAlignment __attribute__((availability(macos,introduced=10.5,deprecated=10.11,message="Deprecated"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Deprecated"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + = kCTTextAlignmentNatural +}; +typedef uint8_t CTLineBreakMode; enum { + kCTLineBreakByWordWrapping = 0, + kCTLineBreakByCharWrapping = 1, + kCTLineBreakByClipping = 2, + kCTLineBreakByTruncatingHead = 3, + kCTLineBreakByTruncatingTail = 4, + kCTLineBreakByTruncatingMiddle = 5 +}; +typedef int8_t CTWritingDirection; enum { + kCTWritingDirectionNatural = -1, + kCTWritingDirectionLeftToRight = 0, + kCTWritingDirectionRightToLeft = 1 +}; +typedef uint32_t CTParagraphStyleSpecifier; enum { + kCTParagraphStyleSpecifierAlignment = 0, + kCTParagraphStyleSpecifierFirstLineHeadIndent = 1, + kCTParagraphStyleSpecifierHeadIndent = 2, + kCTParagraphStyleSpecifierTailIndent = 3, + kCTParagraphStyleSpecifierTabStops = 4, + kCTParagraphStyleSpecifierDefaultTabInterval = 5, + kCTParagraphStyleSpecifierLineBreakMode = 6, + kCTParagraphStyleSpecifierLineHeightMultiple = 7, + kCTParagraphStyleSpecifierMaximumLineHeight = 8, + kCTParagraphStyleSpecifierMinimumLineHeight = 9, + kCTParagraphStyleSpecifierLineSpacing __attribute__((availability(macos,introduced=10.5,deprecated=10.8,message="See documentation for replacements"))) __attribute__((availability(ios,introduced=3.2,deprecated=6.0,message="See documentation for replacements"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) = 10, + kCTParagraphStyleSpecifierParagraphSpacing = 11, + kCTParagraphStyleSpecifierParagraphSpacingBefore = 12, + kCTParagraphStyleSpecifierBaseWritingDirection = 13, + kCTParagraphStyleSpecifierMaximumLineSpacing = 14, + kCTParagraphStyleSpecifierMinimumLineSpacing = 15, + kCTParagraphStyleSpecifierLineSpacingAdjustment = 16, + kCTParagraphStyleSpecifierLineBoundsOptions = 17, + + kCTParagraphStyleSpecifierCount +}; +typedef struct CTParagraphStyleSetting +{ + CTParagraphStyleSpecifier spec; + size_t valueSize; + const void * value; + +} CTParagraphStyleSetting; +CTParagraphStyleRef CTParagraphStyleCreate( + const CTParagraphStyleSetting * _Nullable settings, + size_t settingCount ) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +CTParagraphStyleRef CTParagraphStyleCreateCopy( + CTParagraphStyleRef paragraphStyle ) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +bool CTParagraphStyleGetValueForSpecifier( + CTParagraphStyleRef paragraphStyle, + CTParagraphStyleSpecifier spec, + size_t valueBufferSize, + void * valueBuffer ) __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +#pragma clang assume_nonnull end + + +} + + + +#pragma clang assume_nonnull begin + + + + +typedef NSInteger NSTextAlignment; enum { + NSTextAlignmentLeft = 0, + + NSTextAlignmentCenter = 1, + NSTextAlignmentRight = 2, + + + + + NSTextAlignmentJustified = 3, + NSTextAlignmentNatural = 4 +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSInteger NSWritingDirection; enum { + NSWritingDirectionNatural = -1, + NSWritingDirectionLeftToRight = 0, + NSWritingDirectionRightToLeft = 1 +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + + +extern "C" __attribute__((visibility ("default"))) CTTextAlignment NSTextAlignmentToCTTextAlignment(NSTextAlignment nsTextAlignment) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSTextAlignment NSTextAlignmentFromCTTextAlignment(CTTextAlignment ctTextAlignment) __attribute__((availability(ios,introduced=6.0))); +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +// @protocol UIKeyInput + +// @property(nonatomic, readonly) BOOL hasText; +// - (void)insertText:(NSString *)text; +// - (void)deleteBackward; + +/* @end */ + + + + + + +// @class NSTextAlternatives; +#ifndef _REWRITER_typedef_NSTextAlternatives +#define _REWRITER_typedef_NSTextAlternatives +typedef struct objc_object NSTextAlternatives; +typedef struct {} _objc_exc_NSTextAlternatives; +#endif + +// @class UITextPosition; +#ifndef _REWRITER_typedef_UITextPosition +#define _REWRITER_typedef_UITextPosition +typedef struct objc_object UITextPosition; +typedef struct {} _objc_exc_UITextPosition; +#endif + +// @class UITextRange; +#ifndef _REWRITER_typedef_UITextRange +#define _REWRITER_typedef_UITextRange +typedef struct objc_object UITextRange; +typedef struct {} _objc_exc_UITextRange; +#endif + +// @class UITextSelectionRect; +#ifndef _REWRITER_typedef_UITextSelectionRect +#define _REWRITER_typedef_UITextSelectionRect +typedef struct objc_object UITextSelectionRect; +typedef struct {} _objc_exc_UITextSelectionRect; +#endif + +// @class UIBarButtonItemGroup; +#ifndef _REWRITER_typedef_UIBarButtonItemGroup +#define _REWRITER_typedef_UIBarButtonItemGroup +typedef struct objc_object UIBarButtonItemGroup; +typedef struct {} _objc_exc_UIBarButtonItemGroup; +#endif + + +// @protocol UITextInputTokenizer; +// @protocol UITextInputDelegate; + +typedef NSInteger UITextStorageDirection; enum { + UITextStorageDirectionForward = 0, + UITextStorageDirectionBackward +}; + +typedef NSInteger UITextLayoutDirection; enum { + UITextLayoutDirectionRight = 2, + UITextLayoutDirectionLeft, + UITextLayoutDirectionUp, + UITextLayoutDirectionDown +}; + +typedef NSInteger UITextDirection __attribute__((swift_wrapper(enum))); + +typedef NSInteger UITextGranularity; enum { + UITextGranularityCharacter, + UITextGranularityWord, + UITextGranularitySentence, + UITextGranularityParagraph, + UITextGranularityLine, + UITextGranularityDocument +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.1))) +#ifndef _REWRITER_typedef_UIDictationPhrase +#define _REWRITER_typedef_UIDictationPhrase +typedef struct objc_object UIDictationPhrase; +typedef struct {} _objc_exc_UIDictationPhrase; +#endif + +struct UIDictationPhrase_IMPL { + struct NSObject_IMPL NSObject_IVARS; + NSString *_text; + NSArray * _Nullable _alternativeInterpretations; +}; + + + + + +// @property (nonatomic, readonly) NSString *text; +// @property (nullable, nonatomic, readonly) NSArray *alternativeInterpretations; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UITextInputAssistantItem +#define _REWRITER_typedef_UITextInputAssistantItem +typedef struct objc_object UITextInputAssistantItem; +typedef struct {} _objc_exc_UITextInputAssistantItem; +#endif + +struct UITextInputAssistantItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readwrite, assign) BOOL allowsHidingShortcuts; + +// @property (nonatomic, readwrite, copy) NSArray *leadingBarButtonGroups; + +// @property (nonatomic, readwrite, copy) NSArray *trailingBarButtonGroups; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UITextPlaceholder +#define _REWRITER_typedef_UITextPlaceholder +typedef struct objc_object UITextPlaceholder; +typedef struct {} _objc_exc_UITextPlaceholder; +#endif + +struct UITextPlaceholder_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) NSArray *rects; +/* @end */ + + +typedef NSInteger UITextAlternativeStyle; enum { + UITextAlternativeStyleNone, + UITextAlternativeStyleLowConfidence +}; + +// @protocol UITextInput +/* @required */ + + +// - (nullable NSString *)textInRange:(UITextRange *)range; +// - (void)replaceRange:(UITextRange *)range withText:(NSString *)text; + + + + +// @property (nullable, readwrite, copy) UITextRange *selectedTextRange; +// @property (nullable, nonatomic, readonly) UITextRange *markedTextRange; +// @property (nullable, nonatomic, copy) NSDictionary *markedTextStyle; +// - (void)setMarkedText:(nullable NSString *)markedText selectedRange:(NSRange)selectedRange; +// - (void)unmarkText; + + +// @property (nonatomic, readonly) UITextPosition *beginningOfDocument; +// @property (nonatomic, readonly) UITextPosition *endOfDocument; + + +// - (nullable UITextRange *)textRangeFromPosition:(UITextPosition *)fromPosition toPosition:(UITextPosition *)toPosition; +// - (nullable UITextPosition *)positionFromPosition:(UITextPosition *)position offset:(NSInteger)offset; +// - (nullable UITextPosition *)positionFromPosition:(UITextPosition *)position inDirection:(UITextLayoutDirection)direction offset:(NSInteger)offset; + + +// - (NSComparisonResult)comparePosition:(UITextPosition *)position toPosition:(UITextPosition *)other; +// - (NSInteger)offsetFromPosition:(UITextPosition *)from toPosition:(UITextPosition *)toPosition; + + +// @property (nullable, nonatomic, weak) id inputDelegate; + + +// @property (nonatomic, readonly) id tokenizer; + + +// - (nullable UITextPosition *)positionWithinRange:(UITextRange *)range farthestInDirection:(UITextLayoutDirection)direction; +// - (nullable UITextRange *)characterRangeByExtendingPosition:(UITextPosition *)position inDirection:(UITextLayoutDirection)direction; + + +// - (NSWritingDirection)baseWritingDirectionForPosition:(UITextPosition *)position inDirection:(UITextStorageDirection)direction; +// - (void)setBaseWritingDirection:(NSWritingDirection)writingDirection forRange:(UITextRange *)range; + + +// - (CGRect)firstRectForRange:(UITextRange *)range; +// - (CGRect)caretRectForPosition:(UITextPosition *)position; +// - (NSArray *)selectionRectsForRange:(UITextRange *)range __attribute__((availability(ios,introduced=6.0))); + + +// - (nullable UITextPosition *)closestPositionToPoint:(CGPoint)point; +// - (nullable UITextPosition *)closestPositionToPoint:(CGPoint)point withinRange:(UITextRange *)range; +// - (nullable UITextRange *)characterRangeAtPoint:(CGPoint)point; + +/* @optional */ + +// - (BOOL)shouldChangeTextInRange:(UITextRange *)range replacementText:(NSString *)text __attribute__((availability(ios,introduced=6.0))); + + + +// - (nullable NSDictionary *)textStylingAtPosition:(UITextPosition *)position inDirection:(UITextStorageDirection)direction; + + +// - (nullable UITextPosition *)positionWithinRange:(UITextRange *)range atCharacterOffset:(NSInteger)offset; +// - (NSInteger)characterOffsetOfPosition:(UITextPosition *)position withinRange:(UITextRange *)range; + + + +// @property (nonatomic, readonly) __kindof UIView *textInputView; + + + + +// @property (nonatomic) UITextStorageDirection selectionAffinity; + + + + + +// - (void)insertDictationResult:(NSArray *)dictationResult; + + +// - (void)dictationRecordingDidEnd; +// - (void)dictationRecognitionFailed; + + + + + +// @property(nonatomic, readonly) id insertDictationResultPlaceholder; +// - (CGRect)frameForDictationResultPlaceholder:(id)placeholder; + +// - (void)removeDictationResultPlaceholder:(id)placeholder willInsertResult:(BOOL)willInsertResult; + + + +// - (void)insertText:(NSString *)text alternatives:(NSArray *)alternatives style:(UITextAlternativeStyle)style; + + +// - (void)setAttributedMarkedText:(nullable NSAttributedString *)markedText selectedRange:(NSRange)selectedRange; + + + + +// - (UITextPlaceholder *)insertTextPlaceholderWithSize:(CGSize)size; + + +// - (void)removeTextPlaceholder:(UITextPlaceholder *)textPlaceholder; + + + + + +// - (void)beginFloatingCursorAtPoint:(CGPoint)point __attribute__((availability(ios,introduced=9.0))); +// - (void)updateFloatingCursorAtPoint:(CGPoint)point __attribute__((availability(ios,introduced=9.0))); +// - (void)endFloatingCursor __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextInputTextBackgroundColorKey __attribute__((availability(ios,introduced=3.2,deprecated=8.0,replacement="NSBackgroundColorAttributeName"))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UITextInputTextColorKey __attribute__((availability(ios,introduced=3.2,deprecated=8.0,replacement="NSForegroundColorAttributeName"))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UITextInputTextFontKey __attribute__((availability(ios,introduced=3.2,deprecated=8.0,replacement="NSFontAttributeName"))) __attribute__((availability(tvos,unavailable))); + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UITextPosition +#define _REWRITER_typedef_UITextPosition +typedef struct objc_object UITextPosition; +typedef struct {} _objc_exc_UITextPosition; +#endif + +struct UITextPosition_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UITextRange +#define _REWRITER_typedef_UITextRange +typedef struct objc_object UITextRange; +typedef struct {} _objc_exc_UITextRange; +#endif + +struct UITextRange_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly, getter=isEmpty) BOOL empty; +// @property (nonatomic, readonly) UITextPosition *start; +// @property (nonatomic, readonly) UITextPosition *end; + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UITextSelectionRect +#define _REWRITER_typedef_UITextSelectionRect +typedef struct objc_object UITextSelectionRect; +typedef struct {} _objc_exc_UITextSelectionRect; +#endif + +struct UITextSelectionRect_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) CGRect rect; +// @property (nonatomic, readonly) NSWritingDirection writingDirection; +// @property (nonatomic, readonly) BOOL containsStart; +// @property (nonatomic, readonly) BOOL containsEnd; +// @property (nonatomic, readonly) BOOL isVertical; + +/* @end */ + + + +// @protocol UITextInputDelegate + +// - (void)selectionWillChange:(nullable id )textInput; +// - (void)selectionDidChange:(nullable id )textInput; +// - (void)textWillChange:(nullable id )textInput; +// - (void)textDidChange:(nullable id )textInput; + +/* @end */ + + + + +// @protocol UITextInputTokenizer + +/* @required */ + +// - (nullable UITextRange *)rangeEnclosingPosition:(UITextPosition *)position withGranularity:(UITextGranularity)granularity inDirection:(UITextDirection)direction; +// - (BOOL)isPosition:(UITextPosition *)position atBoundary:(UITextGranularity)granularity inDirection:(UITextDirection)direction; +// - (nullable UITextPosition *)positionFromPosition:(UITextPosition *)position toBoundary:(UITextGranularity)granularity inDirection:(UITextDirection)direction; +// - (BOOL)isPosition:(UITextPosition *)position withinTextUnit:(UITextGranularity)granularity inDirection:(UITextDirection)direction; + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UITextInputStringTokenizer +#define _REWRITER_typedef_UITextInputStringTokenizer +typedef struct objc_object UITextInputStringTokenizer; +typedef struct {} _objc_exc_UITextInputStringTokenizer; +#endif + +struct UITextInputStringTokenizer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithTextInput:(UIResponder *)textInput; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) +#ifndef _REWRITER_typedef_UITextInputMode +#define _REWRITER_typedef_UITextInputMode +typedef struct objc_object UITextInputMode; +typedef struct {} _objc_exc_UITextInputMode; +#endif + +struct UITextInputMode_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nullable, nonatomic, readonly, strong) NSString *primaryLanguage; + + +// + (nullable UITextInputMode *)currentInputMode __attribute__((availability(ios,introduced=4.2,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +@property(class, nonatomic, readonly) NSArray *activeInputModes; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextInputCurrentInputModeDidChangeNotification __attribute__((availability(ios,introduced=4.2))); + +typedef NSWritingDirection UITextWritingDirection __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="NSWritingDirection"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="NSWritingDirection"))); + +static const UITextWritingDirection UITextWritingDirectionNatural __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="NSWritingDirectionNatural"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="NSWritingDirectionNatural"))) = NSWritingDirectionNatural; +static const UITextWritingDirection UITextWritingDirectionLeftToRight __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="NSWritingDirectionLeftToRight"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="NSWritingDirectionLeftToRight"))) = NSWritingDirectionLeftToRight; +static const UITextWritingDirection UITextWritingDirectionRightToLeft __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="NSWritingDirectionRightToLeft"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="NSWritingDirectionRightToLeft"))) = NSWritingDirectionRightToLeft; +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIAccessibilityCustomRotor; +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotor +#define _REWRITER_typedef_UIAccessibilityCustomRotor +typedef struct objc_object UIAccessibilityCustomRotor; +typedef struct {} _objc_exc_UIAccessibilityCustomRotor; +#endif + +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotorItemResult +#define _REWRITER_typedef_UIAccessibilityCustomRotorItemResult +typedef struct objc_object UIAccessibilityCustomRotorItemResult; +typedef struct {} _objc_exc_UIAccessibilityCustomRotorItemResult; +#endif + +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotorSearchPredicate +#define _REWRITER_typedef_UIAccessibilityCustomRotorSearchPredicate +typedef struct objc_object UIAccessibilityCustomRotorSearchPredicate; +typedef struct {} _objc_exc_UIAccessibilityCustomRotorSearchPredicate; +#endif + + +typedef NSInteger UIAccessibilityCustomRotorDirection; enum { + UIAccessibilityCustomRotorDirectionPrevious __attribute__((availability(ios,introduced=10.0))), + UIAccessibilityCustomRotorDirectionNext __attribute__((availability(ios,introduced=10.0))), +}; + + + + + +typedef NSInteger UIAccessibilityCustomSystemRotorType; enum { + UIAccessibilityCustomSystemRotorTypeNone = 0, + UIAccessibilityCustomSystemRotorTypeLink, + UIAccessibilityCustomSystemRotorTypeVisitedLink, + UIAccessibilityCustomSystemRotorTypeHeading, + UIAccessibilityCustomSystemRotorTypeHeadingLevel1, + UIAccessibilityCustomSystemRotorTypeHeadingLevel2, + UIAccessibilityCustomSystemRotorTypeHeadingLevel3, + UIAccessibilityCustomSystemRotorTypeHeadingLevel4, + UIAccessibilityCustomSystemRotorTypeHeadingLevel5, + UIAccessibilityCustomSystemRotorTypeHeadingLevel6, + UIAccessibilityCustomSystemRotorTypeBoldText, + UIAccessibilityCustomSystemRotorTypeItalicText, + UIAccessibilityCustomSystemRotorTypeUnderlineText, + UIAccessibilityCustomSystemRotorTypeMisspelledWord, + UIAccessibilityCustomSystemRotorTypeImage, + UIAccessibilityCustomSystemRotorTypeTextField, + UIAccessibilityCustomSystemRotorTypeTable, + UIAccessibilityCustomSystemRotorTypeList, + UIAccessibilityCustomSystemRotorTypeLandmark, +} __attribute__((availability(ios,introduced=11.0))); + +typedef UIAccessibilityCustomRotorItemResult *_Nullable(*UIAccessibilityCustomRotorSearch)(UIAccessibilityCustomRotorSearchPredicate *predicate); + + +// @interface NSObject (UIAccessibilityCustomRotor) +// @property (nonatomic, retain, nullable) NSArray *accessibilityCustomRotors __attribute__((availability(ios,introduced=10.0))); +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotorSearchPredicate +#define _REWRITER_typedef_UIAccessibilityCustomRotorSearchPredicate +typedef struct objc_object UIAccessibilityCustomRotorSearchPredicate; +typedef struct {} _objc_exc_UIAccessibilityCustomRotorSearchPredicate; +#endif + +struct UIAccessibilityCustomRotorSearchPredicate_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// @property (nonatomic, retain) UIAccessibilityCustomRotorItemResult *currentItem; +// @property (nonatomic) UIAccessibilityCustomRotorDirection searchDirection; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotor +#define _REWRITER_typedef_UIAccessibilityCustomRotor +typedef struct objc_object UIAccessibilityCustomRotor; +typedef struct {} _objc_exc_UIAccessibilityCustomRotor; +#endif + +struct UIAccessibilityCustomRotor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithName:(NSString *)name itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock; +// - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (instancetype)initWithSystemType:(UIAccessibilityCustomSystemRotorType)type itemSearchBlock:(UIAccessibilityCustomRotorSearch)itemSearchBlock __attribute__((availability(ios,introduced=11.0))); + + +// @property (nonatomic, copy) NSString *name; + + + +// @property (nonatomic, copy) NSAttributedString *attributedName __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// @property (nonatomic, copy) UIAccessibilityCustomRotorSearch itemSearchBlock; + + + +// @property (nonatomic, readonly) UIAccessibilityCustomSystemRotorType systemRotorType __attribute__((availability(ios,introduced=11.0))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIAccessibilityCustomRotorItemResult +#define _REWRITER_typedef_UIAccessibilityCustomRotorItemResult +typedef struct objc_object UIAccessibilityCustomRotorItemResult; +typedef struct {} _objc_exc_UIAccessibilityCustomRotorItemResult; +#endif + +struct UIAccessibilityCustomRotorItemResult_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithTargetElement:(id)targetElement targetRange:(nullable UITextRange *)targetRange; + + +// @property (nonatomic, weak) id targetElement; + + + +// @property (nullable, nonatomic, retain) UITextRange *targetRange; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + +typedef NSInteger UIPreferredPresentationStyle; enum { + UIPreferredPresentationStyleUnspecified = 0, + UIPreferredPresentationStyleInline, + UIPreferredPresentationStyleAttachment, +}; + +// @interface NSItemProvider (UIKitAdditions) + +// @property (nonatomic, copy, nullable) NSData *teamData __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic) CGSize preferredPresentationSize __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic) UIPreferredPresentationStyle preferredPresentationStyle; + +/* @end */ + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UIItemProviderPresentationSizeProviding + + + + + +// @property (nonatomic, readonly) CGSize preferredPresentationSizeForItemProvider; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +enum { + NSAttachmentCharacter __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0xFFFC +}; + +// @class NSTextContainer; +#ifndef _REWRITER_typedef_NSTextContainer +#define _REWRITER_typedef_NSTextContainer +typedef struct objc_object NSTextContainer; +typedef struct {} _objc_exc_NSTextContainer; +#endif + +// @class NSLayoutManager; +#ifndef _REWRITER_typedef_NSLayoutManager +#define _REWRITER_typedef_NSLayoutManager +typedef struct objc_object NSLayoutManager; +typedef struct {} _objc_exc_NSLayoutManager; +#endif + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + + + +// @protocol NSTextAttachmentContainer + + + + +// - (nullable UIImage *)imageForBounds:(CGRect)imageBounds textContainer:(nullable NSTextContainer *)textContainer characterIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + +// - (CGRect)attachmentBoundsForTextContainer:(nullable NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_NSTextAttachment +#define _REWRITER_typedef_NSTextAttachment +typedef struct objc_object NSTextAttachment; +typedef struct {} _objc_exc_NSTextAttachment; +#endif + +struct NSTextAttachment_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// - (instancetype)initWithData:(nullable NSData *)contentData ofType:(nullable NSString *)uti __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +// @property (nullable, copy, nonatomic) NSData *contents __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +// @property (nullable, copy, nonatomic) NSString *fileType __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + +// @property (nullable, strong, nonatomic) UIImage *image __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic) CGRect bounds __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + +// @property (nullable, strong, nonatomic) NSFileWrapper *fileWrapper; + + +/* @end */ + + +// @interface NSAttributedString (NSAttributedStringAttachmentConveniences) + +// + (NSAttributedString *)attributedStringWithAttachment:(NSTextAttachment *)attachment __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + +#ifndef _REWRITER_typedef_UIImageAsset +#define _REWRITER_typedef_UIImageAsset +typedef struct objc_object UIImageAsset; +typedef struct {} _objc_exc_UIImageAsset; +#endif + + + + +// @class UIGraphicsImageRendererFormat; +#ifndef _REWRITER_typedef_UIGraphicsImageRendererFormat +#define _REWRITER_typedef_UIGraphicsImageRendererFormat +typedef struct objc_object UIGraphicsImageRendererFormat; +typedef struct {} _objc_exc_UIGraphicsImageRendererFormat; +#endif + + + +typedef NSInteger UIImageOrientation; enum { + UIImageOrientationUp, + UIImageOrientationDown, + UIImageOrientationLeft, + UIImageOrientationRight, + UIImageOrientationUpMirrored, + UIImageOrientationDownMirrored, + UIImageOrientationLeftMirrored, + UIImageOrientationRightMirrored, +}; + + + + + + +typedef NSInteger UIImageResizingMode; enum { + + UIImageResizingModeTile = 0, + UIImageResizingModeStretch = 1, + + + + +}; + + + +typedef NSInteger UIImageRenderingMode; enum { + UIImageRenderingModeAutomatic, + + UIImageRenderingModeAlwaysOriginal, + UIImageRenderingModeAlwaysTemplate, +} __attribute__((availability(ios,introduced=7.0))); + +// @class UIImageConfiguration; +#ifndef _REWRITER_typedef_UIImageConfiguration +#define _REWRITER_typedef_UIImageConfiguration +typedef struct objc_object UIImageConfiguration; +typedef struct {} _objc_exc_UIImageConfiguration; +#endif + +// @class UIImageSymbolConfiguration; +#ifndef _REWRITER_typedef_UIImageSymbolConfiguration +#define _REWRITER_typedef_UIImageSymbolConfiguration +typedef struct objc_object UIImageSymbolConfiguration; +typedef struct {} _objc_exc_UIImageSymbolConfiguration; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +struct UIImage_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (nullable UIImage *)systemImageNamed:(NSString *)name __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// + (nullable UIImage *)systemImageNamed:(NSString *)name withConfiguration:(nullable UIImageConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + +// + (nullable UIImage *)systemImageNamed:(NSString *)name compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + + +// + (nullable UIImage *)imageNamed:(NSString *)name; +// + (nullable UIImage *)imageNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle withConfiguration:(nullable UIImageConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +// + (nullable UIImage *)imageNamed:(NSString *)name inBundle:(nullable NSBundle *)bundle compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=8.0))); + + +// + (nullable UIImage *)imageWithContentsOfFile:(NSString *)path; +// + (nullable UIImage *)imageWithData:(NSData *)data; +// + (nullable UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale __attribute__((availability(ios,introduced=6.0))); +// + (UIImage *)imageWithCGImage:(CGImageRef)cgImage; +// + (UIImage *)imageWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation __attribute__((availability(ios,introduced=4.0))); + +// + (UIImage *)imageWithCIImage:(CIImage *)ciImage __attribute__((availability(ios,introduced=5.0))); +// + (UIImage *)imageWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation __attribute__((availability(ios,introduced=6.0))); + + +// - (nullable instancetype)initWithContentsOfFile:(NSString *)path; +// - (nullable instancetype)initWithData:(NSData *)data; +// - (nullable instancetype)initWithData:(NSData *)data scale:(CGFloat)scale __attribute__((availability(ios,introduced=6.0))); +// - (instancetype)initWithCGImage:(CGImageRef)cgImage; +// - (instancetype)initWithCGImage:(CGImageRef)cgImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation __attribute__((availability(ios,introduced=4.0))); + +// - (instancetype)initWithCIImage:(CIImage *)ciImage __attribute__((availability(ios,introduced=5.0))); +// - (instancetype)initWithCIImage:(CIImage *)ciImage scale:(CGFloat)scale orientation:(UIImageOrientation)orientation __attribute__((availability(ios,introduced=6.0))); + + +// @property(nonatomic,readonly) CGSize size; +// @property(nullable, nonatomic,readonly) CGImageRef CGImage; +// - (nullable CGImageRef)CGImage __attribute__((objc_returns_inner_pointer)) __attribute__((cf_returns_not_retained)); + +// @property(nullable,nonatomic,readonly) CIImage *CIImage __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic,readonly) UIImageOrientation imageOrientation; +// @property(nonatomic,readonly) CGFloat scale __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic,readonly,getter=isSymbolImage) BOOL symbolImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + + +// + (nullable UIImage *)animatedImageNamed:(NSString *)name duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=5.0))); +// + (nullable UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=5.0))); +// + (nullable UIImage *)animatedResizableImageNamed:(NSString *)name capInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=6.0))); +// + (nullable UIImage *)animatedImageWithImages:(NSArray *)images duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=5.0))); + +// @property(nullable, nonatomic,readonly) NSArray *images __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic,readonly) NSTimeInterval duration __attribute__((availability(ios,introduced=5.0))); + + + +// - (void)drawAtPoint:(CGPoint)point; +// - (void)drawAtPoint:(CGPoint)point blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha; +// - (void)drawInRect:(CGRect)rect; +// - (void)drawInRect:(CGRect)rect blendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha; + +// - (void)drawAsPatternInRect:(CGRect)rect; + +// - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets __attribute__((availability(ios,introduced=5.0))); +// - (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode __attribute__((availability(ios,introduced=6.0))); + +// @property(nonatomic,readonly) UIEdgeInsets capInsets __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic,readonly) UIImageResizingMode resizingMode __attribute__((availability(ios,introduced=6.0))); + + + + + + +// - (UIImage *)imageWithAlignmentRectInsets:(UIEdgeInsets)alignmentInsets __attribute__((availability(ios,introduced=6.0))); +// @property(nonatomic,readonly) UIEdgeInsets alignmentRectInsets __attribute__((availability(ios,introduced=6.0))); + + +// - (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic, readonly) UIImageRenderingMode renderingMode __attribute__((availability(ios,introduced=7.0))); + + + +// @property (nonatomic, readonly) UIGraphicsImageRendererFormat *imageRendererFormat __attribute__((availability(ios,introduced=10.0))); + + + +// @property (nonatomic, readonly, copy) UITraitCollection *traitCollection __attribute__((availability(ios,introduced=8.0))); +// @property (nullable, nonatomic, readonly) UIImageAsset *imageAsset __attribute__((availability(ios,introduced=8.0))); + + + + +// - (UIImage *)imageFlippedForRightToLeftLayoutDirection __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic, readonly) BOOL flipsForRightToLeftLayoutDirection __attribute__((availability(ios,introduced=9.0))); + + +// - (UIImage *)imageWithHorizontallyFlippedOrientation __attribute__((availability(ios,introduced=10.0))); + + + + + + + +// @property (nonatomic, readonly) CGFloat baselineOffsetFromBottom __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((swift_private)); +// @property (nonatomic, readonly) BOOL hasBaseline __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((swift_private)); +// - (UIImage *)imageWithBaselineOffsetFromBottom:(CGFloat)baselineOffset __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (UIImage *)imageWithoutBaseline __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// @property (nullable, nonatomic, copy, readonly) __kindof UIImageConfiguration *configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (UIImage *)imageWithConfiguration:(UIImageConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// @property (nullable, nonatomic, copy, readonly) UIImageSymbolConfiguration *symbolConfiguration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (nullable UIImage *)imageByApplyingSymbolConfiguration:(UIImageSymbolConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + +// - (UIImage *)imageWithTintColor:(UIColor *)color __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (UIImage *)imageWithTintColor:(UIColor *)color renderingMode:(UIImageRenderingMode)renderingMode __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + + +// @interface UIImage (PreconfiguredSystemImages) + +@property (class, readonly, strong) UIImage *actionsImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, strong) UIImage *addImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, strong) UIImage *removeImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, strong) UIImage *checkmarkImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +@property (class, readonly, strong) UIImage *strokedCheckmarkImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +/* @end */ + + + +// @interface UIImage (NSItemProvider) + + + + +/* @end */ + + + +// @interface NSTextAttachment (UIImage) + +// + (NSTextAttachment *)textAttachmentWithImage:(UIImage *)image __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + + + +// @interface UIImage(UIImageDeprecated) + + + +// - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) NSInteger leftCapWidth __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) NSInteger topCapHeight __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +// @interface CIImage(UIKitAdditions) + +// - (nullable instancetype)initWithImage:(UIImage *)image __attribute__((availability(ios,introduced=5.0))); +// - (nullable instancetype)initWithImage:(UIImage *)image options:(nullable NSDictionary *)options __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSData * _Nullable UIImagePNGRepresentation(UIImage * _Nonnull image); +extern "C" __attribute__((visibility ("default"))) NSData * _Nullable UIImageJPEGRepresentation(UIImage * _Nonnull image, CGFloat compressionQuality); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIBarItem +#define _REWRITER_typedef_UIBarItem +typedef struct objc_object UIBarItem; +typedef struct {} _objc_exc_UIBarItem; +#endif + +struct UIBarItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(nonatomic,getter=isEnabled) BOOL enabled; +// @property(nullable, nonatomic,copy) NSString *title; +// @property(nullable, nonatomic,strong) UIImage *image; +// @property(nullable, nonatomic,strong) UIImage *landscapeImagePhone __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + + +// @property(nullable, nonatomic,strong) UIImage *largeContentSizeImage __attribute__((availability(ios,introduced=11.0))); + +// @property(nonatomic) UIEdgeInsets imageInsets; +// @property(nonatomic) UIEdgeInsets landscapeImagePhoneInsets __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) UIEdgeInsets largeContentSizeImageInsets __attribute__((availability(ios,introduced=11.0))); +// @property(nonatomic) NSInteger tag; + + + +// - (void)setTitleTextAttributes:(nullable NSDictionary *)attributes forState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable NSDictionary *)titleTextAttributesForState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @protocol UIAccessibilityIdentification +/* @required */ + + + + + +// @property(nullable, nonatomic, copy) NSString *accessibilityIdentifier __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + +// @interface UIView (UIAccessibility) +/* @end */ + + +// @interface UIBarItem (UIAccessibility) +/* @end */ + + + + + + +// @interface UIImage (UIAccessibility) +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.0))) +#ifndef _REWRITER_typedef_UIAccessibilityElement +#define _REWRITER_typedef_UIAccessibilityElement +typedef struct objc_object UIAccessibilityElement; +typedef struct {} _objc_exc_UIAccessibilityElement; +#endif + +struct UIAccessibilityElement_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + + + +// - (instancetype)initWithAccessibilityContainer:(id)container; + +// @property (nullable, nonatomic, weak) id accessibilityContainer; +// @property (nonatomic, assign) BOOL isAccessibilityElement; +// @property (nullable, nonatomic, strong) NSString *accessibilityLabel; +// @property (nullable, nonatomic, strong) NSString *accessibilityHint; +// @property (nullable, nonatomic, strong) NSString *accessibilityValue; +// @property (nonatomic, assign) CGRect accessibilityFrame; +// @property (nonatomic, assign) UIAccessibilityTraits accessibilityTraits; + + + +// @property (nonatomic, assign) CGRect accessibilityFrameInContainerSpace __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + + + + +typedef NSInteger UIAccessibilityZoomType; enum { + UIAccessibilityZoomTypeInsertionPoint, +} __attribute__((availability(ios,introduced=5.0))); + +extern "C" __attribute__((visibility ("default"))) void UIAccessibilityZoomFocusChanged(UIAccessibilityZoomType type, CGRect frame, UIView * _Nonnull view) __attribute__((availability(ios,introduced=5.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) void UIAccessibilityRegisterGestureConflictWithZoom(void) __attribute__((availability(ios,introduced=5.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) NSErrorDomain const UIGuidedAccessErrorDomain __attribute__((availability(ios,introduced=12.2))); + +typedef NSInteger UIGuidedAccessErrorCode; enum { + + UIGuidedAccessErrorPermissionDenied, + + UIGuidedAccessErrorFailed = 9223372036854775807L +} __attribute__((availability(ios,introduced=12.2))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +typedef NSInteger UIGuidedAccessRestrictionState; enum { + UIGuidedAccessRestrictionStateAllow, + UIGuidedAccessRestrictionStateDeny +}; +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) // @protocol UIGuidedAccessRestrictionDelegate + +/* @required */ + + + + + + +// @property(nonatomic, readonly, nullable) NSArray *guidedAccessRestrictionIdentifiers; + + +// - (void)guidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier didChangeState:(UIGuidedAccessRestrictionState)newRestrictionState; + + +// - (nullable NSString *)textForGuidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier; + +/* @optional */ + + +// - (nullable NSString *)detailTextForGuidedAccessRestrictionWithIdentifier:(NSString *)restrictionIdentifier; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) UIGuidedAccessRestrictionState UIGuidedAccessRestrictionStateForIdentifier(NSString *restrictionIdentifier) __attribute__((availability(ios,introduced=7.0))); + + + + + + +typedef NSUInteger UIGuidedAccessAccessibilityFeature; enum { + UIGuidedAccessAccessibilityFeatureVoiceOver = 1 << 0, + UIGuidedAccessAccessibilityFeatureZoom = 1 << 1, + UIGuidedAccessAccessibilityFeatureAssistiveTouch = 1 << 2, + UIGuidedAccessAccessibilityFeatureInvertColors = 1 << 3, + UIGuidedAccessAccessibilityFeatureGrayscaleDisplay = 1 << 4, +} __attribute__((availability(ios,introduced=12.2))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) void UIGuidedAccessConfigureAccessibilityFeatures(UIGuidedAccessAccessibilityFeature features, BOOL enabled, void (^completion)(BOOL success, NSError *error)) __attribute__((availability(ios,introduced=12.2))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIAccessibilityLocationDescriptor +#define _REWRITER_typedef_UIAccessibilityLocationDescriptor +typedef struct objc_object UIAccessibilityLocationDescriptor; +typedef struct {} _objc_exc_UIAccessibilityLocationDescriptor; +#endif + +struct UIAccessibilityLocationDescriptor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + + + + +// - (instancetype)initWithName:(NSString *)name view:(UIView *)view; + + + + +// - (instancetype)initWithName:(NSString *)name point:(CGPoint)point inView:(UIView *)view; +// - (instancetype)initWithAttributedName:(NSAttributedString *)attributedName point:(CGPoint)point inView:(UIView *)view __attribute__((objc_designated_initializer)); + + + + + + + +// @property (nonatomic, readonly, weak) UIView *view; + + + +// @property (nonatomic, readonly) CGPoint point; + + + + +// @property (nonatomic, readonly, strong) NSString *name; + + + + +// @property (nonatomic, readonly, strong) NSAttributedString *attributedName; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin +// @interface NSObject (UIAccessibility) + + + + + + + +// @property (nonatomic) BOOL isAccessibilityElement; +// @property (nullable, nonatomic, copy) NSString *accessibilityLabel; + + + + + +// @property (nullable, nonatomic, copy) NSAttributedString *accessibilityAttributedLabel __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property (nullable, nonatomic, copy) NSString *accessibilityHint; + + + + + +// @property (nullable, nonatomic, copy) NSAttributedString *accessibilityAttributedHint __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property (nullable, nonatomic, copy) NSString *accessibilityValue; + + + + + +// @property (nullable, nonatomic, copy) NSAttributedString *accessibilityAttributedValue __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property (nonatomic) UIAccessibilityTraits accessibilityTraits; + + + + + + + +// @property (nonatomic) CGRect accessibilityFrame; + + + + +extern "C" __attribute__((visibility ("default"))) CGRect UIAccessibilityConvertFrameToScreenCoordinates(CGRect rect, UIView *view) __attribute__((availability(ios,introduced=7.0))); + + + + + + + +// @property (nullable, nonatomic, copy) UIBezierPath *accessibilityPath __attribute__((availability(ios,introduced=7.0))); + + + + +extern "C" __attribute__((visibility ("default"))) UIBezierPath *UIAccessibilityConvertPathToScreenCoordinates(UIBezierPath *path, UIView *view) __attribute__((availability(ios,introduced=7.0))); + + + + + +// @property (nonatomic) CGPoint accessibilityActivationPoint __attribute__((availability(ios,introduced=5.0))); +// @property (nullable, nonatomic, strong) NSString *accessibilityLanguage; + + + + + +// @property (nonatomic) BOOL accessibilityElementsHidden __attribute__((availability(ios,introduced=5.0))); + + + + + + +// @property (nonatomic) BOOL accessibilityViewIsModal __attribute__((availability(ios,introduced=5.0))); +// @property (nonatomic) BOOL shouldGroupAccessibilityChildren __attribute__((availability(ios,introduced=6.0))); +// @property (nonatomic) UIAccessibilityNavigationStyle accessibilityNavigationStyle __attribute__((availability(ios,introduced=8.0))); + + + + + + + +// @property (nonatomic) BOOL accessibilityRespondsToUserInteraction __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +// @property (null_resettable, nonatomic, strong) NSArray *accessibilityUserInputLabels __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + +// @property (null_resettable, nonatomic, copy) NSArray *accessibilityAttributedUserInputLabels __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + + + + +// @property(nullable, nonatomic, copy) NSArray *accessibilityHeaderElements __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=9_0))); +// @property(nullable, nonatomic, strong) UIAccessibilityTextualContext accessibilityTextualContext __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + +/* @end */ + +// @interface NSObject (UIAccessibilityFocus) + + +// - (void)accessibilityElementDidBecomeFocused __attribute__((availability(ios,introduced=4.0))); +// - (void)accessibilityElementDidLoseFocus __attribute__((availability(ios,introduced=4.0))); + + +// - (BOOL)accessibilityElementIsFocused __attribute__((availability(ios,introduced=4.0))); + + +// - (nullable NSSet *)accessibilityAssistiveTechnologyFocusedIdentifiers __attribute__((availability(ios,introduced=9.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) _Nullable id UIAccessibilityFocusedElement(UIAccessibilityAssistiveTechnologyIdentifier _Nullable assistiveTechnologyIdentifier) __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + + + + + + +// @interface NSObject (UIAccessibilityAction) +// - (BOOL)accessibilityActivate __attribute__((availability(ios,introduced=7.0))); + + + + + + + +// - (void)accessibilityIncrement __attribute__((availability(ios,introduced=4.0))); +// - (void)accessibilityDecrement __attribute__((availability(ios,introduced=4.0))); +typedef NSInteger UIAccessibilityScrollDirection; enum { + UIAccessibilityScrollDirectionRight = 1, + UIAccessibilityScrollDirectionLeft, + UIAccessibilityScrollDirectionUp, + UIAccessibilityScrollDirectionDown, + UIAccessibilityScrollDirectionNext __attribute__((availability(ios,introduced=5.0))), + UIAccessibilityScrollDirectionPrevious __attribute__((availability(ios,introduced=5.0))), +}; + +// - (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction __attribute__((availability(ios,introduced=4.2))); +// - (BOOL)accessibilityPerformEscape __attribute__((availability(ios,introduced=5.0))); + + + + + + + +// - (BOOL)accessibilityPerformMagicTap __attribute__((availability(ios,introduced=6.0))); + + + + + + + +// @property (nullable, nonatomic, strong) NSArray *accessibilityCustomActions __attribute__((availability(ios,introduced=8.0))); +/* @end */ + + + + + + + + +// @protocol UIAccessibilityReadingContent +/* @required */ + + +// - (NSInteger)accessibilityLineNumberForPoint:(CGPoint)point __attribute__((availability(ios,introduced=5.0))); + + +// - (nullable NSString *)accessibilityContentForLineNumber:(NSInteger)lineNumber __attribute__((availability(ios,introduced=5.0))); + + +// - (CGRect)accessibilityFrameForLineNumber:(NSInteger)lineNumber __attribute__((availability(ios,introduced=5.0))); + + +// - (nullable NSString *)accessibilityPageContent __attribute__((availability(ios,introduced=5.0))); + +/* @optional */ + +// - (nullable NSAttributedString *)accessibilityAttributedContentForLineNumber:(NSInteger)lineNumber __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (nullable NSAttributedString *)accessibilityAttributedPageContent __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + +// @interface NSObject(UIAccessibilityDragging) +// @property (nullable, nonatomic, copy) NSArray *accessibilityDragSourceDescriptors __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// @property (nullable, nonatomic, copy) NSArray *accessibilityDropPointDescriptors __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +/* @end */ + +extern "C" __attribute__((visibility ("default"))) void UIAccessibilityPostNotification(UIAccessibilityNotifications notification, _Nullable id argument); + + + + + + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsVoiceOverRunning(void) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityVoiceOverStatusChanged __attribute__((availability(ios,introduced=4.0,deprecated=11.0,replacement="UIAccessibilityVoiceOverStatusDidChangeNotification"))) __attribute__((availability(tvos,introduced=9.0,deprecated=11.0,replacement="UIAccessibilityVoiceOverStatusDidChangeNotification"))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityVoiceOverStatusDidChangeNotification __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsMonoAudioEnabled(void) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityMonoAudioStatusDidChangeNotification __attribute__((availability(ios,introduced=5.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsClosedCaptioningEnabled(void) __attribute__((availability(ios,introduced=5.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityClosedCaptioningStatusDidChangeNotification __attribute__((availability(ios,introduced=5.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsInvertColorsEnabled(void) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityInvertColorsStatusDidChangeNotification __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsGuidedAccessEnabled(void) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityGuidedAccessStatusDidChangeNotification __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsBoldTextEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityBoldTextStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsGrayscaleEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityGrayscaleStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsReduceTransparencyEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityReduceTransparencyStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsReduceMotionEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityReduceMotionStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsVideoAutoplayEnabled(void) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityVideoAutoplayStatusDidChangeNotification __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityDarkerSystemColorsEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityDarkerSystemColorsStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsSwitchControlRunning(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilitySwitchControlStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsSpeakSelectionEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilitySpeakSelectionStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsSpeakScreenEnabled(void) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilitySpeakScreenStatusDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsShakeToUndoEnabled(void) __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityShakeToUndoDidChangeNotification __attribute__((availability(ios,introduced=9.0))); + + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsAssistiveTouchRunning(void) __attribute__((availability(ios,introduced=10.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityAssistiveTouchStatusDidChangeNotification __attribute__((availability(ios,introduced=10.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityShouldDifferentiateWithoutColor(void) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIAccessibilityShouldDifferentiateWithoutColorDidChangeNotification __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIAccessibilityIsOnOffSwitchLabelsEnabled(void) __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityOnOffSwitchLabelsDidChangeNotification __attribute__((availability(ios,introduced=13.0))); + + + + + + + +extern "C" __attribute__((visibility ("default"))) void UIAccessibilityRequestGuidedAccessSession(BOOL enable, void(^completionHandler)(BOOL didSucceed)) __attribute__((availability(ios,introduced=7.0))); + +typedef NSUInteger UIAccessibilityHearingDeviceEar; enum { + UIAccessibilityHearingDeviceEarNone = 0, + UIAccessibilityHearingDeviceEarLeft = 1 << 1, + UIAccessibilityHearingDeviceEarRight = 1 << 2, + UIAccessibilityHearingDeviceEarBoth = UIAccessibilityHearingDeviceEarLeft | UIAccessibilityHearingDeviceEarRight, +} __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) UIAccessibilityHearingDeviceEar UIAccessibilityHearingDevicePairedEar(void) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIAccessibilityHearingDevicePairedEarDidChangeNotification __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIImageSymbolConfiguration +#define _REWRITER_typedef_UIImageSymbolConfiguration +typedef struct objc_object UIImageSymbolConfiguration; +typedef struct {} _objc_exc_UIImageSymbolConfiguration; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +struct UIImageView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithImage:(nullable UIImage *)image; +// - (instancetype)initWithImage:(nullable UIImage *)image highlightedImage:(nullable UIImage *)highlightedImage __attribute__((availability(ios,introduced=3.0))); + +// @property (nullable, nonatomic, strong) UIImage *image; +// @property (nullable, nonatomic, strong) UIImage *highlightedImage __attribute__((availability(ios,introduced=3.0))); +// @property (nullable, nonatomic, strong) UIImageSymbolConfiguration* preferredSymbolConfiguration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// @property (nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled; + +// @property (nonatomic, getter=isHighlighted) BOOL highlighted __attribute__((availability(ios,introduced=3.0))); + + + +// @property (nullable, nonatomic, copy) NSArray *animationImages; +// @property (nullable, nonatomic, copy) NSArray *highlightedAnimationImages __attribute__((availability(ios,introduced=3.0))); + +// @property (nonatomic) NSTimeInterval animationDuration; +// @property (nonatomic) NSInteger animationRepeatCount; + + + +// @property (null_resettable, nonatomic, strong) UIColor *tintColor __attribute__((availability(ios,introduced=7.0))); + +// - (void)startAnimating; +// - (void)stopAnimating; +// @property(nonatomic, readonly, getter=isAnimating) BOOL animating; + + +// @property (nonatomic) BOOL adjustsImageWhenAncestorFocused __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=9_0))); + + + +// @property(readonly,strong) UILayoutGuide *focusedFrameGuide __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=9_0))); + + + + + +// @property (nonatomic, strong, readonly) UIView *overlayContentView __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=11_0))); + + + + + + +// @property (nonatomic) BOOL masksFocusEffectToContents __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=11_0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + +typedef NSInteger NSLineBreakMode; enum { + NSLineBreakByWordWrapping = 0, + NSLineBreakByCharWrapping, + NSLineBreakByClipping, + NSLineBreakByTruncatingHead, + NSLineBreakByTruncatingTail, + NSLineBreakByTruncatingMiddle +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + + +typedef NSString * NSTextTabOptionKey __attribute__((swift_wrapper(enum))); +extern "C" __attribute__((visibility ("default"))) NSTextTabOptionKey const NSTabColumnTerminatorsAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_NSTextTab +#define _REWRITER_typedef_NSTextTab +typedef struct objc_object NSTextTab; +typedef struct {} _objc_exc_NSTextTab; +#endif + +struct NSTextTab_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (NSCharacterSet *)columnTerminatorsForLocale:(nullable NSLocale *)aLocale __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + +// - (instancetype)initWithTextAlignment:(NSTextAlignment)alignment location:(CGFloat)loc options:(NSDictionary *)options __attribute__((objc_designated_initializer)); + + +// @property (readonly, nonatomic) NSTextAlignment alignment; +// @property (readonly, nonatomic) CGFloat location; +// @property (readonly, nonatomic) NSDictionary *options; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_NSParagraphStyle +#define _REWRITER_typedef_NSParagraphStyle +typedef struct objc_object NSParagraphStyle; +typedef struct {} _objc_exc_NSParagraphStyle; +#endif + +struct NSParagraphStyle_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (class, readonly, copy, nonatomic) NSParagraphStyle *defaultParagraphStyle; + +// + (NSWritingDirection)defaultWritingDirectionForLanguage:(nullable NSString *)languageName; + +// @property (readonly, nonatomic) CGFloat lineSpacing; +// @property (readonly, nonatomic) CGFloat paragraphSpacing; +// @property (readonly, nonatomic) NSTextAlignment alignment; + + + +// @property (readonly, nonatomic) CGFloat headIndent; +// @property (readonly, nonatomic) CGFloat tailIndent; +// @property (readonly, nonatomic) CGFloat firstLineHeadIndent; + +// @property (readonly, nonatomic) CGFloat minimumLineHeight; +// @property (readonly, nonatomic) CGFloat maximumLineHeight; + +// @property (readonly, nonatomic) NSLineBreakMode lineBreakMode; + +// @property (readonly, nonatomic) NSWritingDirection baseWritingDirection; + +// @property (readonly, nonatomic) CGFloat lineHeightMultiple; +// @property (readonly, nonatomic) CGFloat paragraphSpacingBefore; + + +// @property (readonly, nonatomic) float hyphenationFactor; + +// @property (readonly,copy, nonatomic) NSArray *tabStops __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +// @property (readonly, nonatomic) CGFloat defaultTabInterval __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +// @property (readonly, nonatomic) BOOL allowsDefaultTighteningForTruncation __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_NSMutableParagraphStyle +#define _REWRITER_typedef_NSMutableParagraphStyle +typedef struct objc_object NSMutableParagraphStyle; +typedef struct {} _objc_exc_NSMutableParagraphStyle; +#endif + +struct NSMutableParagraphStyle_IMPL { + struct NSParagraphStyle_IMPL NSParagraphStyle_IVARS; +}; + + +// @property (nonatomic) CGFloat lineSpacing; +// @property (nonatomic) CGFloat paragraphSpacing; +// @property (nonatomic) NSTextAlignment alignment; +// @property (nonatomic) CGFloat firstLineHeadIndent; +// @property (nonatomic) CGFloat headIndent; +// @property (nonatomic) CGFloat tailIndent; +// @property (nonatomic) NSLineBreakMode lineBreakMode; +// @property (nonatomic) CGFloat minimumLineHeight; +// @property (nonatomic) CGFloat maximumLineHeight; +// @property (nonatomic) NSWritingDirection baseWritingDirection; +// @property (nonatomic) CGFloat lineHeightMultiple; +// @property (nonatomic) CGFloat paragraphSpacingBefore; +// @property (nonatomic) float hyphenationFactor; +// @property (null_resettable, copy, nonatomic) NSArray *tabStops __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat defaultTabInterval __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) BOOL allowsDefaultTighteningForTruncation __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + +// - (void)addTabStop:(NSTextTab *)anObject __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); +// - (void)removeTabStop:(NSTextTab *)anObject __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + +// - (void)setParagraphStyle:(NSParagraphStyle *)obj __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextAttributeFont __attribute__((availability(ios,introduced=5.0,deprecated=7.0,replacement="NSFontAttributeName"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextAttributeTextColor __attribute__((availability(ios,introduced=5.0,deprecated=7.0,replacement="NSForegroundColorAttributeName"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextAttributeTextShadowColor __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use NSShadowAttributeName with an NSShadow instance as the value"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextAttributeTextShadowOffset __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use NSShadowAttributeName with an NSShadow instance as the value"))) __attribute__((availability(tvos,unavailable))); + + +typedef NSInteger UILineBreakMode; enum { + UILineBreakModeWordWrap = 0, + UILineBreakModeCharacterWrap, + UILineBreakModeClip, + UILineBreakModeHeadTruncation, + UILineBreakModeTailTruncation, + UILineBreakModeMiddleTruncation, +} __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +typedef NSInteger UITextAlignment; enum { + UITextAlignmentLeft = 0, + UITextAlignmentCenter, + UITextAlignmentRight, +} __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIBaselineAdjustment; enum { + UIBaselineAdjustmentAlignBaselines = 0, + UIBaselineAdjustmentAlignCenters, + UIBaselineAdjustmentNone, +}; + +// @class UIFont; +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + + + + +// @interface NSString(UIStringDrawing) + + +// - (CGSize)sizeWithFont:(UIFont *)font __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="sizeWithAttributes:"))) __attribute__((availability(tvos,unavailable))); +// - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(NSLineBreakMode)lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="boundingRectWithSize:options:attributes:context:"))) __attribute__((availability(tvos,unavailable))); + + +// - (CGSize)drawAtPoint:(CGPoint)point withFont:(UIFont *)font __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawAtPoint:withAttributes:"))) __attribute__((availability(tvos,unavailable))); +// - (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); + + + + +// - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="boundingRectWithSize:options:attributes:context:"))) __attribute__((availability(tvos,unavailable))); +// - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="boundingRectWithSize:options:attributes:context:"))) __attribute__((availability(tvos,unavailable))); + + +// - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); +// - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); +// - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); + + + + + + +// - (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(NSLineBreakMode)lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// - (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font fontSize:(CGFloat)fontSize lineBreakMode:(NSLineBreakMode)lineBreakMode baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); + +// - (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize lineBreakMode:(NSLineBreakMode)lineBreakMode baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment __attribute__((availability(ios,introduced=2.0,deprecated=7.0,replacement="drawInRect:withAttributes:"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +#pragma clang assume_nonnull begin + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UISpringLoadedInteractionSupporting + +// @property (nonatomic, assign, getter=isSpringLoaded) BOOL springLoaded __attribute__((availability(ios,introduced=11_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIImageSymbolConfiguration +#define _REWRITER_typedef_UIImageSymbolConfiguration +typedef struct objc_object UIImageSymbolConfiguration; +typedef struct {} _objc_exc_UIImageSymbolConfiguration; +#endif + + +typedef NSInteger UIButtonType; enum { + UIButtonTypeCustom = 0, + UIButtonTypeSystem __attribute__((availability(ios,introduced=7.0))), + + UIButtonTypeDetailDisclosure, + UIButtonTypeInfoLight, + UIButtonTypeInfoDark, + UIButtonTypeContactAdd, + + UIButtonTypePlain __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))), + + UIButtonTypeClose __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))), + + UIButtonTypeRoundedRect = UIButtonTypeSystem +}; + +// @class UIButton; +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +#ifndef _REWRITER_typedef_UIPointerStyle +#define _REWRITER_typedef_UIPointerStyle +typedef struct objc_object UIPointerStyle; +typedef struct {} _objc_exc_UIPointerStyle; +#endif + +#ifndef _REWRITER_typedef_UIPointerEffect +#define _REWRITER_typedef_UIPointerEffect +typedef struct objc_object UIPointerEffect; +typedef struct {} _objc_exc_UIPointerEffect; +#endif + +#ifndef _REWRITER_typedef_UIPointerShape +#define _REWRITER_typedef_UIPointerShape +typedef struct objc_object UIPointerShape; +typedef struct {} _objc_exc_UIPointerShape; +#endif + +typedef UIPointerStyle *_Nullable(*UIButtonPointerStyleProvider)(UIButton *button, UIPointerEffect *proposedEffect, UIPointerShape *proposedShape) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +struct UIButton_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// + (instancetype)buttonWithType:(UIButtonType)buttonType; +// + (instancetype)systemButtonWithImage:(UIImage *)image target:(nullable id)target action:(nullable SEL)action __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +// @property(nonatomic) UIEdgeInsets contentEdgeInsets __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic) UIEdgeInsets titleEdgeInsets; +// @property(nonatomic) BOOL reversesTitleShadowWhenHighlighted; +// @property(nonatomic) UIEdgeInsets imageEdgeInsets; +// @property(nonatomic) BOOL adjustsImageWhenHighlighted; +// @property(nonatomic) BOOL adjustsImageWhenDisabled; +// @property(nonatomic) BOOL showsTouchWhenHighlighted __attribute__((availability(tvos,unavailable))); +// @property(null_resettable, nonatomic,strong) UIColor *tintColor __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic,readonly) UIButtonType buttonType; + + + +// @property (nonatomic, readwrite, assign, getter = isPointerInteractionEnabled) BOOL pointerInteractionEnabled __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property (nonatomic, readwrite, copy, nullable) UIButtonPointerStyleProvider pointerStyleProvider __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)); + + + + + + +// - (void)setTitle:(nullable NSString *)title forState:(UIControlState)state; +// - (void)setTitleColor:(nullable UIColor *)color forState:(UIControlState)state __attribute__((annotate("ui_appearance_selector"))); +// - (void)setTitleShadowColor:(nullable UIColor *)color forState:(UIControlState)state __attribute__((annotate("ui_appearance_selector"))); +// - (void)setImage:(nullable UIImage *)image forState:(UIControlState)state; +// - (void)setBackgroundImage:(nullable UIImage *)image forState:(UIControlState)state __attribute__((annotate("ui_appearance_selector"))); +// - (void)setPreferredSymbolConfiguration:(nullable UIImageSymbolConfiguration *)configuration forImageInState:(UIControlState)state __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (void)setAttributedTitle:(nullable NSAttributedString *)title forState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))); + +// - (nullable NSString *)titleForState:(UIControlState)state; +// - (nullable UIColor *)titleColorForState:(UIControlState)state; +// - (nullable UIColor *)titleShadowColorForState:(UIControlState)state; +// - (nullable UIImage *)imageForState:(UIControlState)state; +// - (nullable UIImage *)backgroundImageForState:(UIControlState)state; +// - (nullable UIImageSymbolConfiguration *)preferredSymbolConfigurationForImageInState:(UIControlState)state __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// - (nullable NSAttributedString *)attributedTitleForState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))); + + + + + +// @property(nullable, nonatomic,readonly,strong) NSString *currentTitle; +// @property(nonatomic,readonly,strong) UIColor *currentTitleColor; +// @property(nullable, nonatomic,readonly,strong) UIColor *currentTitleShadowColor; +// @property(nullable, nonatomic,readonly,strong) UIImage *currentImage; +// @property(nullable, nonatomic,readonly,strong) UIImage *currentBackgroundImage; +// @property(nullable, nonatomic,readonly,strong) UIImageSymbolConfiguration *currentPreferredSymbolConfiguration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +// @property(nullable, nonatomic,readonly,strong) NSAttributedString *currentAttributedTitle __attribute__((availability(ios,introduced=6.0))); + + +// @property(nullable, nonatomic,readonly,strong) UILabel *titleLabel __attribute__((availability(ios,introduced=3.0))); +// @property(nullable, nonatomic,readonly,strong) UIImageView *imageView __attribute__((availability(ios,introduced=3.0))); + + + + + +// - (CGRect)backgroundRectForBounds:(CGRect)bounds; +// - (CGRect)contentRectForBounds:(CGRect)bounds; +// - (CGRect)titleRectForContentRect:(CGRect)contentRect; +// - (CGRect)imageRectForContentRect:(CGRect)contentRect; +/* @end */ + + +// @interface UIButton(UIButtonDeprecated) + +// @property(nonatomic,strong) UIFont *font __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) NSLineBreakMode lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) CGSize titleShadowOffset __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UIButton (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end + + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) +// @protocol UIAccessibilityContentSizeCategoryImageAdjusting + + +// @property (nonatomic) BOOL adjustsImageSizeForAccessibilityContentSizeCategory; + +/* @end */ + + + +// @interface UIImageView (UIAccessibilityContentSizeCategoryImageAdjusting) + +/* @end */ + + + +// @interface UIButton (UIAccessibilityContentSizeCategoryImageAdjusting) + +/* @end */ + + + + +// @interface NSTextAttachment (UIAccessibilityContentSizeCategoryImageAdjusting) + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIActivityIndicatorViewStyle; enum { + UIActivityIndicatorViewStyleMedium __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) = 100, + UIActivityIndicatorViewStyleLarge __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) = 101, + + UIActivityIndicatorViewStyleWhiteLarge __attribute__((availability(ios,introduced=2.0,deprecated=13.0,replacement="UIActivityIndicatorViewStyleLarge"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="UIActivityIndicatorViewStyleLarge"))) = 0, + UIActivityIndicatorViewStyleWhite __attribute__((availability(ios,introduced=2.0,deprecated=13.0,replacement="UIActivityIndicatorViewStyleMedium"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="UIActivityIndicatorViewStyleMedium"))) = 1, + UIActivityIndicatorViewStyleGray __attribute__((availability(ios,introduced=2.0,deprecated=13.0,replacement="UIActivityIndicatorViewStyleMedium"))) __attribute__((availability(tvos,unavailable))) = 2, +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIActivityIndicatorView +#define _REWRITER_typedef_UIActivityIndicatorView +typedef struct objc_object UIActivityIndicatorView; +typedef struct {} _objc_exc_UIActivityIndicatorView; +#endif + +struct UIActivityIndicatorView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)style __attribute__((objc_designated_initializer)); +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle; +// @property(nonatomic) BOOL hidesWhenStopped; + +// @property (null_resettable, readwrite, nonatomic, strong) UIColor *color __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +// - (void)startAnimating; +// - (void)stopAnimating; +// @property(nonatomic, readonly, getter=isAnimating) BOOL animating; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + + + + + + +#pragma clang assume_nonnull begin + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=13.0))) // @protocol UIInteraction + +// @property (nonatomic, nullable, weak, readonly) __kindof UIView *view; + +// - (void)willMoveToView:(nullable UIView *)view; +// - (void)didMoveToView:(nullable UIView *)view; + +/* @end */ + + + +// @interface UIView (Interactions) + +// - (void)addInteraction:(id)interaction __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (void)removeInteraction:(id)interaction __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @property (nonatomic, copy) NSArray> *interactions __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @protocol UIDragAnimating, UIDropInteractionDelegate, UIDropSession; +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UITargetedDragPreview +#define _REWRITER_typedef_UITargetedDragPreview +typedef struct objc_object UITargetedDragPreview; +typedef struct {} _objc_exc_UITargetedDragPreview; +#endif + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDropInteraction +#define _REWRITER_typedef_UIDropInteraction +typedef struct objc_object UIDropInteraction; +typedef struct {} _objc_exc_UIDropInteraction; +#endif + +struct UIDropInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithDelegate:(id)delegate __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, nullable, readonly, weak) id delegate; + + + + + + + +// @property (nonatomic, assign) BOOL allowsSimultaneousDropSessions; + +/* @end */ + + + + + + +typedef NSUInteger UIDropOperation; enum { + UIDropOperationCancel = 0, + + + + + + + + UIDropOperationForbidden = 1, + UIDropOperationCopy = 2, + UIDropOperationMove = 3, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDropProposal +#define _REWRITER_typedef_UIDropProposal +typedef struct objc_object UIDropProposal; +typedef struct {} _objc_exc_UIDropProposal; +#endif + +struct UIDropProposal_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithDropOperation:(UIDropOperation)operation __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + +// @property (nonatomic, readonly) UIDropOperation operation; + + + + + +// @property (nonatomic, getter=isPrecise) BOOL precise; + + + + + + + +// @property (nonatomic) BOOL prefersFullSizePreview; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDropInteractionDelegate + +/* @optional */ +// - (BOOL)dropInteraction:(UIDropInteraction *)interaction canHandleSession:(id)session; + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction sessionDidEnter:(id)session; +// - (UIDropProposal *)dropInteraction:(UIDropInteraction *)interaction sessionDidUpdate:(id)session; + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction sessionDidExit:(id)session; + + + + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction performDrop:(id)session; + + + + + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction concludeDrop:(id)session; + + + + + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction sessionDidEnd:(id)session; +// - (nullable UITargetedDragPreview *)dropInteraction:(UIDropInteraction *)interaction previewForDroppingItem:(UIDragItem *)item withDefault:(UITargetedDragPreview *)defaultPreview; + + + + + +// - (void)dropInteraction:(UIDropInteraction *)interaction item:(UIDragItem *)item willAnimateDropWithAnimator:(id)animator; + +/* @end */ + +#pragma clang assume_nonnull end + + +typedef NSInteger UIViewAnimatingState; enum +{ + UIViewAnimatingStateInactive, + UIViewAnimatingStateActive, + UIViewAnimatingStateStopped, +} __attribute__((availability(ios,introduced=10.0))) ; + +typedef NSInteger UIViewAnimatingPosition; enum { + UIViewAnimatingPositionEnd, + UIViewAnimatingPositionStart, + UIViewAnimatingPositionCurrent, +} __attribute__((availability(ios,introduced=10.0))); + + +#pragma clang assume_nonnull begin + +// @protocol UIViewAnimating + +// @property(nonatomic, readonly) UIViewAnimatingState state; + + + +// @property(nonatomic, readonly, getter=isRunning) BOOL running; + + + +// @property(nonatomic, getter=isReversed) BOOL reversed; + + + + + + + +// @property(nonatomic) CGFloat fractionComplete; + + +// - (void)startAnimation; + + +// - (void)startAnimationAfterDelay:(NSTimeInterval)delay; + + + +// - (void)pauseAnimation; + + + + + + + +// - (void)stopAnimation:(BOOL) withoutFinishing; + + + +// - (void)finishAnimationAtPosition:(UIViewAnimatingPosition)finalPosition; + +/* @end */ + + +// @protocol UITimingCurveProvider; + +// @protocol UIViewImplicitlyAnimating + +/* @optional */ + +// - (void)addAnimations:(void (^)(void))animation delayFactor:(CGFloat)delayFactor; +// - (void)addAnimations:(void (^)(void))animation; +// - (void)addCompletion:(void (^)(UIViewAnimatingPosition finalPosition))completion; +// - (void)continueAnimationWithTimingParameters:(nullable id )parameters durationFactor:(CGFloat)durationFactor; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @protocol UIDragInteractionDelegate, UIDragSession; +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UITargetedDragPreview +#define _REWRITER_typedef_UITargetedDragPreview +typedef struct objc_object UITargetedDragPreview; +typedef struct {} _objc_exc_UITargetedDragPreview; +#endif + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDragAnimating + + + + + + + +// - (void)addAnimations:(void (^)(void))animations; +// - (void)addCompletion:(void (^)(UIViewAnimatingPosition finalPosition))completion; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDragInteraction +#define _REWRITER_typedef_UIDragInteraction +typedef struct objc_object UIDragInteraction; +typedef struct {} _objc_exc_UIDragInteraction; +#endif + +struct UIDragInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithDelegate:(id)delegate __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, nullable, readonly, weak) id delegate; + + + + + + +// @property (nonatomic) BOOL allowsSimultaneousRecognitionDuringLift; + + + + + +// @property (nonatomic, getter=isEnabled) BOOL enabled; + + + + +@property (class, nonatomic, readonly, getter=isEnabledByDefault) BOOL enabledByDefault; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDragInteractionDelegate + +/* @required */ +// - (NSArray *)dragInteraction:(UIDragInteraction *)interaction itemsForBeginningSession:(id)session; + +/* @optional */ + + + + + +// - (nullable UITargetedDragPreview *)dragInteraction:(UIDragInteraction *)interaction previewForLiftingItem:(UIDragItem *)item session:(id)session; + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction willAnimateLiftWithAnimator:(id)animator session:(id)session; + + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction sessionWillBegin:(id)session; +// - (BOOL)dragInteraction:(UIDragInteraction *)interaction sessionAllowsMoveOperation:(id)session; +// - (BOOL)dragInteraction:(UIDragInteraction *)interaction sessionIsRestrictedToDraggingApplication:(id)session; + + + + + + + +// - (BOOL)dragInteraction:(UIDragInteraction *)interaction prefersFullSizePreviewsForSession:(id)session; + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction sessionDidMove:(id)session; + + + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction session:(id)session willEndWithOperation:(UIDropOperation)operation; + + + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction session:(id)session didEndWithOperation:(UIDropOperation)operation; + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction sessionDidTransferItems:(id)session; +// - (NSArray *)dragInteraction:(UIDragInteraction *)interaction itemsForAddingToSession:(id)session withTouchAtPoint:(CGPoint)point; +// - (nullable id)dragInteraction:(UIDragInteraction *)interaction sessionForAddingItems:(NSArray> *)sessions withTouchAtPoint:(CGPoint)point; +// - (void)dragInteraction:(UIDragInteraction *)interaction session:(id)session willAddItems:(NSArray *)items forInteraction:(UIDragInteraction *)addingInteraction; +// - (nullable UITargetedDragPreview *)dragInteraction:(UIDragInteraction *)interaction previewForCancellingItem:(UIDragItem *)item withDefault:(UITargetedDragPreview *)defaultPreview; + + + + + +// - (void)dragInteraction:(UIDragInteraction *)interaction item:(UIDragItem *)item willAnimateCancelWithAnimator:(id)animator; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +typedef NSInteger UITextDragOptions; enum { + UITextDragOptionsNone = 0, + UITextDragOptionStripTextColorFromPreviews = (1 << 0) +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// @protocol UITextDragDelegate; + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDraggable + +// @property (nonatomic, weak, nullable) id textDragDelegate; + + + + + +// @property (nonatomic, readonly, nullable) UIDragInteraction *textDragInteraction; + + + +// @property (nonatomic, readonly, getter=isTextDragActive) BOOL textDragActive; + +// @property (nonatomic) UITextDragOptions textDragOptions; + +/* @end */ + + + +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UITargetedDragPreview +#define _REWRITER_typedef_UITargetedDragPreview +typedef struct objc_object UITargetedDragPreview; +typedef struct {} _objc_exc_UITargetedDragPreview; +#endif + +// @protocol UIDragSession, UITextDragRequest; + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDragDelegate + +/* @optional */ +// - (NSArray *)textDraggableView:(UIView *)textDraggableView itemsForDrag:(id)dragRequest; +// - (nullable UITargetedDragPreview *)textDraggableView:(UIView *)textDraggableView dragPreviewForLiftingItem:(UIDragItem *)item session:(id)session; + + + + + +// - (void)textDraggableView:(UIView *)textDraggableView willAnimateLiftWithAnimator:(id)animator session:(id)session; + + + + + +// - (void)textDraggableView:(UIView *)textDraggableView dragSessionWillBegin:(id)session; + + + + +// - (void)textDraggableView:(UIView *)textDraggableView dragSessionDidEnd:(id)session withOperation:(UIDropOperation)operation; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDragRequest + +/* @required */ + + + +// @property (nonatomic, readonly) UITextRange *dragRange; + + + + + +// @property (nonatomic, readonly) NSArray *suggestedItems; + + + + +// @property (nonatomic, readonly) NSArray *existingItems; + + + + + + +// @property (nonatomic, readonly, getter=isSelected) BOOL selected; + + + +// @property (nonatomic, readonly) id dragSession; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSUInteger UITextDropAction; enum { + + + UITextDropActionInsert = 0, + + + + + UITextDropActionReplaceSelection, + + + + + UITextDropActionReplaceAll, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UITextDropProgressMode; enum { + + + + UITextDropProgressModeSystem = 0, + + + + UITextDropProgressModeCustom +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UITextDropPerformer; enum { + + + + + + + UITextDropPerformerView = 0, + UITextDropPerformerDelegate, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UITextDropProposal +#define _REWRITER_typedef_UITextDropProposal +typedef struct objc_object UITextDropProposal; +typedef struct {} _objc_exc_UITextDropProposal; +#endif + +struct UITextDropProposal_IMPL { + struct UIDropProposal_IMPL UIDropProposal_IVARS; +}; + + + + + + + +// @property (nonatomic) UITextDropAction dropAction; + + + +// @property (nonatomic) UITextDropProgressMode dropProgressMode; + + + + + + + +// @property (nonatomic) BOOL useFastSameViewOperations; +// @property (nonatomic) UITextDropPerformer dropPerformer; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIPasteConfiguration +#define _REWRITER_typedef_UIPasteConfiguration +typedef struct objc_object UIPasteConfiguration; +typedef struct {} _objc_exc_UIPasteConfiguration; +#endif + +struct UIPasteConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, copy) NSArray *acceptableTypeIdentifiers; + +// - (instancetype)init __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithAcceptableTypeIdentifiers:(NSArray *)acceptableTypeIdentifiers; +// - (void)addAcceptableTypeIdentifiers:(NSArray *)acceptableTypeIdentifiers; + + +// - (instancetype)initWithTypeIdentifiersForAcceptingClass:(Class)aClass; +// - (void)addTypeIdentifiersForAcceptingClass:(Class)aClass; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UITextPasteConfigurationSupporting; +// @protocol UITextPasteItem; + +// @class UITextRange; +#ifndef _REWRITER_typedef_UITextRange +#define _REWRITER_typedef_UITextRange +typedef struct objc_object UITextRange; +typedef struct {} _objc_exc_UITextRange; +#endif + +// @class NSTextAttachment; +#ifndef _REWRITER_typedef_NSTextAttachment +#define _REWRITER_typedef_NSTextAttachment +typedef struct objc_object NSTextAttachment; +typedef struct {} _objc_exc_NSTextAttachment; +#endif + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextPasteDelegate + +/* @optional */ +// - (void)textPasteConfigurationSupporting:(id)textPasteConfigurationSupporting transformPasteItem:(id)item; +// - (NSAttributedString *)textPasteConfigurationSupporting:(id)textPasteConfigurationSupporting combineItemAttributedStrings:(NSArray *)itemStrings forRange:(UITextRange*)textRange; +// - (UITextRange*)textPasteConfigurationSupporting:(id)textPasteConfigurationSupporting performPasteOfAttributedString:(NSAttributedString*)attributedString toRange:(UITextRange*)textRange; + + + + + + + +// - (BOOL)textPasteConfigurationSupporting:(id)textPasteConfigurationSupporting shouldAnimatePasteOfAttributedString:(NSAttributedString*)attributedString toRange:(UITextRange*)textRange; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextPasteItem + + + +// @property (nonatomic, readonly) __kindof NSItemProvider *itemProvider; + + + +// @property (nonatomic, readonly, nullable) id localObject; + + + + +// @property (nonatomic, readonly) NSDictionary *defaultAttributes; + + +// - (void)setStringResult:(NSString*)string; + + +// - (void)setAttributedStringResult:(NSAttributedString*)string; + + +// - (void)setAttachmentResult:(NSTextAttachment*)textAttachment; + + + +// - (void)setNoResult; + + + + + +// - (void)setDefaultResult; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextPasteConfigurationSupporting + +// @property (nonatomic, weak, nullable) id pasteDelegate; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIDropInteraction; +#ifndef _REWRITER_typedef_UIDropInteraction +#define _REWRITER_typedef_UIDropInteraction +typedef struct objc_object UIDropInteraction; +typedef struct {} _objc_exc_UIDropInteraction; +#endif + +// @protocol UITextDropDelegate; + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDroppable + +// @property (nonatomic, weak, nullable) id textDropDelegate; + + + + + +// @property (nonatomic, readonly, nullable) UIDropInteraction *textDropInteraction; + + + +// @property (nonatomic, readonly, getter=isTextDropActive) BOOL textDropActive; + +/* @end */ + + + +typedef NSUInteger UITextDropEditability; enum { + + + + UITextDropEditabilityNo = 0, + + + + + UITextDropEditabilityTemporary, + + + + + UITextDropEditabilityYes, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @protocol UITextDropRequest; + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDropDelegate + +/* @optional */ + + + + + + +// - (UITextDropEditability)textDroppableView:(UIView *)textDroppableView willBecomeEditableForDrop:(id)drop; +// - (UITextDropProposal*)textDroppableView:(UIView *)textDroppableView proposalForDrop:(id)drop; + + + + + +// - (void)textDroppableView:(UIView *)textDroppableView willPerformDrop:(id)drop; +// - (nullable UITargetedDragPreview *)textDroppableView:(UIView *)textDroppableView previewForDroppingAllItemsWithDefault:(UITargetedDragPreview *)defaultPreview; + + + +// - (void)textDroppableView:(UIView *)textDroppableView dropSessionDidEnter:(id)session; + + + + + + +// - (void)textDroppableView:(UIView *)textDroppableView dropSessionDidUpdate:(id)session; + + + +// - (void)textDroppableView:(UIView *)textDroppableView dropSessionDidExit:(id)session; + + + +// - (void)textDroppableView:(UIView *)textDroppableView dropSessionDidEnd:(id)session; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UITextDropRequest + + + +// @property (nonatomic, readonly) UITextPosition *dropPosition; + + + +// @property (nonatomic, readonly) UITextDropProposal *suggestedProposal; + + + + +// @property (nonatomic, readonly, getter=isSameView) BOOL sameView; + + + + +// @property (nonatomic, readonly) id dropSession; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) // @protocol UIContentSizeCategoryAdjusting + + + + + + + +// @property (nonatomic) BOOL adjustsFontForContentSizeCategory; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +// @class UITextFieldAtomBackgroundView; +#ifndef _REWRITER_typedef_UITextFieldAtomBackgroundView +#define _REWRITER_typedef_UITextFieldAtomBackgroundView +typedef struct objc_object UITextFieldAtomBackgroundView; +typedef struct {} _objc_exc_UITextFieldAtomBackgroundView; +#endif + +// @class UITextFieldBackgroundView; +#ifndef _REWRITER_typedef_UITextFieldBackgroundView +#define _REWRITER_typedef_UITextFieldBackgroundView +typedef struct objc_object UITextFieldBackgroundView; +typedef struct {} _objc_exc_UITextFieldBackgroundView; +#endif + +// @class UITextFieldBorderView; +#ifndef _REWRITER_typedef_UITextFieldBorderView +#define _REWRITER_typedef_UITextFieldBorderView +typedef struct objc_object UITextFieldBorderView; +typedef struct {} _objc_exc_UITextFieldBorderView; +#endif + +// @class UITextFieldLabel; +#ifndef _REWRITER_typedef_UITextFieldLabel +#define _REWRITER_typedef_UITextFieldLabel +typedef struct objc_object UITextFieldLabel; +typedef struct {} _objc_exc_UITextFieldLabel; +#endif + +// @class UITextInputTraits; +#ifndef _REWRITER_typedef_UITextInputTraits +#define _REWRITER_typedef_UITextInputTraits +typedef struct objc_object UITextInputTraits; +typedef struct {} _objc_exc_UITextInputTraits; +#endif + +// @class UITextSelectionView; +#ifndef _REWRITER_typedef_UITextSelectionView +#define _REWRITER_typedef_UITextSelectionView +typedef struct objc_object UITextSelectionView; +typedef struct {} _objc_exc_UITextSelectionView; +#endif + +// @class UITextInteractionAssistant; +#ifndef _REWRITER_typedef_UITextInteractionAssistant +#define _REWRITER_typedef_UITextInteractionAssistant +typedef struct objc_object UITextInteractionAssistant; +typedef struct {} _objc_exc_UITextInteractionAssistant; +#endif + +// @class UIPopoverController; +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + +// @protocol UITextFieldDelegate; +// @protocol UITextSelecting; + +typedef NSInteger UITextBorderStyle; enum { + UITextBorderStyleNone, + UITextBorderStyleLine, + UITextBorderStyleBezel, + UITextBorderStyleRoundedRect +}; + +typedef NSInteger UITextFieldViewMode; enum { + UITextFieldViewModeNever, + UITextFieldViewModeWhileEditing, + UITextFieldViewModeUnlessEditing, + UITextFieldViewModeAlways +}; + +typedef NSInteger UITextFieldDidEndEditingReason; enum { + UITextFieldDidEndEditingReasonCommitted, + UITextFieldDidEndEditingReasonCancelled __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=10_0))) +} __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITextField +#define _REWRITER_typedef_UITextField +typedef struct objc_object UITextField; +typedef struct {} _objc_exc_UITextField; +#endif + +struct UITextField_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// @property(nullable, nonatomic,copy) NSString *text; +// @property(nullable, nonatomic,copy) NSAttributedString *attributedText __attribute__((availability(ios,introduced=6.0))); +// @property(nullable, nonatomic,strong) UIColor *textColor; +// @property(nullable, nonatomic,strong) UIFont *font; +// @property(nonatomic) NSTextAlignment textAlignment; +// @property(nonatomic) UITextBorderStyle borderStyle; +// @property(nonatomic,copy) NSDictionary *defaultTextAttributes __attribute__((availability(ios,introduced=7.0))); + +// @property(nullable, nonatomic,copy) NSString *placeholder; +// @property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder __attribute__((availability(ios,introduced=6.0))); +// @property(nonatomic) BOOL clearsOnBeginEditing; +// @property(nonatomic) BOOL adjustsFontSizeToFitWidth; +// @property(nonatomic) CGFloat minimumFontSize; +// @property(nullable, nonatomic,weak) id delegate; +// @property(nullable, nonatomic,strong) UIImage *background; +// @property(nullable, nonatomic,strong) UIImage *disabledBackground; + +// @property(nonatomic,readonly,getter=isEditing) BOOL editing; +// @property(nonatomic) BOOL allowsEditingTextAttributes __attribute__((availability(ios,introduced=6.0))); +// @property(nullable, nonatomic,copy) NSDictionary *typingAttributes __attribute__((availability(ios,introduced=6.0))); +// @property(nonatomic) UITextFieldViewMode clearButtonMode; + +// @property(nullable, nonatomic,strong) UIView *leftView; +// @property(nonatomic) UITextFieldViewMode leftViewMode; + +// @property(nullable, nonatomic,strong) UIView *rightView; +// @property(nonatomic) UITextFieldViewMode rightViewMode; + + + +// - (CGRect)borderRectForBounds:(CGRect)bounds; +// - (CGRect)textRectForBounds:(CGRect)bounds; +// - (CGRect)placeholderRectForBounds:(CGRect)bounds; +// - (CGRect)editingRectForBounds:(CGRect)bounds; +// - (CGRect)clearButtonRectForBounds:(CGRect)bounds; +// - (CGRect)leftViewRectForBounds:(CGRect)bounds; +// - (CGRect)rightViewRectForBounds:(CGRect)bounds; + +// - (void)drawTextInRect:(CGRect)rect; +// - (void)drawPlaceholderInRect:(CGRect)rect; + + + +// @property (nullable, readwrite, strong) UIView *inputView; +// @property (nullable, readwrite, strong) UIView *inputAccessoryView; + +// @property(nonatomic) BOOL clearsOnInsertion __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + + + + +// @interface UITextField () +/* @end */ + + + + +// @interface UIView (UITextField) +// - (BOOL)endEditing:(BOOL)force; +/* @end */ + + +// @protocol UITextFieldDelegate + +/* @optional */ + +// - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; +// - (void)textFieldDidBeginEditing:(UITextField *)textField; +// - (BOOL)textFieldShouldEndEditing:(UITextField *)textField; +// - (void)textFieldDidEndEditing:(UITextField *)textField; +// - (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason __attribute__((availability(ios,introduced=10.0))); + +// - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; + +// - (void)textFieldDidChangeSelection:(UITextField *)textField __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +// - (BOOL)textFieldShouldClear:(UITextField *)textField; +// - (BOOL)textFieldShouldReturn:(UITextField *)textField; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextFieldTextDidBeginEditingNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextFieldTextDidEndEditingNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextFieldTextDidChangeNotification; + +extern "C" __attribute__((visibility ("default"))) NSString *const UITextFieldDidEndEditingReasonKey __attribute__((availability(ios,introduced=10.0))); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @protocol UIActionSheetDelegate; +// @class UILabel; +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIToolbar +#define _REWRITER_typedef_UIToolbar +typedef struct objc_object UIToolbar; +typedef struct {} _objc_exc_UIToolbar; +#endif + +#ifndef _REWRITER_typedef_UITabBar +#define _REWRITER_typedef_UITabBar +typedef struct objc_object UITabBar; +typedef struct {} _objc_exc_UITabBar; +#endif + +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + + +typedef NSInteger UIActionSheetStyle; enum { + UIActionSheetStyleAutomatic = -1, + UIActionSheetStyleDefault = UIBarStyleDefault, + UIActionSheetStyleBlackTranslucent = UIBarStyleBlackTranslucent, + UIActionSheetStyleBlackOpaque = UIBarStyleBlackOpaque , +} __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead."))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIActionSheet +#define _REWRITER_typedef_UIActionSheet +typedef struct objc_object UIActionSheet; +typedef struct {} _objc_exc_UIActionSheet; +#endif + +struct UIActionSheet_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithTitle:(nullable NSString *)title delegate:(nullable id)delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle destructiveButtonTitle:(nullable NSString *)destructiveButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... __attribute__((sentinel(0,1))) __attribute__((availability(ios_app_extension,unavailable,message="Use UIAlertController instead."))); + +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic,copy) NSString *title; +// @property(nonatomic) UIActionSheetStyle actionSheetStyle; + + + +// - (NSInteger)addButtonWithTitle:(nullable NSString *)title; +// - (nullable NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex; +// @property(nonatomic,readonly) NSInteger numberOfButtons; +// @property(nonatomic) NSInteger cancelButtonIndex; +// @property(nonatomic) NSInteger destructiveButtonIndex; + +// @property(nonatomic,readonly) NSInteger firstOtherButtonIndex; +// @property(nonatomic,readonly,getter=isVisible) BOOL visible; + + + + +// - (void)showFromToolbar:(UIToolbar *)view; +// - (void)showFromTabBar:(UITabBar *)view; +// - (void)showFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated __attribute__((availability(ios,introduced=3.2))); +// - (void)showFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated __attribute__((availability(ios,introduced=3.2))); +// - (void)showInView:(UIView *)view; + + + +// - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated; + +/* @end */ + + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIActionSheetDelegate +/* @optional */ + + +// - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); + + + +// - (void)actionSheetCancel:(UIActionSheet *)actionSheet __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); + +// - (void)willPresentActionSheet:(UIActionSheet *)actionSheet __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); +// - (void)didPresentActionSheet:(UIActionSheet *)actionSheet __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); + +// - (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); +// - (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message="Use UIAlertController instead."))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIAlertViewStyle; enum { + UIAlertViewStyleDefault = 0, + UIAlertViewStyleSecureTextInput, + UIAlertViewStylePlainTextInput, + UIAlertViewStyleLoginAndPasswordInput +} __attribute__((availability(tvos,unavailable))); + +// @protocol UIAlertViewDelegate; +// @class UILabel; +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIToolbar +#define _REWRITER_typedef_UIToolbar +typedef struct objc_object UIToolbar; +typedef struct {} _objc_exc_UIToolbar; +#endif + +#ifndef _REWRITER_typedef_UITabBar +#define _REWRITER_typedef_UITabBar +typedef struct objc_object UITabBar; +typedef struct {} _objc_exc_UITabBar; +#endif + +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIAlertView +#define _REWRITER_typedef_UIAlertView +typedef struct objc_object UIAlertView; +typedef struct {} _objc_exc_UIAlertView; +#endif + +struct UIAlertView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithTitle:(nullable NSString *)title message:(nullable NSString *)message delegate:(nullable id )delegate cancelButtonTitle:(nullable NSString *)cancelButtonTitle otherButtonTitles:(nullable NSString *)otherButtonTitles, ... __attribute__((sentinel(0,1))) __attribute__((availability(ios_app_extension,unavailable,message="Use UIAlertController instead."))); + +// - (id)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (nullable instancetype) initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic,copy) NSString *title; +// @property(nullable,nonatomic,copy) NSString *message; + + + + +// - (NSInteger)addButtonWithTitle:(nullable NSString *)title; +// - (nullable NSString *)buttonTitleAtIndex:(NSInteger)buttonIndex; +// @property(nonatomic,readonly) NSInteger numberOfButtons; +// @property(nonatomic) NSInteger cancelButtonIndex; + +// @property(nonatomic,readonly) NSInteger firstOtherButtonIndex; +// @property(nonatomic,readonly,getter=isVisible) BOOL visible; + + +// - (void)show; + + + +// - (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated; + + +// @property(nonatomic,assign) UIAlertViewStyle alertViewStyle __attribute__((availability(ios,introduced=5.0))); + + + +// - (nullable UITextField *)textFieldAtIndex:(NSInteger)textFieldIndex __attribute__((availability(ios,introduced=5.0))); + + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIAlertViewDelegate +/* @optional */ + + +// - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); + + + +// - (void)alertViewCancel:(UIAlertView *)alertView __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); + +// - (void)willPresentAlertView:(UIAlertView *)alertView __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); +// - (void)didPresentAlertView:(UIAlertView *)alertView __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); + +// - (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); +// - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); + + +// - (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use UIAlertController instead."))); + +/* @end */ + +#pragma clang assume_nonnull end + +typedef NSInteger UISceneActivationState; enum { + UISceneActivationStateUnattached = -1, + UISceneActivationStateForegroundActive, + UISceneActivationStateForegroundInactive, + UISceneActivationStateBackground +} __attribute__((availability(ios,introduced=13.0))); + + +typedef NSString * UISceneSessionRole __attribute__((swift_wrapper(enum))) __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) NSErrorDomain const UISceneErrorDomain __attribute__((availability(ios,introduced=13.0))); +typedef NSInteger UISceneErrorCode; enum { + UISceneErrorCodeMultipleScenesNotSupported, + UISceneErrorCodeRequestDenied +} __attribute__((availability(ios,introduced=13.0))); + +#pragma clang assume_nonnull begin + +typedef NSInteger UIStatusBarStyle; enum { + UIStatusBarStyleDefault = 0, + UIStatusBarStyleLightContent __attribute__((availability(ios,introduced=7.0))) = 1, + UIStatusBarStyleDarkContent __attribute__((availability(ios,introduced=13.0))) = 3, + + UIStatusBarStyleBlackTranslucent __attribute__((availability(ios,introduced=2_0,deprecated=7_0,message="" "Use UIStatusBarStyleLightContent"))) = 1, + UIStatusBarStyleBlackOpaque __attribute__((availability(ios,introduced=2_0,deprecated=7_0,message="" "Use UIStatusBarStyleLightContent"))) = 2, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIStatusBarAnimation; enum { + UIStatusBarAnimationNone, + UIStatusBarAnimationFade __attribute__((availability(ios,introduced=3.2))), + UIStatusBarAnimationSlide __attribute__((availability(ios,introduced=3.2))), +} __attribute__((availability(tvos,unavailable))); + + + +typedef NSInteger UIInterfaceOrientation; enum { + UIInterfaceOrientationUnknown = UIDeviceOrientationUnknown, + UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait, + UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown, + UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight, + UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft +} __attribute__((availability(tvos,unavailable))); + + + + +extern "C" __attribute__((visibility ("default"))) NSExceptionName const UIApplicationInvalidInterfaceOrientationException __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIInterfaceOrientationMask; enum { + UIInterfaceOrientationMaskPortrait = (1 << UIInterfaceOrientationPortrait), + UIInterfaceOrientationMaskLandscapeLeft = (1 << UIInterfaceOrientationLandscapeLeft), + UIInterfaceOrientationMaskLandscapeRight = (1 << UIInterfaceOrientationLandscapeRight), + UIInterfaceOrientationMaskPortraitUpsideDown = (1 << UIInterfaceOrientationPortraitUpsideDown), + UIInterfaceOrientationMaskLandscape = (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), + UIInterfaceOrientationMaskAll = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown), + UIInterfaceOrientationMaskAllButUpsideDown = (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight), +} __attribute__((availability(tvos,unavailable))); + +static inline BOOL UIInterfaceOrientationIsPortrait(UIInterfaceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIInterfaceOrientationPortrait || (orientation) == UIInterfaceOrientationPortraitUpsideDown); +} + +static inline BOOL UIInterfaceOrientationIsLandscape(UIInterfaceOrientation orientation) __attribute__((availability(tvos,unavailable))) { + return ((orientation) == UIInterfaceOrientationLandscapeLeft || (orientation) == UIInterfaceOrientationLandscapeRight); +} + +typedef NSUInteger UIRemoteNotificationType; enum { + UIRemoteNotificationTypeNone = 0, + UIRemoteNotificationTypeBadge = 1 << 0, + UIRemoteNotificationTypeSound = 1 << 1, + UIRemoteNotificationTypeAlert = 1 << 2, + UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, +} __attribute__((availability(ios,introduced=3_0,deprecated=8_0,message="" "Use UserNotifications Framework's UNAuthorizationOptions for user notifications and registerForRemoteNotifications for receiving remote notifications instead."))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIBackgroundFetchResult; enum { + UIBackgroundFetchResultNewData, + UIBackgroundFetchResultNoData, + UIBackgroundFetchResultFailed +} __attribute__((availability(ios,introduced=7.0))); + +typedef NSInteger UIBackgroundRefreshStatus; enum { + UIBackgroundRefreshStatusRestricted, + UIBackgroundRefreshStatusDenied, + UIBackgroundRefreshStatusAvailable +} __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef NSInteger UIApplicationState; enum { + UIApplicationStateActive, + UIApplicationStateInactive, + UIApplicationStateBackground +} __attribute__((availability(ios,introduced=4.0))); + +typedef NSUInteger UIBackgroundTaskIdentifier __attribute__((swift_wrapper(enum))); +extern "C" __attribute__((visibility ("default"))) const UIBackgroundTaskIdentifier UIBackgroundTaskInvalid __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) const NSTimeInterval UIMinimumKeepAliveTimeout __attribute__((availability(ios,introduced=4.0,deprecated=13.0,message="Please use PushKit for VoIP applications."))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use PushKit for VoIP applications."))); +extern "C" __attribute__((visibility ("default"))) const NSTimeInterval UIApplicationBackgroundFetchIntervalMinimum __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=11.0))); +extern "C" __attribute__((visibility ("default"))) const NSTimeInterval UIApplicationBackgroundFetchIntervalNever __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef NSString * UIApplicationOpenExternalURLOptionsKey __attribute__((swift_wrapper(enum))); + +// @class CKShareMetadata; +#ifndef _REWRITER_typedef_CKShareMetadata +#define _REWRITER_typedef_CKShareMetadata +typedef struct objc_object CKShareMetadata; +typedef struct {} _objc_exc_CKShareMetadata; +#endif + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +// @class UILocalNotification; +#ifndef _REWRITER_typedef_UILocalNotification +#define _REWRITER_typedef_UILocalNotification +typedef struct objc_object UILocalNotification; +typedef struct {} _objc_exc_UILocalNotification; +#endif + +// @protocol UIApplicationDelegate; +// @class INIntent; +#ifndef _REWRITER_typedef_INIntent +#define _REWRITER_typedef_INIntent +typedef struct objc_object INIntent; +typedef struct {} _objc_exc_INIntent; +#endif + +// @class INIntentResponse; +#ifndef _REWRITER_typedef_INIntentResponse +#define _REWRITER_typedef_INIntentResponse +typedef struct objc_object INIntentResponse; +typedef struct {} _objc_exc_INIntentResponse; +#endif + +// @class UIScene; +#ifndef _REWRITER_typedef_UIScene +#define _REWRITER_typedef_UIScene +typedef struct objc_object UIScene; +typedef struct {} _objc_exc_UIScene; +#endif + +#ifndef _REWRITER_typedef_UIWindowScene +#define _REWRITER_typedef_UIWindowScene +typedef struct objc_object UIWindowScene; +typedef struct {} _objc_exc_UIWindowScene; +#endif + +#ifndef _REWRITER_typedef_UISceneSession +#define _REWRITER_typedef_UISceneSession +typedef struct objc_object UISceneSession; +typedef struct {} _objc_exc_UISceneSession; +#endif + +#ifndef _REWRITER_typedef_UISceneConfiguration +#define _REWRITER_typedef_UISceneConfiguration +typedef struct objc_object UISceneConfiguration; +typedef struct {} _objc_exc_UISceneConfiguration; +#endif + +#ifndef _REWRITER_typedef_UISceneConnectionOptions +#define _REWRITER_typedef_UISceneConnectionOptions +typedef struct objc_object UISceneConnectionOptions; +typedef struct {} _objc_exc_UISceneConnectionOptions; +#endif + +#ifndef _REWRITER_typedef_UISceneActivationRequestOptions +#define _REWRITER_typedef_UISceneActivationRequestOptions +typedef struct objc_object UISceneActivationRequestOptions; +typedef struct {} _objc_exc_UISceneActivationRequestOptions; +#endif + +#ifndef _REWRITER_typedef_UISceneDestructionRequestOptions +#define _REWRITER_typedef_UISceneDestructionRequestOptions +typedef struct objc_object UISceneDestructionRequestOptions; +typedef struct {} _objc_exc_UISceneDestructionRequestOptions; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIApplication +#define _REWRITER_typedef_UIApplication +typedef struct objc_object UIApplication; +typedef struct {} _objc_exc_UIApplication; +#endif + +struct UIApplication_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + + +@property(class, nonatomic, readonly) UIApplication *sharedApplication __attribute__((availability(ios_app_extension,unavailable,message="Use view controller based solutions where appropriate instead."))); + +// @property(nullable, nonatomic, assign) id delegate; + +// - (void)beginIgnoringInteractionEvents __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use UIView's userInteractionEnabled property instead"))) __attribute__((availability(ios_app_extension,unavailable,message=""))); +// - (void)endIgnoringInteractionEvents __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use UIView's userInteractionEnabled property instead"))) __attribute__((availability(ios_app_extension,unavailable,message=""))); +// @property(nonatomic, readonly, getter=isIgnoringInteractionEvents) BOOL ignoringInteractionEvents __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use UIView's userInteractionEnabled property instead"))); + +// @property(nonatomic,getter=isIdleTimerDisabled) BOOL idleTimerDisabled; + +// - (BOOL)openURL:(NSURL*)url __attribute__((availability(ios,introduced=2.0,deprecated=10.0,replacement="openURL:options:completionHandler:"))) __attribute__((availability(ios_app_extension,unavailable,message=""))); +// - (BOOL)canOpenURL:(NSURL *)url __attribute__((availability(ios,introduced=3.0))); + + + + + +// - (void)openURL:(NSURL*)url options:(NSDictionary *)options completionHandler:(void (^ _Nullable)(BOOL success))completion __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(ios_app_extension,unavailable,message=""))); + +// - (void)sendEvent:(UIEvent *)event; + +// @property(nullable, nonatomic,readonly) UIWindow *keyWindow __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes"))); +// @property(nonatomic,readonly) NSArray<__kindof UIWindow *> *windows; + +// - (BOOL)sendAction:(SEL)action to:(nullable id)target from:(nullable id)sender forEvent:(nullable UIEvent *)event; + +// @property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Provide a custom network activity UI in your app if desired."))); + +// @property(readonly, nonatomic) UIStatusBarStyle statusBarStyle __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the statusBarManager property of the window scene instead."))); + +// @property(readonly, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the statusBarManager property of the window scene instead."))); + +// @property(readonly, nonatomic) UIInterfaceOrientation statusBarOrientation __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the interfaceOrientation property of the window scene instead."))); +// - (UIInterfaceOrientationMask)supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,readonly) NSTimeInterval statusBarOrientationAnimationDuration __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +// @property(nonatomic,readonly) CGRect statusBarFrame __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use the statusBarManager property of the window scene instead."))); + +// @property(nonatomic) NSInteger applicationIconBadgeNumber; + +// @property(nonatomic) BOOL applicationSupportsShakeToEdit __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,readonly) UIApplicationState applicationState __attribute__((availability(ios,introduced=4.0))); +// @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining __attribute__((availability(ios,introduced=4.0))); + +// - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^ _Nullable)(void))handler __attribute__((availability(ios,introduced=4.0))) __attribute__((objc_requires_super)); +// - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithName:(nullable NSString *)taskName expirationHandler:(void(^ _Nullable)(void))handler __attribute__((availability(ios,introduced=7.0))) __attribute__((objc_requires_super)); +// - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier __attribute__((availability(ios,introduced=4.0))) __attribute__((objc_requires_super)); +// - (void)setMinimumBackgroundFetchInterval:(NSTimeInterval)minimumBackgroundFetchInterval __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Use a BGAppRefreshTask in the BackgroundTasks framework instead"))) __attribute__((availability(tvos,introduced=11.0,deprecated=13.0,message="Use a BGAppRefreshTask in the BackgroundTasks framework instead"))); +; + + + + +// @property (nonatomic, readonly) UIBackgroundRefreshStatus backgroundRefreshStatus __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property(nonatomic,readonly,getter=isProtectedDataAvailable) BOOL protectedDataAvailable __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic,readonly) UIUserInterfaceLayoutDirection userInterfaceLayoutDirection __attribute__((availability(ios,introduced=5.0))); + + +// @property(nonatomic,readonly) UIContentSizeCategory preferredContentSizeCategory __attribute__((availability(ios,introduced=7.0))); + + + +// @property(nonatomic, readonly) NSSet *connectedScenes __attribute__((availability(ios,introduced=13.0))); + + +// @property(nonatomic, readonly) NSSet *openSessions __attribute__((availability(ios,introduced=13.0))); + + +// @property(nonatomic, readonly) BOOL supportsMultipleScenes __attribute__((availability(ios,introduced=13.0))); + + + + +// - (void)requestSceneSessionActivation:(nullable UISceneSession *)sceneSession userActivity:(nullable NSUserActivity *)userActivity options:(nullable UISceneActivationRequestOptions *)options errorHandler:(nullable void (^)(NSError * error))errorHandler __attribute__((availability(ios,introduced=13.0))); + + +// - (void)requestSceneSessionDestruction:(UISceneSession *)sceneSession options:(nullable UISceneDestructionRequestOptions *)options errorHandler:(nullable void (^)(NSError * error))errorHandler __attribute__((availability(ios,introduced=13.0))); + + +// - (void)requestSceneSessionRefresh:(UISceneSession *)sceneSession __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +// @interface UIApplication (UIRemoteNotifications) + + +// - (void)registerForRemoteNotifications __attribute__((availability(ios,introduced=8.0))); + +// - (void)unregisterForRemoteNotifications __attribute__((availability(ios,introduced=3.0))); + + +// @property(nonatomic, readonly, getter=isRegisteredForRemoteNotifications) BOOL registeredForRemoteNotifications __attribute__((availability(ios,introduced=8.0))); + +// - (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message="Use -[UIApplication registerForRemoteNotifications] and UserNotifications Framework's -[UNUserNotificationCenter requestAuthorizationWithOptions:completionHandler:]"))) __attribute__((availability(tvos,unavailable))); + + +// - (UIRemoteNotificationType)enabledRemoteNotificationTypes __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message="Use -[UIApplication isRegisteredForRemoteNotifications] and UserNotifications Framework's -[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] to retrieve user-enabled remote notification and user notification settings"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UIApplication (UILocalNotifications) + +// - (void)presentLocalNotificationNow:(UILocalNotification *)notification __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter addNotificationRequest:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +// - (void)scheduleLocalNotification:(UILocalNotification *)notification __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter addNotificationRequest:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); +// - (void)cancelLocalNotification:(UILocalNotification *)notification __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter removePendingNotificationRequestsWithIdentifiers:]"))) __attribute__((availability(tvos,unavailable))); +// - (void)cancelAllLocalNotifications __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter removeAllPendingNotificationRequests]"))) __attribute__((availability(tvos,unavailable))); + +// @property(nullable,nonatomic,copy) NSArray *scheduledLocalNotifications __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter getPendingNotificationRequestsWithCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @class UIUserNotificationSettings; +#ifndef _REWRITER_typedef_UIUserNotificationSettings +#define _REWRITER_typedef_UIUserNotificationSettings +typedef struct objc_object UIUserNotificationSettings; +typedef struct {} _objc_exc_UIUserNotificationSettings; +#endif + +// @interface UIApplication (UIUserNotificationSettings) + + +// - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter requestAuthorizationWithOptions:completionHandler:] and -[UNUserNotificationCenter setNotificationCategories:]"))) __attribute__((availability(tvos,unavailable))); + + +// @property(nonatomic, readonly, nullable) UIUserNotificationSettings *currentUserNotificationSettings __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] and -[UNUserNotificationCenter getNotificationCategoriesWithCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @interface UIApplication (UIRemoteControlEvents) + +// - (void)beginReceivingRemoteControlEvents __attribute__((availability(ios,introduced=4.0))); +// - (void)endReceivingRemoteControlEvents __attribute__((availability(ios,introduced=4.0))); + +/* @end */ + + +// @interface UIApplication (UINewsstand) +// - (void)setNewsstandIconImage:(nullable UIImage *)image __attribute__((availability(ios,introduced=5.0,deprecated=9.0,message="Newsstand apps now behave like normal apps on SpringBoard"))) __attribute__((availability(tvos,unavailable))); +/* @end */ + + +// @class UIApplicationShortcutItem; +#ifndef _REWRITER_typedef_UIApplicationShortcutItem +#define _REWRITER_typedef_UIApplicationShortcutItem +typedef struct objc_object UIApplicationShortcutItem; +typedef struct {} _objc_exc_UIApplicationShortcutItem; +#endif + +// @interface UIApplication (UIShortcutItems) + +// @property (nullable, nonatomic, copy) NSArray *shortcutItems __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); +/* @end */ + + +// @interface UIApplication (UIAlternateApplicationIcons) + +// @property (readonly, nonatomic) BOOL supportsAlternateIcons __attribute__((availability(macosx_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(tvos,introduced=10.2))); + + +// - (void)setAlternateIconName:(nullable NSString *)alternateIconName completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler __attribute__((availability(macosx_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(tvos,introduced=10.2))); + + +// @property (nullable, readonly, nonatomic) NSString *alternateIconName __attribute__((availability(macosx_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios_app_extension,unavailable,message="Extensions may not have alternate icons"))) __attribute__((availability(ios,introduced=10.3))) __attribute__((availability(tvos,introduced=10.2))); +/* @end */ + + +// @protocol UIStateRestoring; +// @interface UIApplication (UIStateRestoration) + + + +// - (void)extendStateRestoration __attribute__((availability(ios,introduced=6.0))); +// - (void)completeStateRestoration __attribute__((availability(ios,introduced=6.0))); + + + +// - (void)ignoreSnapshotOnNextApplicationLaunch __attribute__((availability(ios,introduced=7.0))); + + + + + +// + (void)registerObjectForStateRestoration:(id)object restorationIdentifier:(NSString *)restorationIdentifier __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + + +typedef NSString * UIApplicationLaunchOptionsKey __attribute__((swift_wrapper(enum))); + +// @protocol UIApplicationDelegate + +/* @optional */ + +// - (void)applicationDidFinishLaunching:(UIApplication *)application; +// - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions __attribute__((availability(ios,introduced=6.0))); +// - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions __attribute__((availability(ios,introduced=3.0))); + +// - (void)applicationDidBecomeActive:(UIApplication *)application; +// - (void)applicationWillResignActive:(UIApplication *)application; +// - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url __attribute__((availability(ios,introduced=2.0,deprecated=9.0,replacement="application:openURL:options:"))) __attribute__((availability(tvos,unavailable))); +// - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation __attribute__((availability(ios,introduced=4.2,deprecated=9.0,replacement="application:openURL:options:"))) __attribute__((availability(tvos,unavailable))); + + +typedef NSString * UIApplicationOpenURLOptionsKey __attribute__((swift_wrapper(enum))); + +// - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options __attribute__((availability(ios,introduced=9.0))); + +// - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application; +// - (void)applicationWillTerminate:(UIApplication *)application; +// - (void)applicationSignificantTimeChange:(UIApplication *)application; + +// - (void)application:(UIApplication *)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +// - (void)application:(UIApplication *)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); + +// - (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +// - (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); + + + // - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenter requestAuthorizationWithOptions:completionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +// - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken __attribute__((availability(ios,introduced=3.0))); + +// - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error __attribute__((availability(ios,introduced=3.0))); + +// - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo __attribute__((availability(ios,introduced=3.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:] for user visible notifications and -[UIApplicationDelegate application:didReceiveRemoteNotification:fetchCompletionHandler:] for silent remote notifications"))); + +// - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:] or -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + + + + +// - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)(void))completionHandler __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +// - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)(void))completionHandler __attribute__((availability(ios,introduced=9.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + + + + +// - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)(void))completionHandler __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + +// - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)(void))completionHandler __attribute__((availability(ios,introduced=9.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); + + + + +// - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler __attribute__((availability(ios,introduced=7.0))); + + +// - (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Use a BGAppRefreshTask in the BackgroundTasks framework instead"))) __attribute__((availability(tvos,introduced=11.0,deprecated=13.0,message="Use a BGAppRefreshTask in the BackgroundTasks framework instead"))); + + + +// - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + + + + + + +// - (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler __attribute__((availability(ios,introduced=7.0))); + +// - (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(nullable NSDictionary *)userInfo reply:(void(^)(NSDictionary * _Nullable replyInfo))reply __attribute__((availability(ios,introduced=8.2))); + +// - (void)applicationShouldRequestHealthAuthorization:(UIApplication *)application __attribute__((availability(ios,introduced=9.0))); + +// - (void)application:(UIApplication *)application handleIntent:(INIntent *)intent completionHandler:(void(^)(INIntentResponse *intentResponse))completionHandler __attribute__((availability(ios,introduced=11.0))); + +// - (void)applicationDidEnterBackground:(UIApplication *)application __attribute__((availability(ios,introduced=4.0))); +// - (void)applicationWillEnterForeground:(UIApplication *)application __attribute__((availability(ios,introduced=4.0))); + +// - (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication *)application __attribute__((availability(ios,introduced=4.0))); +// - (void)applicationProtectedDataDidBecomeAvailable:(UIApplication *)application __attribute__((availability(ios,introduced=4.0))); + +// @property (nullable, nonatomic, strong) UIWindow *window __attribute__((availability(ios,introduced=5.0))); + +// - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + +typedef NSString * UIApplicationExtensionPointIdentifier __attribute__((swift_wrapper(enum))); + + + + +// - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(UIApplicationExtensionPointIdentifier)extensionPointIdentifier __attribute__((availability(ios,introduced=8.0))); + + + +// - (nullable UIViewController *) application:(UIApplication *)application viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +// - (BOOL)application:(UIApplication *)application shouldSaveSecureApplicationState:(NSCoder *)coder __attribute__((availability(ios,introduced=13.2))); +// - (BOOL)application:(UIApplication *)application shouldRestoreSecureApplicationState:(NSCoder *)coder __attribute__((availability(ios,introduced=13.2))); +// - (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +// - (void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); + + +// - (BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0,deprecated=13.2,message="Use application:shouldSaveSecureApplicationState: instead"))); +// - (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0,deprecated=13.2,message="Use application:shouldRestoreSecureApplicationState: instead"))); + + + + + + + +// - (BOOL)application:(UIApplication *)application willContinueUserActivityWithType:(NSString *)userActivityType __attribute__((availability(ios,introduced=8.0))); + + + + + +// - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray> * _Nullable restorableObjects))restorationHandler __attribute__((availability(ios,introduced=8.0))); + + +// - (void)application:(UIApplication *)application didFailToContinueUserActivityWithType:(NSString *)userActivityType error:(NSError *)error __attribute__((availability(ios,introduced=8.0))); + + +// - (void)application:(UIApplication *)application didUpdateUserActivity:(NSUserActivity *)userActivity __attribute__((availability(ios,introduced=8.0))); + + + + + +// - (void)application:(UIApplication *)application userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata __attribute__((availability(ios,introduced=10.0))); + + + + + +// - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options __attribute__((availability(ios,introduced=13.0))); + + + +// - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions __attribute__((availability(ios,introduced=13.0))); +/* @end */ + + +// @interface UIApplication(UIApplicationDeprecated) + +// @property(nonatomic,getter=isProximitySensingEnabled) BOOL proximitySensingEnabled __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated __attribute__((availability(ios,introduced=2.0,deprecated=3.2,message="Use -[UIViewController prefersStatusBarHidden]"))) __attribute__((availability(tvos,unavailable))); + + +// @property(readwrite, nonatomic) UIInterfaceOrientation statusBarOrientation __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Explicit setting of the status bar orientation is more limited in iOS 6.0 and later"))) __attribute__((availability(tvos,unavailable))); +// - (void)setStatusBarOrientation:(UIInterfaceOrientation)interfaceOrientation animated:(BOOL)animated __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Explicit setting of the status bar orientation is more limited in iOS 6.0 and later"))) __attribute__((availability(tvos,unavailable))); + + +// @property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use -[UIViewController preferredStatusBarStyle]"))) __attribute__((availability(tvos,unavailable))); +// - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use -[UIViewController preferredStatusBarStyle]"))) __attribute__((availability(tvos,unavailable))); + + +// @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message="Use -[UIViewController prefersStatusBarHidden]"))) __attribute__((availability(tvos,unavailable))); +// - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="Use -[UIViewController prefersStatusBarHidden]"))) __attribute__((availability(tvos,unavailable))); + +// - (BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void(^ _Nullable)(void))keepAliveHandler __attribute__((availability(ios,introduced=4.0,deprecated=9.0,message="Please use PushKit for VoIP applications instead of calling this method"))) __attribute__((availability(tvos,unavailable))); +// - (void)clearKeepAliveTimeout __attribute__((availability(ios,introduced=4.0,deprecated=9.0,message="Please use PushKit for VoIP applications instead of calling this method"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) int UIApplicationMain(int argc, char * _Nullable argv[_Nonnull], NSString * _Nullable principalClassName, NSString * _Nullable delegateClassName); + +extern "C" __attribute__((visibility ("default"))) NSRunLoopMode const UITrackingRunLoopMode; + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidEnterBackgroundNotification __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationWillEnterForegroundNotification __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidFinishLaunchingNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidBecomeActiveNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationWillResignActiveNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidReceiveMemoryWarningNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationWillTerminateNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationSignificantTimeChangeNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationWillChangeStatusBarOrientationNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidChangeStatusBarOrientationNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStatusBarOrientationUserInfoKey __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationWillChangeStatusBarFrameNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationDidChangeStatusBarFrameNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStatusBarFrameUserInfoKey __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=2.0,deprecated=13.0,message="Use viewWillTransitionToSize:withTransitionCoordinator: instead."))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationBackgroundRefreshStatusDidChangeNotification __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,introduced=11.0))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationProtectedDataWillBecomeUnavailable __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationProtectedDataDidBecomeAvailable __attribute__((availability(ios,introduced=4.0))); + +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsURLKey __attribute__((swift_name("url"))) __attribute__((availability(ios,introduced=3.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsSourceApplicationKey __attribute__((swift_name("sourceApplication"))) __attribute__((availability(ios,introduced=3.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsRemoteNotificationKey __attribute__((swift_name("remoteNotification"))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsLocalNotificationKey __attribute__((swift_name("localNotification"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]"))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsAnnotationKey __attribute__((swift_name("annotation"))) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsLocationKey __attribute__((swift_name("location"))) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsNewsstandDownloadsKey __attribute__((swift_name("newsstandDownloads"))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsBluetoothCentralsKey __attribute__((swift_name("bluetoothCentrals"))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsBluetoothPeripheralsKey __attribute__((swift_name("bluetoothPeripherals"))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsShortcutItemKey __attribute__((swift_name("shortcutItem"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsUserActivityDictionaryKey __attribute__((swift_name("userActivityDictionary"))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsUserActivityTypeKey __attribute__((swift_name("userActivityType"))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationLaunchOptionsKey const UIApplicationLaunchOptionsCloudKitShareMetadataKey __attribute__((swift_name("cloudKitShareMetadata"))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationOpenSettingsURLString __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsSourceApplicationKey __attribute__((swift_name("sourceApplication"))) __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsAnnotationKey __attribute__((swift_name("annotation"))) __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) UIApplicationOpenURLOptionsKey const UIApplicationOpenURLOptionsOpenInPlaceKey __attribute__((swift_name("openInPlace"))) __attribute__((availability(ios,introduced=9.0))); + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIApplicationUserDidTakeScreenshotNotification __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) UIApplicationExtensionPointIdentifier const UIApplicationKeyboardExtensionPointIdentifier __attribute__((swift_name("keyboard"))) __attribute__((availability(ios,introduced=8.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) UIApplicationOpenExternalURLOptionsKey const UIApplicationOpenURLOptionUniversalLinksOnly __attribute__((availability(ios,introduced=10.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIStateRestorationViewControllerStoryboardKey __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStateRestorationBundleVersionKey __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStateRestorationUserInterfaceIdiomKey __attribute__((availability(ios,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStateRestorationTimestampKey __attribute__((availability(ios,introduced=7.0))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIApplicationStateRestorationSystemVersionKey __attribute__((availability(ios,introduced=7.0))); + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +// @class UIViewController; +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + + + + + +// @protocol UIViewControllerRestoration +// + (nullable UIViewController *) viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder; +/* @end */ + + +// @protocol UIDataSourceModelAssociation +// - (nullable NSString *) modelIdentifierForElementAtIndexPath:(NSIndexPath *)idx inView:(UIView *)view; +// - (nullable NSIndexPath *) indexPathForElementWithModelIdentifier:(NSString *)identifier inView:(UIView *)view; +/* @end */ + + + + +// @protocol UIObjectRestoration; + + + + +// @protocol UIStateRestoring +/* @optional */ + + + +// @property (nonatomic, readonly, nullable) id restorationParent; + + + +// @property (nonatomic, readonly, nullable) Class objectRestorationClass; + + + + +// - (void) encodeRestorableStateWithCoder:(NSCoder *)coder; +// - (void) decodeRestorableStateWithCoder:(NSCoder *)coder; + + + + + +// - (void) applicationFinishedRestoringState; +/* @end */ + + + + +// @protocol UIObjectRestoration +// + (nullable id) objectWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +// @class UINavigationItem; +#ifndef _REWRITER_typedef_UINavigationItem +#define _REWRITER_typedef_UINavigationItem +typedef struct objc_object UINavigationItem; +typedef struct {} _objc_exc_UINavigationItem; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UITabBarItem +#define _REWRITER_typedef_UITabBarItem +typedef struct objc_object UITabBarItem; +typedef struct {} _objc_exc_UITabBarItem; +#endif + +// @class UISearchDisplayController; +#ifndef _REWRITER_typedef_UISearchDisplayController +#define _REWRITER_typedef_UISearchDisplayController +typedef struct objc_object UISearchDisplayController; +typedef struct {} _objc_exc_UISearchDisplayController; +#endif + +// @class UIPopoverController; +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + +// @class UIStoryboard; +#ifndef _REWRITER_typedef_UIStoryboard +#define _REWRITER_typedef_UIStoryboard +typedef struct objc_object UIStoryboard; +typedef struct {} _objc_exc_UIStoryboard; +#endif + +#ifndef _REWRITER_typedef_UIStoryboardSegue +#define _REWRITER_typedef_UIStoryboardSegue +typedef struct objc_object UIStoryboardSegue; +typedef struct {} _objc_exc_UIStoryboardSegue; +#endif + +#ifndef _REWRITER_typedef_UIStoryboardUnwindSegueSource +#define _REWRITER_typedef_UIStoryboardUnwindSegueSource +typedef struct objc_object UIStoryboardUnwindSegueSource; +typedef struct {} _objc_exc_UIStoryboardUnwindSegueSource; +#endif + +// @class UIScrollView; +#ifndef _REWRITER_typedef_UIScrollView +#define _REWRITER_typedef_UIScrollView +typedef struct objc_object UIScrollView; +typedef struct {} _objc_exc_UIScrollView; +#endif + +// @protocol UIViewControllerTransitionCoordinator; + +typedef NSInteger UIModalTransitionStyle; enum { + UIModalTransitionStyleCoverVertical = 0, + UIModalTransitionStyleFlipHorizontal __attribute__((availability(tvos,unavailable))), + UIModalTransitionStyleCrossDissolve, + UIModalTransitionStylePartialCurl __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))), +}; + +typedef NSInteger UIModalPresentationStyle; enum { + UIModalPresentationFullScreen = 0, + UIModalPresentationPageSheet __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))), + UIModalPresentationFormSheet __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))), + UIModalPresentationCurrentContext __attribute__((availability(ios,introduced=3.2))), + UIModalPresentationCustom __attribute__((availability(ios,introduced=7.0))), + UIModalPresentationOverFullScreen __attribute__((availability(ios,introduced=8.0))), + UIModalPresentationOverCurrentContext __attribute__((availability(ios,introduced=8.0))), + UIModalPresentationPopover __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))), + UIModalPresentationBlurOverFullScreen __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))), + UIModalPresentationNone __attribute__((availability(ios,introduced=7.0))) = -1, + UIModalPresentationAutomatic __attribute__((availability(ios,introduced=13.0))) = -2, +}; + +// @protocol UIContentContainer + +// @property (nonatomic, readonly) CGSize preferredContentSize __attribute__((availability(ios,introduced=8.0))); +// - (void)preferredContentSizeDidChangeForChildContentContainer:(id )container __attribute__((availability(ios,introduced=8.0))); + + + + + + + +// - (void)systemLayoutFittingSizeDidChangeForChildContentContainer:(id )container __attribute__((availability(ios,introduced=8.0))); + + + + + + +// - (CGSize)sizeForChildContentContainer:(id )container withParentContainerSize:(CGSize)parentSize __attribute__((availability(ios,introduced=8.0))); + + + + + + +// - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id )coordinator __attribute__((availability(ios,introduced=8.0))); + + + + + + +// - (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id )coordinator __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIViewControllerShowDetailTargetDidChangeNotification __attribute__((availability(ios,introduced=8.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +struct UIViewController_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(null_resettable, nonatomic,strong) UIView *view; +// - (void)loadView; +// - (void)loadViewIfNeeded __attribute__((availability(ios,introduced=9.0))); +// @property(nullable, nonatomic, readonly, strong) UIView *viewIfLoaded __attribute__((availability(ios,introduced=9.0))); + +// - (void)viewWillUnload __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (void)viewDidUnload __attribute__((availability(ios,introduced=3.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// - (void)viewDidLoad; +// @property(nonatomic, readonly, getter=isViewLoaded) BOOL viewLoaded __attribute__((availability(ios,introduced=3.0))); + +// @property(nullable, nonatomic, readonly, copy) NSString *nibName; +// @property(nullable, nonatomic, readonly, strong) NSBundle *nibBundle; +// @property(nullable, nonatomic, readonly, strong) UIStoryboard *storyboard __attribute__((availability(ios,introduced=5.0))); + +// - (void)performSegueWithIdentifier:(NSString *)identifier sender:(nullable id)sender __attribute__((availability(ios,introduced=5.0))); +// - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(nullable id)sender __attribute__((availability(ios,introduced=6.0))); +// - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(nullable id)sender __attribute__((availability(ios,introduced=5.0))); + + +// - (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController sender:(nullable id)sender __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); +// - (BOOL)canPerformUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender __attribute__((availability(ios,introduced=6.0,deprecated=13.0,replacement="canPerformUnwindSegueAction:fromViewController:sender:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="canPerformUnwindSegueAction:fromViewController:sender:"))); + + + + + +// - (NSArray *)allowedChildViewControllersForUnwindingFromSource:(UIStoryboardUnwindSegueSource *)source __attribute__((availability(ios,introduced=9.0))); + + + + +// - (nullable UIViewController *)childViewControllerContainingSegueSource:(UIStoryboardUnwindSegueSource *)source __attribute__((availability(ios,introduced=9.0))); + + + +// - (nullable UIViewController *)viewControllerForUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(nullable id)sender __attribute__((availability(ios,introduced=6.0,deprecated=9.0,message=""))); + + +// - (void)unwindForSegue:(UIStoryboardSegue *)unwindSegue towardsViewController:(UIViewController *)subsequentVC __attribute__((availability(ios,introduced=9.0))); + + + + +// - (nullable UIStoryboardSegue *)segueForUnwindingToViewController:(UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(nullable NSString *)identifier __attribute__((availability(ios,introduced=6.0,deprecated=9.0,message=""))); + +// - (void)viewWillAppear:(BOOL)animated; +// - (void)viewDidAppear:(BOOL)animated; +// - (void)viewWillDisappear:(BOOL)animated; +// - (void)viewDidDisappear:(BOOL)animated; + + +// - (void)viewWillLayoutSubviews __attribute__((availability(ios,introduced=5.0))); + +// - (void)viewDidLayoutSubviews __attribute__((availability(ios,introduced=5.0))); + +// @property(nullable, nonatomic,copy) NSString *title; + +// - (void)didReceiveMemoryWarning; + + + + + + +// @property(nullable,nonatomic,weak,readonly) UIViewController *parentViewController; + + +// @property(nullable, nonatomic,readonly) UIViewController *modalViewController __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// @property(nullable, nonatomic,readonly) UIViewController *presentedViewController __attribute__((availability(ios,introduced=5.0))); + + +// @property(nullable, nonatomic,readonly) UIViewController *presentingViewController __attribute__((availability(ios,introduced=5.0))); + + + + + + +// @property(nonatomic,assign) BOOL definesPresentationContext __attribute__((availability(ios,introduced=5.0))); + + +// @property(nonatomic,assign) BOOL providesPresentationContextTransitionStyle __attribute__((availability(ios,introduced=5.0))); + + +// @property (nonatomic) BOOL restoresFocusAfterTransition __attribute__((availability(ios,introduced=10.0))); +// @property(nonatomic, readonly, getter=isBeingPresented) BOOL beingPresented __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic, readonly, getter=isBeingDismissed) BOOL beingDismissed __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic, readonly, getter=isMovingToParentViewController) BOOL movingToParentViewController __attribute__((availability(ios,introduced=5.0))); +// @property(nonatomic, readonly, getter=isMovingFromParentViewController) BOOL movingFromParentViewController __attribute__((availability(ios,introduced=5.0))); + + + + + + +// - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ _Nullable)(void))completion __attribute__((availability(ios,introduced=5.0))); + +// - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^ _Nullable)(void))completion __attribute__((availability(ios,introduced=5.0))); + + +// - (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// - (void)dismissModalViewControllerAnimated:(BOOL)animated __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property(nonatomic,assign) UIModalTransitionStyle modalTransitionStyle __attribute__((availability(ios,introduced=3.0))); + + + + + + +// @property(nonatomic,assign) UIModalPresentationStyle modalPresentationStyle __attribute__((availability(ios,introduced=3.2))); + + +// @property(nonatomic,assign) BOOL modalPresentationCapturesStatusBarAppearance __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + + +// @property(nonatomic, readonly) BOOL disablesAutomaticKeyboardDismissal __attribute__((availability(ios,introduced=4.3))); + +// @property(nonatomic,assign) BOOL wantsFullScreenLayout __attribute__((availability(ios,introduced=3.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,assign) UIRectEdge edgesForExtendedLayout __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets __attribute__((availability(ios,introduced=7.0,deprecated=11.0,message="Use UIScrollView's contentInsetAdjustmentBehavior instead"))) __attribute__((availability(tvos,introduced=7.0,deprecated=11.0,message="Use UIScrollView's contentInsetAdjustmentBehavior instead"))); + + + +// @property (nonatomic) CGSize preferredContentSize __attribute__((availability(ios,introduced=7.0))); + + +// @property(nonatomic, readonly) UIStatusBarStyle preferredStatusBarStyle __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic, readonly) BOOL prefersStatusBarHidden __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic, readonly) UIStatusBarAnimation preferredStatusBarUpdateAnimation __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + + +// - (void)setNeedsStatusBarAppearanceUpdate __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + + +// - (nullable UIViewController *)targetViewControllerForAction:(SEL)action sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + + +// - (void)showViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + +// - (void)showDetailViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + + + + + +// @property (nonatomic, readonly) UIUserInterfaceStyle preferredUserInterfaceStyle __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +// - (void)setNeedsUserInterfaceAppearanceUpdate __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +// @property (nonatomic) UIUserInterfaceStyle overrideUserInterfaceStyle __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + +// @interface UIViewController (UIViewControllerRotation) + + + +// + (void)attemptRotationToDeviceOrientation __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + + +// - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// @property(nonatomic, readonly) BOOL shouldAutorotate __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic, readonly) UIInterfaceOrientationMask supportedInterfaceOrientations __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic, readonly) UIInterfaceOrientation preferredInterfaceOrientationForPresentation __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + + +// - (nullable UIView *)rotatingHeaderView __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Header views are animated along with the rest of the view hierarchy"))) __attribute__((availability(tvos,unavailable))); +// - (nullable UIView *)rotatingFooterView __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Footer views are animated along with the rest of the view hierarchy"))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,readonly) UIInterfaceOrientation interfaceOrientation __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Implement viewWillTransitionToSize:withTransitionCoordinator: instead"))) __attribute__((availability(tvos,unavailable))); +// - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message="Implement viewWillTransitionToSize:withTransitionCoordinator: instead"))) __attribute__((availability(tvos,unavailable))); + +// - (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +// @interface UIViewController (UIViewControllerEditing) + +// @property(nonatomic,getter=isEditing) BOOL editing; +// - (void)setEditing:(BOOL)editing animated:(BOOL)animated; + +// @property(nonatomic, readonly) UIBarButtonItem *editButtonItem; + +/* @end */ + + +// @interface UIViewController (UISearchDisplayControllerSupport) + +// @property(nullable, nonatomic, readonly, strong) UISearchDisplayController *searchDisplayController __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + + + + + +extern "C" __attribute__((visibility ("default"))) NSExceptionName const UIViewControllerHierarchyInconsistencyException __attribute__((availability(ios,introduced=5.0))); + + + + + + +// @interface UIViewController (UIContainerViewControllerProtectedMethods) + + +// @property(nonatomic,readonly) NSArray<__kindof UIViewController *> *childViewControllers __attribute__((availability(ios,introduced=5.0))); + + + + + + +// - (void)addChildViewController:(UIViewController *)childController __attribute__((availability(ios,introduced=5.0))); + + + + + +// - (void)removeFromParentViewController __attribute__((availability(ios,introduced=5.0))); +// - (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ _Nullable)(void))animations completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=5.0))); + + + + + + +// - (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated __attribute__((availability(ios,introduced=5.0))); +// - (void)endAppearanceTransition __attribute__((availability(ios,introduced=5.0))); + + +// @property(nonatomic, readonly, nullable) UIViewController *childViewControllerForStatusBarStyle __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic, readonly, nullable) UIViewController *childViewControllerForStatusBarHidden __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + + +// - (void)setOverrideTraitCollection:(nullable UITraitCollection *)collection forChildViewController:(UIViewController *)childViewController __attribute__((availability(ios,introduced=8.0))); +// - (nullable UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, readonly, nullable) UIViewController *childViewControllerForUserInterfaceStyle __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + +// @interface UIViewController (UIContainerViewControllerCallbacks) +// - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (BOOL)shouldAutomaticallyForwardRotationMethods __attribute__((availability(ios,introduced=6.0,deprecated=8.0,message="Manually forward viewWillTransitionToSize:withTransitionCoordinator: if necessary"))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic, readonly) BOOL shouldAutomaticallyForwardAppearanceMethods __attribute__((availability(ios,introduced=6.0))); +// - (void)willMoveToParentViewController:(nullable UIViewController *)parent __attribute__((availability(ios,introduced=5.0))); +// - (void)didMoveToParentViewController:(nullable UIViewController *)parent __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + +// @interface UIViewController (UIStateRestoration) +// @property (nullable, nonatomic, copy) NSString *restorationIdentifier __attribute__((availability(ios,introduced=6.0))); +// @property (nullable, nonatomic, readwrite, assign) Class restorationClass __attribute__((availability(ios,introduced=6.0))); +// - (void) encodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +// - (void) decodeRestorableStateWithCoder:(NSCoder *)coder __attribute__((availability(ios,introduced=6.0))); +// - (void) applicationFinishedRestoringState __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + +// @interface UIViewController (UIConstraintBasedLayoutCoreMethods) +// - (void)updateViewConstraints __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + +// @protocol UIViewControllerTransitioningDelegate; + +// @interface UIViewController(UIViewControllerTransitioning) + +// @property (nullable, nonatomic, weak) id transitioningDelegate __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +// @interface UIViewController (UILayoutSupport) + +// @property(nonatomic,readonly,strong) id topLayoutGuide __attribute__((availability(ios,introduced=7.0,deprecated=11.0,message="Use view.safeAreaLayoutGuide.topAnchor instead of topLayoutGuide.bottomAnchor"))) __attribute__((availability(tvos,introduced=7.0,deprecated=11.0,message="Use view.safeAreaLayoutGuide.topAnchor instead of topLayoutGuide.bottomAnchor"))); +// @property(nonatomic,readonly,strong) id bottomLayoutGuide __attribute__((availability(ios,introduced=7.0,deprecated=11.0,message="Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchor"))) __attribute__((availability(tvos,introduced=7.0,deprecated=11.0,message="Use view.safeAreaLayoutGuide.bottomAnchor instead of bottomLayoutGuide.topAnchor"))); + + + + +// @property(nonatomic) UIEdgeInsets additionalSafeAreaInsets __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + +// @property(nonatomic,readonly) NSDirectionalEdgeInsets systemMinimumLayoutMargins __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + + +// @property(nonatomic) BOOL viewRespectsSystemMinimumLayoutMargins __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// - (void)viewLayoutMarginsDidChange __attribute__((objc_requires_super)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (void)viewSafeAreaInsetsDidChange __attribute__((objc_requires_super)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + +// @interface UIViewController (UIKeyCommand) + +// - (void)addKeyCommand:(UIKeyCommand *)keyCommand __attribute__((availability(ios,introduced=9.0))); +// - (void)removeKeyCommand:(UIKeyCommand *)keyCommand __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + +// @interface UIViewController (UIPerformsActions) + + + + +// @property (nonatomic, readonly) BOOL performsActionsWhilePresentingModally __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + +// @class NSExtensionContext; +#ifndef _REWRITER_typedef_NSExtensionContext +#define _REWRITER_typedef_NSExtensionContext +typedef struct objc_object NSExtensionContext; +typedef struct {} _objc_exc_NSExtensionContext; +#endif + + +// @interface UIViewController(NSExtensionAdditions) + + +// @property (nullable, nonatomic,readonly,strong) NSExtensionContext *extensionContext __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + +// @class UIPresentationController; +#ifndef _REWRITER_typedef_UIPresentationController +#define _REWRITER_typedef_UIPresentationController +typedef struct objc_object UIPresentationController; +typedef struct {} _objc_exc_UIPresentationController; +#endif + +#ifndef _REWRITER_typedef_UIPopoverPresentationController +#define _REWRITER_typedef_UIPopoverPresentationController +typedef struct objc_object UIPopoverPresentationController; +typedef struct {} _objc_exc_UIPopoverPresentationController; +#endif + + +// @interface UIViewController (UIPresentationController) + +// @property (nullable, nonatomic,readonly) UIPresentationController *presentationController __attribute__((availability(ios,introduced=8.0))); +// @property (nullable, nonatomic,readonly) UIPopoverPresentationController *popoverPresentationController __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, getter=isModalInPresentation) BOOL modalInPresentation __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + + +// @protocol UIViewControllerPreviewingDelegate; + +// @protocol UIViewControllerPreviewing + + +// @property (nonatomic, readonly) UIGestureRecognizer *previewingGestureRecognizerForFailureRelationship __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); + +// @property (nonatomic, readonly) id delegate __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); +// @property (nonatomic, readonly) UIView *sourceView __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); + + + + +// @property (nonatomic) CGRect sourceRect __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) // @protocol UIViewControllerPreviewingDelegate + + +// - (nullable UIViewController *)previewingContext:(id )previewingContext viewControllerForLocation:(CGPoint)location __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); +// - (void)previewingContext:(id )previewingContext commitViewController:(UIViewController *)viewControllerToCommit __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); + +/* @end */ + + +// @interface UIViewController (UIViewControllerPreviewingRegistration) + + +// - (id )registerForPreviewingWithDelegate:(id)delegate sourceView:(UIView *)sourceView __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); +// - (void)unregisterForPreviewingWithContext:(id )previewing __attribute__((availability(ios,introduced=9.0,deprecated=13.0,replacement="UIContextMenuInteraction"))); + +/* @end */ + + +// @interface UIViewController (UIScreenEdgesDeferringSystemGestures) + + +// @property (nonatomic, readonly, nullable) UIViewController *childViewControllerForScreenEdgesDeferringSystemGestures __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, readonly) UIRectEdge preferredScreenEdgesDeferringSystemGestures __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (void)setNeedsUpdateOfScreenEdgesDeferringSystemGestures __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UIViewController (UIHomeIndicatorAutoHidden) + + +// @property (nonatomic, readonly, nullable) UIViewController *childViewControllerForHomeIndicatorAutoHidden __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, readonly) BOOL prefersHomeIndicatorAutoHidden __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (void)setNeedsUpdateOfHomeIndicatorAutoHidden __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @protocol UIPreviewActionItem; + +// @interface UIViewController () + +// @property(nonatomic, readonly) NSArray > *previewActionItems __attribute__((availability(ios,introduced=9.0,deprecated=13.0,message="UIViewControllerPreviewing is deprecated. Please use UIContextMenuInteraction."))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) // @protocol UIPreviewActionItem +// @property(nonatomic, copy, readonly) NSString *title; +/* @end */ + + +typedef NSInteger UIPreviewActionStyle; enum { + UIPreviewActionStyleDefault=0, + UIPreviewActionStyleSelected, + UIPreviewActionStyleDestructive, +} __attribute__((availability(ios,introduced=9.0))); + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0,deprecated=13_0,message="" "UIViewControllerPreviewing is deprecated. Please use UIContextMenuInteraction."))) +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIPreviewAction +#define _REWRITER_typedef_UIPreviewAction +typedef struct objc_object UIPreviewAction; +typedef struct {} _objc_exc_UIPreviewAction; +#endif + +struct UIPreviewAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic, copy, readonly) void (^handler)(id action, UIViewController *previewViewController); + +// + (instancetype)actionWithTitle:(NSString *)title style:(UIPreviewActionStyle)style handler:(void (^)(UIPreviewAction *action, UIViewController *previewViewController))handler; + +/* @end */ + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=9_0,deprecated=13_0,message="" "UIViewControllerPreviewing is deprecated. Please use UIContextMenuInteraction."))) +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIPreviewActionGroup +#define _REWRITER_typedef_UIPreviewActionGroup +typedef struct objc_object UIPreviewActionGroup; +typedef struct {} _objc_exc_UIPreviewActionGroup; +#endif + +struct UIPreviewActionGroup_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)actionGroupWithTitle:(NSString *)title style:(UIPreviewActionStyle)style actions:(NSArray *)actions; +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIAlertActionStyle; enum { + UIAlertActionStyleDefault = 0, + UIAlertActionStyleCancel, + UIAlertActionStyleDestructive +} __attribute__((availability(ios,introduced=8.0))); + +typedef NSInteger UIAlertControllerStyle; enum { + UIAlertControllerStyleActionSheet = 0, + UIAlertControllerStyleAlert +} __attribute__((availability(ios,introduced=8.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIAlertAction +#define _REWRITER_typedef_UIAlertAction +typedef struct objc_object UIAlertAction; +typedef struct {} _objc_exc_UIAlertAction; +#endif + +struct UIAlertAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)actionWithTitle:(nullable NSString *)title style:(UIAlertActionStyle)style handler:(void (^ _Nullable)(UIAlertAction *action))handler; + +// @property (nullable, nonatomic, readonly) NSString *title; +// @property (nonatomic, readonly) UIAlertActionStyle style; +// @property (nonatomic, getter=isEnabled) BOOL enabled; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIAlertController +#define _REWRITER_typedef_UIAlertController +typedef struct objc_object UIAlertController; +typedef struct {} _objc_exc_UIAlertController; +#endif + +struct UIAlertController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// + (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle; + +// - (void)addAction:(UIAlertAction *)action; +// @property (nonatomic, readonly) NSArray *actions; + +// @property (nonatomic, strong, nullable) UIAlertAction *preferredAction __attribute__((availability(ios,introduced=9.0))); + +// - (void)addTextFieldWithConfigurationHandler:(void (^ _Nullable)(UITextField *textField))configurationHandler; +// @property (nullable, nonatomic, readonly) NSArray *textFields; + +// @property (nullable, nonatomic, copy) NSString *title; +// @property (nullable, nonatomic, copy) NSString *message; + +// @property (nonatomic, readonly) UIAlertControllerStyle preferredStyle; + +/* @end */ + + + +// @interface UIAlertController (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIBarMetrics; enum { + UIBarMetricsDefault, + UIBarMetricsCompact, + UIBarMetricsDefaultPrompt = 101, + UIBarMetricsCompactPrompt, + + UIBarMetricsLandscapePhone __attribute__((availability(ios,introduced=5_0,deprecated=8_0,message="" "Use UIBarMetricsCompact instead"))) = UIBarMetricsCompact, + UIBarMetricsLandscapePhonePrompt __attribute__((availability(ios,introduced=7_0,deprecated=8_0,message="" "Use UIBarMetricsCompactPrompt"))) = UIBarMetricsCompactPrompt, +}; + +typedef NSInteger UIBarPosition; enum { + UIBarPositionAny = 0, + UIBarPositionBottom = 1, + UIBarPositionTop = 2, + UIBarPositionTopAttached = 3, +} __attribute__((availability(ios,introduced=7.0))); + + + + + + + +// @protocol UIBarPositioning +// @property(nonatomic,readonly) UIBarPosition barPosition; +/* @end */ + + +// @protocol UIBarPositioningDelegate +/* @optional */ + + + + +// - (UIBarPosition)positionForBar:(id )bar; +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIBarButtonItemStyle; enum { + UIBarButtonItemStylePlain, + UIBarButtonItemStyleBordered __attribute__((availability(ios,introduced=2_0,deprecated=8_0,message="" "Use UIBarButtonItemStylePlain when minimum deployment target is iOS7 or later"))), + UIBarButtonItemStyleDone, +}; + +typedef NSInteger UIBarButtonSystemItem; enum { + UIBarButtonSystemItemDone, + UIBarButtonSystemItemCancel, + UIBarButtonSystemItemEdit, + UIBarButtonSystemItemSave, + UIBarButtonSystemItemAdd, + UIBarButtonSystemItemFlexibleSpace, + UIBarButtonSystemItemFixedSpace, + UIBarButtonSystemItemCompose, + UIBarButtonSystemItemReply, + UIBarButtonSystemItemAction, + UIBarButtonSystemItemOrganize, + UIBarButtonSystemItemBookmarks, + UIBarButtonSystemItemSearch, + UIBarButtonSystemItemRefresh, + UIBarButtonSystemItemStop, + UIBarButtonSystemItemCamera, + UIBarButtonSystemItemTrash, + UIBarButtonSystemItemPlay, + UIBarButtonSystemItemPause, + UIBarButtonSystemItemRewind, + UIBarButtonSystemItemFastForward, + UIBarButtonSystemItemUndo __attribute__((availability(ios,introduced=3.0))), + UIBarButtonSystemItemRedo __attribute__((availability(ios,introduced=3.0))), + UIBarButtonSystemItemPageCurl __attribute__((availability(ios,introduced=4_0,deprecated=11_0,message="" ))), + UIBarButtonSystemItemClose __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) +}; + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +struct UIBarButtonItem_IMPL { + struct UIBarItem_IMPL UIBarItem_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)initWithImage:(nullable UIImage *)image style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action; +// - (instancetype)initWithImage:(nullable UIImage *)image landscapeImagePhone:(nullable UIImage *)landscapeImagePhone style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action __attribute__((availability(ios,introduced=5.0))); +// - (instancetype)initWithTitle:(nullable NSString *)title style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action; +// - (instancetype)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(nullable id)target action:(nullable SEL)action; +// - (instancetype)initWithCustomView:(UIView *)customView; + +// @property(nonatomic) UIBarButtonItemStyle style; +// @property(nonatomic) CGFloat width; +// @property(nullable, nonatomic,copy) NSSet *possibleTitles; +// @property(nullable, nonatomic,strong) __kindof UIView *customView; +// @property(nullable, nonatomic) SEL action; +// @property(nullable, nonatomic,weak) id target; +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state style:(UIBarButtonItemStyle)style barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForState:(UIControlState)state style:(UIBarButtonItemStyle)style barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property(nullable, nonatomic,strong) UIColor *tintColor __attribute__((availability(ios,introduced=5.0))); + + + +// - (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (CGFloat)backgroundVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (UIOffset)titlePositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + +// - (void)setBackButtonBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// - (nullable UIImage *)backButtonBackgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + +// - (void)setBackButtonTitlePositionAdjustment:(UIOffset)adjustment forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// - (UIOffset)backButtonTitlePositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + + + +// - (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// - (CGFloat)backButtonBackgroundVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UIBarButtonItem (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIBarButtonItemGroup +#define _REWRITER_typedef_UIBarButtonItemGroup +typedef struct objc_object UIBarButtonItemGroup; +typedef struct {} _objc_exc_UIBarButtonItemGroup; +#endif + +struct UIBarButtonItemGroup_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)initWithBarButtonItems:(NSArray *)barButtonItems representativeItem:(nullable UIBarButtonItem *)representativeItem __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property (nonatomic, readwrite, copy) NSArray *barButtonItems; + + + + + +// @property (nonatomic, readwrite, strong, nullable) UIBarButtonItem *representativeItem; + + +// @property (nonatomic, readonly, assign, getter = isDisplayingRepresentativeItem) BOOL displayingRepresentativeItem; + +/* @end */ + + +// @interface UIBarButtonItem (UIBarButtonItemGroup) + + +// @property (nonatomic, readonly, weak, nullable) UIBarButtonItemGroup *buttonGroup __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + + +// @interface NSIndexPath (UIKitAdditions) + +// + (instancetype)indexPathForRow:(NSInteger)row inSection:(NSInteger)section; +// + (instancetype)indexPathForItem:(NSInteger)item inSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); + + +// @property (nonatomic, readonly) NSInteger section; + + +// @property (nonatomic, readonly) NSInteger row; + +// @property (nonatomic, readonly) NSInteger item __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) +// @protocol UIDataSourceTranslating + + + + + +// - (NSInteger)presentationSectionIndexForDataSourceSectionIndex:(NSInteger)dataSourceSectionIndex; + + + + + +// - (NSInteger)dataSourceSectionIndexForPresentationSectionIndex:(NSInteger)presentationSectionIndex; + + + + + +// - (nullable NSIndexPath *)presentationIndexPathForDataSourceIndexPath:(nullable NSIndexPath *)dataSourceIndexPath; + + + + + +// - (nullable NSIndexPath *)dataSourceIndexPathForPresentationIndexPath:(nullable NSIndexPath *)presentationIndexPath; + + + + +// - (void)performUsingPresentationValues:(void (__attribute__((noescape)) ^)(void))actionsToTranslate __attribute__((swift_name("performUsingPresentationValues(_:)"))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef NSUInteger UICollectionViewScrollPosition; enum { + UICollectionViewScrollPositionNone = 0, + + + + UICollectionViewScrollPositionTop = 1 << 0, + UICollectionViewScrollPositionCenteredVertically = 1 << 1, + UICollectionViewScrollPositionBottom = 1 << 2, + + + UICollectionViewScrollPositionLeft = 1 << 3, + UICollectionViewScrollPositionCenteredHorizontally = 1 << 4, + UICollectionViewScrollPositionRight = 1 << 5 +}; + + +typedef NSInteger UICollectionViewReorderingCadence; enum { + UICollectionViewReorderingCadenceImmediate, + UICollectionViewReorderingCadenceFast, + UICollectionViewReorderingCadenceSlow +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @class UICollectionView; +#ifndef _REWRITER_typedef_UICollectionView +#define _REWRITER_typedef_UICollectionView +typedef struct objc_object UICollectionView; +typedef struct {} _objc_exc_UICollectionView; +#endif + +#ifndef _REWRITER_typedef_UICollectionReusableView +#define _REWRITER_typedef_UICollectionReusableView +typedef struct objc_object UICollectionReusableView; +typedef struct {} _objc_exc_UICollectionReusableView; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewCell +#define _REWRITER_typedef_UICollectionViewCell +typedef struct objc_object UICollectionViewCell; +typedef struct {} _objc_exc_UICollectionViewCell; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewLayout +#define _REWRITER_typedef_UICollectionViewLayout +typedef struct objc_object UICollectionViewLayout; +typedef struct {} _objc_exc_UICollectionViewLayout; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewTransitionLayout +#define _REWRITER_typedef_UICollectionViewTransitionLayout +typedef struct objc_object UICollectionViewTransitionLayout; +typedef struct {} _objc_exc_UICollectionViewTransitionLayout; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewLayoutAttributes +#define _REWRITER_typedef_UICollectionViewLayoutAttributes +typedef struct objc_object UICollectionViewLayoutAttributes; +typedef struct {} _objc_exc_UICollectionViewLayoutAttributes; +#endif + +#ifndef _REWRITER_typedef_UITouch +#define _REWRITER_typedef_UITouch +typedef struct objc_object UITouch; +typedef struct {} _objc_exc_UITouch; +#endif + +#ifndef _REWRITER_typedef_UINib +#define _REWRITER_typedef_UINib +typedef struct objc_object UINib; +typedef struct {} _objc_exc_UINib; +#endif + +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UIDragPreviewParameters +#define _REWRITER_typedef_UIDragPreviewParameters +typedef struct objc_object UIDragPreviewParameters; +typedef struct {} _objc_exc_UIDragPreviewParameters; +#endif + +#ifndef _REWRITER_typedef_UIDragPreviewTarget +#define _REWRITER_typedef_UIDragPreviewTarget +typedef struct objc_object UIDragPreviewTarget; +typedef struct {} _objc_exc_UIDragPreviewTarget; +#endif + +// @class UICollectionViewDropProposal; +#ifndef _REWRITER_typedef_UICollectionViewDropProposal +#define _REWRITER_typedef_UICollectionViewDropProposal +typedef struct objc_object UICollectionViewDropProposal; +typedef struct {} _objc_exc_UICollectionViewDropProposal; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewPlaceholder +#define _REWRITER_typedef_UICollectionViewPlaceholder +typedef struct objc_object UICollectionViewPlaceholder; +typedef struct {} _objc_exc_UICollectionViewPlaceholder; +#endif + +#ifndef _REWRITER_typedef_UICollectionViewDropPlaceholder +#define _REWRITER_typedef_UICollectionViewDropPlaceholder +typedef struct objc_object UICollectionViewDropPlaceholder; +typedef struct {} _objc_exc_UICollectionViewDropPlaceholder; +#endif + +// @class UIContextMenuConfiguration; +#ifndef _REWRITER_typedef_UIContextMenuConfiguration +#define _REWRITER_typedef_UIContextMenuConfiguration +typedef struct objc_object UIContextMenuConfiguration; +typedef struct {} _objc_exc_UIContextMenuConfiguration; +#endif + +#ifndef _REWRITER_typedef_UITargetedPreview +#define _REWRITER_typedef_UITargetedPreview +typedef struct objc_object UITargetedPreview; +typedef struct {} _objc_exc_UITargetedPreview; +#endif + +// @protocol UIContextMenuInteractionCommitAnimating; +// @protocol UIDataSourceTranslating, UISpringLoadedInteractionContext; +// @protocol UIDragSession, UIDropSession; +// @protocol UICollectionViewDragDelegate, UICollectionViewDropDelegate, UICollectionViewDropCoordinator, UICollectionViewDropItem, UICollectionViewDropPlaceholderContext; + + +typedef void (*UICollectionViewLayoutInteractiveTransitionCompletion)(BOOL completed, BOOL finished); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UICollectionViewFocusUpdateContext +#define _REWRITER_typedef_UICollectionViewFocusUpdateContext +typedef struct objc_object UICollectionViewFocusUpdateContext; +typedef struct {} _objc_exc_UICollectionViewFocusUpdateContext; +#endif + +struct UICollectionViewFocusUpdateContext_IMPL { + struct UIFocusUpdateContext_IMPL UIFocusUpdateContext_IVARS; +}; + + +// @property (nonatomic, strong, readonly, nullable) NSIndexPath *previouslyFocusedIndexPath; +// @property (nonatomic, strong, readonly, nullable) NSIndexPath *nextFocusedIndexPath; + +/* @end */ + + +// @protocol UICollectionViewDataSource +/* @required */ + +// - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section; + + +// - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath; + +/* @optional */ + +// - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView; + + +// - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath; + +// - (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=9.0))); +// - (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath __attribute__((availability(ios,introduced=9.0))); + + +// - (nullable NSArray *)indexTitlesForCollectionView:(UICollectionView *)collectionView __attribute__((availability(tvos,introduced=10.2))); + + + +// - (NSIndexPath *)collectionView:(UICollectionView *)collectionView indexPathForIndexTitle:(NSString *)title atIndex:(NSInteger)index __attribute__((availability(tvos,introduced=10.2))); + +/* @end */ + + +// @protocol UICollectionViewDataSourcePrefetching +/* @required */ + +// - (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths:(NSArray *)indexPaths __attribute__((availability(ios,introduced=10.0))); + +/* @optional */ + +// - (void)collectionView:(UICollectionView *)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray *)indexPaths __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + + + +// @protocol UICollectionViewDelegate +/* @optional */ +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath; +// - (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath; +// - (void)collectionView:(UICollectionView *)collectionView didUnhighlightItemAtIndexPath:(NSIndexPath *)indexPath; +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath; +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldDeselectItemAtIndexPath:(NSIndexPath *)indexPath; +// - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath; +// - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath; + +// - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=8.0))); +// - (void)collectionView:(UICollectionView *)collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=8.0))); +// - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath; +// - (void)collectionView:(UICollectionView *)collectionView didEndDisplayingSupplementaryView:(UICollectionReusableView *)view forElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath; + + + +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=6.0,deprecated=13.0,replacement="collectionView:contextMenuConfigurationForRowAtIndexPath:"))); +// - (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender __attribute__((availability(ios,introduced=6.0,deprecated=13.0,replacement="collectionView:contextMenuConfigurationForRowAtIndexPath:"))); +// - (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender __attribute__((availability(ios,introduced=6.0,deprecated=13.0,replacement="collectionView:contextMenuConfigurationForRowAtIndexPath:"))); + + +// - (nonnull UICollectionViewTransitionLayout *)collectionView:(UICollectionView *)collectionView transitionLayoutForOldLayout:(UICollectionViewLayout *)fromLayout newLayout:(UICollectionViewLayout *)toLayout; + + +// - (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=9.0))); +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldUpdateFocusInContext:(UICollectionViewFocusUpdateContext *)context __attribute__((availability(ios,introduced=9.0))); +// - (void)collectionView:(UICollectionView *)collectionView didUpdateFocusInContext:(UICollectionViewFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator __attribute__((availability(ios,introduced=9.0))); +// - (nullable NSIndexPath *)indexPathForPreferredFocusedViewInCollectionView:(UICollectionView *)collectionView __attribute__((availability(ios,introduced=9.0))); + +// - (NSIndexPath *)collectionView:(UICollectionView *)collectionView targetIndexPathForMoveFromItemAtIndexPath:(NSIndexPath *)originalIndexPath toProposedIndexPath:(NSIndexPath *)proposedIndexPath __attribute__((availability(ios,introduced=9.0))); + +// - (CGPoint)collectionView:(UICollectionView *)collectionView targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset __attribute__((availability(ios,introduced=9.0))); +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldSpringLoadItemAtIndexPath:(NSIndexPath *)indexPath withContext:(id)context __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// - (BOOL)collectionView:(UICollectionView *)collectionView shouldBeginMultipleSelectionInteractionAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +// - (void)collectionView:(UICollectionView *)collectionView didBeginMultipleSelectionInteractionAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// - (void)collectionViewDidEndMultipleSelectionInteraction:(UICollectionView *)collectionView __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// - (nullable UIContextMenuConfiguration *)collectionView:(UICollectionView *)collectionView contextMenuConfigurationForItemAtIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (nullable UITargetedPreview *)collectionView:(UICollectionView *)collectionView previewForHighlightingContextMenuWithConfiguration:(UIContextMenuConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (nullable UITargetedPreview *)collectionView:(UICollectionView *)collectionView previewForDismissingContextMenuWithConfiguration:(UIContextMenuConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)collectionView:(UICollectionView *)collectionView willPerformPreviewActionForMenuWithConfiguration:(UIContextMenuConfiguration *)configuration animator:(id)animator __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionView +#define _REWRITER_typedef_UICollectionView +typedef struct objc_object UICollectionView; +typedef struct {} _objc_exc_UICollectionView; +#endif + +struct UICollectionView_IMPL { + struct UIScrollView_IMPL UIScrollView_IVARS; +}; + + +// - (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nonatomic, strong) UICollectionViewLayout *collectionViewLayout; +// @property (nonatomic, weak, nullable) id delegate; +// @property (nonatomic, weak, nullable) id dataSource; + +// @property (nonatomic, weak, nullable) id prefetchDataSource __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, getter=isPrefetchingEnabled) BOOL prefetchingEnabled __attribute__((availability(ios,introduced=10.0))); + +// @property (nonatomic, weak, nullable) id dragDelegate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, weak, nullable) id dropDelegate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// @property (nonatomic) BOOL dragInteractionEnabled __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +// @property (nonatomic) UICollectionViewReorderingCadence reorderingCadence __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property (nonatomic, strong, nullable) UIView *backgroundView; + + + + +// - (void)registerClass:(nullable Class)cellClass forCellWithReuseIdentifier:(NSString *)identifier; +// - (void)registerNib:(nullable UINib *)nib forCellWithReuseIdentifier:(NSString *)identifier; + +// - (void)registerClass:(nullable Class)viewClass forSupplementaryViewOfKind:(NSString *)elementKind withReuseIdentifier:(NSString *)identifier; +// - (void)registerNib:(nullable UINib *)nib forSupplementaryViewOfKind:(NSString *)kind withReuseIdentifier:(NSString *)identifier; + +// - (__kindof UICollectionViewCell *)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath; +// - (__kindof UICollectionReusableView *)dequeueReusableSupplementaryViewOfKind:(NSString *)elementKind withReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath; + + +// @property (nonatomic) BOOL allowsSelection; +// @property (nonatomic) BOOL allowsMultipleSelection; + +// @property (nonatomic, readonly, nullable) NSArray *indexPathsForSelectedItems; +// - (void)selectItemAtIndexPath:(nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UICollectionViewScrollPosition)scrollPosition; +// - (void)deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; + + +// @property (nonatomic, readonly) BOOL hasUncommittedUpdates __attribute__((availability(ios,introduced=11.0))); + + +// - (void)reloadData; + +// - (void)setCollectionViewLayout:(UICollectionViewLayout *)layout animated:(BOOL)animated; +// - (void)setCollectionViewLayout:(UICollectionViewLayout *)layout animated:(BOOL)animated completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=7.0))); + +// - (UICollectionViewTransitionLayout *)startInteractiveTransitionToCollectionViewLayout:(UICollectionViewLayout *)layout completion:(nullable UICollectionViewLayoutInteractiveTransitionCompletion)completion __attribute__((availability(ios,introduced=7.0))); +// - (void)finishInteractiveTransition __attribute__((availability(ios,introduced=7.0))); +// - (void)cancelInteractiveTransition __attribute__((availability(ios,introduced=7.0))); + + + +// @property (nonatomic, readonly) NSInteger numberOfSections; +// - (NSInteger)numberOfItemsInSection:(NSInteger)section; + +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath; + +// - (nullable NSIndexPath *)indexPathForItemAtPoint:(CGPoint)point; +// - (nullable NSIndexPath *)indexPathForCell:(UICollectionViewCell *)cell; + +// - (nullable UICollectionViewCell *)cellForItemAtIndexPath:(NSIndexPath *)indexPath; +// @property (nonatomic, readonly) NSArray<__kindof UICollectionViewCell *> *visibleCells; +// @property (nonatomic, readonly) NSArray *indexPathsForVisibleItems; + +// - (nullable UICollectionReusableView *)supplementaryViewForElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=9.0))); +// - (NSArray *)visibleSupplementaryViewsOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=9.0))); +// - (NSArray *)indexPathsForVisibleSupplementaryElementsOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=9.0))); + + + +// - (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated; + + +// - (void)insertSections:(NSIndexSet *)sections; +// - (void)deleteSections:(NSIndexSet *)sections; +// - (void)reloadSections:(NSIndexSet *)sections; +// - (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection; + +// - (void)insertItemsAtIndexPaths:(NSArray *)indexPaths; +// - (void)deleteItemsAtIndexPaths:(NSArray *)indexPaths; +// - (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths; +// - (void)moveItemAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath; + +// - (void)performBatchUpdates:(void (__attribute__((noescape)) ^ _Nullable)(void))updates completion:(void (^ _Nullable)(BOOL finished))completion; + + +// - (BOOL)beginInteractiveMovementForItemAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=9.0))); +// - (void)updateInteractiveMovementTargetPosition:(CGPoint)targetPosition __attribute__((availability(ios,introduced=9.0))); +// - (void)endInteractiveMovement __attribute__((availability(ios,introduced=9.0))); +// - (void)cancelInteractiveMovement __attribute__((availability(ios,introduced=9.0))); + + +// @property (nonatomic) BOOL remembersLastFocusedIndexPath __attribute__((availability(ios,introduced=9.0))); + + + + + +// @property (nonatomic, readonly) BOOL hasActiveDrag __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @property (nonatomic, readonly) BOOL hasActiveDrop __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + + + + + +// @interface UICollectionView (UIDragAndDrop) +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICollectionViewDragDelegate + +/* @required */ + + + + +// - (NSArray *)collectionView:(UICollectionView *)collectionView itemsForBeginningDragSession:(id)session atIndexPath:(NSIndexPath *)indexPath; + +/* @optional */ + + + + + + +// - (NSArray *)collectionView:(UICollectionView *)collectionView itemsForAddingToDragSession:(id)session atIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point; + + + + +// - (nullable UIDragPreviewParameters *)collectionView:(UICollectionView *)collectionView dragPreviewParametersForItemAtIndexPath:(NSIndexPath *)indexPath; + + + + +// - (void)collectionView:(UICollectionView *)collectionView dragSessionWillBegin:(id)session; + + + +// - (void)collectionView:(UICollectionView *)collectionView dragSessionDidEnd:(id)session; + + + + + +// - (BOOL)collectionView:(UICollectionView *)collectionView dragSessionAllowsMoveOperation:(id)session; + + + + + +// - (BOOL)collectionView:(UICollectionView *)collectionView dragSessionIsRestrictedToDraggingApplication:(id)session; + +/* @end */ + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICollectionViewDropDelegate + +/* @required */ + + + + + + + +// - (void)collectionView:(UICollectionView *)collectionView performDropWithCoordinator:(id)coordinator; + +/* @optional */ + + + + +// - (BOOL)collectionView:(UICollectionView *)collectionView canHandleDropSession:(id)session; + + + +// - (void)collectionView:(UICollectionView *)collectionView dropSessionDidEnter:(id)session; +// - (UICollectionViewDropProposal *)collectionView:(UICollectionView *)collectionView dropSessionDidUpdate:(id)session withDestinationIndexPath:(nullable NSIndexPath *)destinationIndexPath; + + + +// - (void)collectionView:(UICollectionView *)collectionView dropSessionDidExit:(id)session; + + + +// - (void)collectionView:(UICollectionView *)collectionView dropSessionDidEnd:(id)session; + + + + + + + +// - (nullable UIDragPreviewParameters *)collectionView:(UICollectionView *)collectionView dropPreviewParametersForItemAtIndexPath:(NSIndexPath *)indexPath; + +/* @end */ + + +typedef NSInteger UICollectionViewDropIntent; enum { + + + + UICollectionViewDropIntentUnspecified, + + + + + UICollectionViewDropIntentInsertAtDestinationIndexPath, + + + + + UICollectionViewDropIntentInsertIntoDestinationIndexPath, + +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UICollectionViewDropProposal +#define _REWRITER_typedef_UICollectionViewDropProposal +typedef struct objc_object UICollectionViewDropProposal; +typedef struct {} _objc_exc_UICollectionViewDropProposal; +#endif + +struct UICollectionViewDropProposal_IMPL { + struct UIDropProposal_IMPL UIDropProposal_IVARS; +}; + + +// - (instancetype)initWithDropOperation:(UIDropOperation)operation intent:(UICollectionViewDropIntent)intent; + + + +// @property (nonatomic, readonly) UICollectionViewDropIntent intent; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICollectionViewDropCoordinator + + + +// @property (nonatomic, readonly) NSArray> *items; + + + + +// @property (nonatomic, readonly, nullable) NSIndexPath *destinationIndexPath; + + + +// @property (nonatomic, readonly) UICollectionViewDropProposal *proposal; + + +// @property (nonatomic, readonly) id session; +// - (id)dropItem:(UIDragItem *)dragItem toPlaceholder:(UICollectionViewDropPlaceholder*)placeholder; + + + + + + +// - (id)dropItem:(UIDragItem *)dragItem toItemAtIndexPath:(NSIndexPath *)indexPath; + + + + + +// - (id)dropItem:(UIDragItem *)dragItem intoItemAtIndexPath:(NSIndexPath *)indexPath rect:(CGRect)rect; + + + +// - (id)dropItem:(UIDragItem *)dragItem toTarget:(UIDragPreviewTarget *)target; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UICollectionViewPlaceholder +#define _REWRITER_typedef_UICollectionViewPlaceholder +typedef struct objc_object UICollectionViewPlaceholder; +typedef struct {} _objc_exc_UICollectionViewPlaceholder; +#endif + +struct UICollectionViewPlaceholder_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithInsertionIndexPath:(NSIndexPath*)insertionIndexPath reuseIdentifier:(NSString *)reuseIdentifier __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + +// @property (nonatomic, nullable, copy) void(^cellUpdateHandler)(__kindof UICollectionViewCell *); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UICollectionViewDropPlaceholder +#define _REWRITER_typedef_UICollectionViewDropPlaceholder +typedef struct objc_object UICollectionViewDropPlaceholder; +typedef struct {} _objc_exc_UICollectionViewDropPlaceholder; +#endif + +struct UICollectionViewDropPlaceholder_IMPL { + struct UICollectionViewPlaceholder_IMPL UICollectionViewPlaceholder_IVARS; +}; + + + + + +// @property (nonatomic, nullable, copy) UIDragPreviewParameters * _Nullable (^previewParametersProvider)(__kindof UICollectionViewCell *); +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICollectionViewDropItem + +// @property (nonatomic, readonly) UIDragItem *dragItem; + + + + + + +// @property (nonatomic, readonly, nullable) NSIndexPath *sourceIndexPath; + + + + +// @property (nonatomic, readonly) CGSize previewSize; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICollectionViewDropPlaceholderContext + + + +// @property (nonatomic, readonly) UIDragItem *dragItem; + + + + + + + +// - (BOOL)commitInsertionWithDataSourceUpdates:(void(__attribute__((noescape)) ^)(NSIndexPath *insertionIndexPath))dataSourceUpdates; + + + + + +// - (BOOL)deletePlaceholder; + + + + + +// - (void)setNeedsCellUpdate; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UICollectionViewLayout; +#ifndef _REWRITER_typedef_UICollectionViewLayout +#define _REWRITER_typedef_UICollectionViewLayout +typedef struct objc_object UICollectionViewLayout; +typedef struct {} _objc_exc_UICollectionViewLayout; +#endif + +// @class UICollectionView; +#ifndef _REWRITER_typedef_UICollectionView +#define _REWRITER_typedef_UICollectionView +typedef struct objc_object UICollectionView; +typedef struct {} _objc_exc_UICollectionView; +#endif + +// @class UICollectionViewLayoutAttributes; +#ifndef _REWRITER_typedef_UICollectionViewLayoutAttributes +#define _REWRITER_typedef_UICollectionViewLayoutAttributes +typedef struct objc_object UICollectionViewLayoutAttributes; +typedef struct {} _objc_exc_UICollectionViewLayoutAttributes; +#endif + +// @class UILongPressGestureRecognizer; +#ifndef _REWRITER_typedef_UILongPressGestureRecognizer +#define _REWRITER_typedef_UILongPressGestureRecognizer +typedef struct objc_object UILongPressGestureRecognizer; +typedef struct {} _objc_exc_UILongPressGestureRecognizer; +#endif + + +typedef NSInteger UICollectionViewCellDragState; enum { + UICollectionViewCellDragStateNone, + + + UICollectionViewCellDragStateLifting, + + + + + + UICollectionViewCellDragStateDragging +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionReusableView +#define _REWRITER_typedef_UICollectionReusableView +typedef struct objc_object UICollectionReusableView; +typedef struct {} _objc_exc_UICollectionReusableView; +#endif + +struct UICollectionReusableView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier; + + + + +// - (void)prepareForReuse; + + + + + +// - (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes; + + +// - (void)willTransitionFromLayout:(UICollectionViewLayout *)oldLayout toLayout:(UICollectionViewLayout *)newLayout; +// - (void)didTransitionFromLayout:(UICollectionViewLayout *)oldLayout toLayout:(UICollectionViewLayout *)newLayout; + +// - (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewCell +#define _REWRITER_typedef_UICollectionViewCell +typedef struct objc_object UICollectionViewCell; +typedef struct {} _objc_exc_UICollectionViewCell; +#endif + +struct UICollectionViewCell_IMPL { + struct UICollectionReusableView_IMPL UICollectionReusableView_IVARS; +}; + + +// @property (nonatomic, readonly) UIView *contentView; + + + + + +// @property (nonatomic, getter=isSelected) BOOL selected; +// @property (nonatomic, getter=isHighlighted) BOOL highlighted; + + + + + + +// - (void)dragStateDidChange:(UICollectionViewCellDragState)dragState __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @property (nonatomic, strong, nullable) UIView *backgroundView; +// @property (nonatomic, strong, nullable) UIView *selectedBackgroundView; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UICollectionViewLayout; +#ifndef _REWRITER_typedef_UICollectionViewLayout +#define _REWRITER_typedef_UICollectionViewLayout +typedef struct objc_object UICollectionViewLayout; +typedef struct {} _objc_exc_UICollectionViewLayout; +#endif + +// @class UICollectionViewController; +#ifndef _REWRITER_typedef_UICollectionViewController +#define _REWRITER_typedef_UICollectionViewController +typedef struct objc_object UICollectionViewController; +typedef struct {} _objc_exc_UICollectionViewController; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewController +#define _REWRITER_typedef_UICollectionViewController +typedef struct objc_object UICollectionViewController; +typedef struct {} _objc_exc_UICollectionViewController; +#endif + +struct UICollectionViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout __attribute__((objc_designated_initializer)); +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (null_resettable, nonatomic, strong) __kindof UICollectionView *collectionView; + + + +// @property (nonatomic) BOOL clearsSelectionOnViewWillAppear; + + + + + + +// @property (nonatomic, assign) BOOL useLayoutToLayoutNavigationTransitions __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic, readonly) UICollectionViewLayout *collectionViewLayout __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic) BOOL installsStandardGestureForInteractiveMovement __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UICollectionViewScrollDirection; enum { + UICollectionViewScrollDirectionVertical, + UICollectionViewScrollDirectionHorizontal +}; + +typedef NSUInteger UICollectionElementCategory; enum { + UICollectionElementCategoryCell, + UICollectionElementCategorySupplementaryView, + UICollectionElementCategoryDecorationView +}; + +// @class UICollectionViewLayoutAttributes; +#ifndef _REWRITER_typedef_UICollectionViewLayoutAttributes +#define _REWRITER_typedef_UICollectionViewLayoutAttributes +typedef struct objc_object UICollectionViewLayoutAttributes; +typedef struct {} _objc_exc_UICollectionViewLayoutAttributes; +#endif + +// @class UICollectionView; +#ifndef _REWRITER_typedef_UICollectionView +#define _REWRITER_typedef_UICollectionView +typedef struct objc_object UICollectionView; +typedef struct {} _objc_exc_UICollectionView; +#endif + +// @class UINib; +#ifndef _REWRITER_typedef_UINib +#define _REWRITER_typedef_UINib +typedef struct objc_object UINib; +typedef struct {} _objc_exc_UINib; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewLayoutAttributes +#define _REWRITER_typedef_UICollectionViewLayoutAttributes +typedef struct objc_object UICollectionViewLayoutAttributes; +typedef struct {} _objc_exc_UICollectionViewLayoutAttributes; +#endif + +struct UICollectionViewLayoutAttributes_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic) CGRect frame; +// @property (nonatomic) CGPoint center; +// @property (nonatomic) CGSize size; +// @property (nonatomic) CATransform3D transform3D; +// @property (nonatomic) CGRect bounds __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGAffineTransform transform __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat alpha; +// @property (nonatomic) NSInteger zIndex; +// @property (nonatomic, getter=isHidden) BOOL hidden; +// @property (nonatomic, strong) NSIndexPath *indexPath; + +// @property (nonatomic, readonly) UICollectionElementCategory representedElementCategory; +// @property (nonatomic, readonly, nullable) NSString *representedElementKind; + +// + (instancetype)layoutAttributesForCellWithIndexPath:(NSIndexPath *)indexPath; +// + (instancetype)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind withIndexPath:(NSIndexPath *)indexPath; +// + (instancetype)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind withIndexPath:(NSIndexPath *)indexPath; + +/* @end */ + + +typedef NSInteger UICollectionUpdateAction; enum { + UICollectionUpdateActionInsert, + UICollectionUpdateActionDelete, + UICollectionUpdateActionReload, + UICollectionUpdateActionMove, + UICollectionUpdateActionNone +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewUpdateItem +#define _REWRITER_typedef_UICollectionViewUpdateItem +typedef struct objc_object UICollectionViewUpdateItem; +typedef struct {} _objc_exc_UICollectionViewUpdateItem; +#endif + +struct UICollectionViewUpdateItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly, nullable) NSIndexPath *indexPathBeforeUpdate; +// @property (nonatomic, readonly, nullable) NSIndexPath *indexPathAfterUpdate; +// @property (nonatomic, readonly) UICollectionUpdateAction updateAction; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UICollectionViewLayoutInvalidationContext +#define _REWRITER_typedef_UICollectionViewLayoutInvalidationContext +typedef struct objc_object UICollectionViewLayoutInvalidationContext; +typedef struct {} _objc_exc_UICollectionViewLayoutInvalidationContext; +#endif + +struct UICollectionViewLayoutInvalidationContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) BOOL invalidateEverything; +// @property (nonatomic, readonly) BOOL invalidateDataSourceCounts; + +// - (void)invalidateItemsAtIndexPaths:(NSArray *)indexPaths __attribute__((availability(ios,introduced=8.0))); +// - (void)invalidateSupplementaryElementsOfKind:(NSString *)elementKind atIndexPaths:(NSArray *)indexPaths __attribute__((availability(ios,introduced=8.0))); +// - (void)invalidateDecorationElementsOfKind:(NSString *)elementKind atIndexPaths:(NSArray *)indexPaths __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic, readonly, nullable) NSArray *invalidatedItemIndexPaths __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic, readonly, nullable) NSDictionary *> *invalidatedSupplementaryIndexPaths __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic, readonly, nullable) NSDictionary *> *invalidatedDecorationIndexPaths __attribute__((availability(ios,introduced=8.0))); + +// @property (nonatomic) CGPoint contentOffsetAdjustment __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic) CGSize contentSizeAdjustment __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, readonly, copy, nullable) NSArray *previousIndexPathsForInteractivelyMovingItems __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic, readonly, copy, nullable) NSArray *targetIndexPathsForInteractivelyMovingItems __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic, readonly) CGPoint interactiveMovementTarget __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewLayout +#define _REWRITER_typedef_UICollectionViewLayout +typedef struct objc_object UICollectionViewLayout; +typedef struct {} _objc_exc_UICollectionViewLayout; +#endif + +struct UICollectionViewLayout_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + + + +// @property (nullable, nonatomic, readonly) UICollectionView *collectionView; + + + +// - (void)invalidateLayout; +// - (void)invalidateLayoutWithContext:(UICollectionViewLayoutInvalidationContext *)context __attribute__((availability(ios,introduced=7.0))); + +// - (void)registerClass:(nullable Class)viewClass forDecorationViewOfKind:(NSString *)elementKind; +// - (void)registerNib:(nullable UINib *)nib forDecorationViewOfKind:(NSString *)elementKind; + +/* @end */ + + +// @interface UICollectionViewLayout (UISubclassingHooks) + +@property(class, nonatomic, readonly) Class layoutAttributesClass; +@property(class, nonatomic, readonly) Class invalidationContextClass __attribute__((availability(ios,introduced=7.0))); + + + + +// - (void)prepareLayout; + + + + + +// - (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString*)elementKind atIndexPath:(NSIndexPath *)indexPath; + +// - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds; +// - (UICollectionViewLayoutInvalidationContext *)invalidationContextForBoundsChange:(CGRect)newBounds __attribute__((availability(ios,introduced=7.0))); + +// - (BOOL)shouldInvalidateLayoutForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)preferredAttributes withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes __attribute__((availability(ios,introduced=8.0))); +// - (UICollectionViewLayoutInvalidationContext *)invalidationContextForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)preferredAttributes withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes __attribute__((availability(ios,introduced=8.0))); + +// - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity; +// - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset __attribute__((availability(ios,introduced=7.0))); + +// @property(nonatomic, readonly) CGSize collectionViewContentSize; + +// @property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection; +// @property(nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection; + +/* @end */ + + +// @interface UICollectionViewLayout (UIUpdateSupportHooks) + + + + +// - (void)prepareForCollectionViewUpdates:(NSArray *)updateItems; +// - (void)finalizeCollectionViewUpdates; + +// - (void)prepareForAnimatedBoundsChange:(CGRect)oldBounds; +// - (void)finalizeAnimatedBoundsChange; + + +// - (void)prepareForTransitionToLayout:(UICollectionViewLayout *)newLayout __attribute__((availability(ios,introduced=7.0))); +// - (void)prepareForTransitionFromLayout:(UICollectionViewLayout *)oldLayout __attribute__((availability(ios,introduced=7.0))); +// - (void)finalizeLayoutTransition __attribute__((availability(ios,introduced=7.0))); + + + + + +// - (nullable UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath; +// - (nullable UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath; +// - (nullable UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath; +// - (nullable UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingSupplementaryElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)elementIndexPath; +// - (nullable UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingDecorationElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)decorationIndexPath; +// - (nullable UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingDecorationElementOfKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)decorationIndexPath; + + + +// - (NSArray *)indexPathsToDeleteForSupplementaryViewOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=7.0))); +// - (NSArray *)indexPathsToDeleteForDecorationViewOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=7.0))); +// - (NSArray *)indexPathsToInsertForSupplementaryViewOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=7.0))); +// - (NSArray *)indexPathsToInsertForDecorationViewOfKind:(NSString *)elementKind __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +// @interface UICollectionViewLayout (UIReorderingSupportHooks) + +// - (NSIndexPath *)targetIndexPathForInteractivelyMovingItem:(NSIndexPath *)previousIndexPath withPosition:(CGPoint)position __attribute__((availability(ios,introduced=9.0))); +// - (UICollectionViewLayoutAttributes *)layoutAttributesForInteractivelyMovingItemAtIndexPath:(NSIndexPath *)indexPath withTargetPosition:(CGPoint)position __attribute__((availability(ios,introduced=9.0))); + +// - (UICollectionViewLayoutInvalidationContext *)invalidationContextForInteractivelyMovingItems:(NSArray *)targetIndexPaths withTargetPosition:(CGPoint)targetPosition previousIndexPaths:(NSArray *)previousIndexPaths previousPosition:(CGPoint)previousPosition __attribute__((availability(ios,introduced=9.0))); +// - (UICollectionViewLayoutInvalidationContext *)invalidationContextForEndingInteractiveMovementOfItemsToFinalIndexPaths:(NSArray *)indexPaths previousIndexPaths:(NSArray *)previousIndexPaths movementCancelled:(BOOL)movementCancelled __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) NSString *const UICollectionElementKindSectionHeader __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSString *const UICollectionElementKindSectionFooter __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) const CGSize UICollectionViewFlowLayoutAutomaticSize __attribute__((availability(ios,introduced=10.0))); + +typedef NSInteger UICollectionViewFlowLayoutSectionInsetReference; enum { + UICollectionViewFlowLayoutSectionInsetFromContentInset, + UICollectionViewFlowLayoutSectionInsetFromSafeArea, + UICollectionViewFlowLayoutSectionInsetFromLayoutMargins +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UICollectionViewFlowLayoutInvalidationContext +#define _REWRITER_typedef_UICollectionViewFlowLayoutInvalidationContext +typedef struct objc_object UICollectionViewFlowLayoutInvalidationContext; +typedef struct {} _objc_exc_UICollectionViewFlowLayoutInvalidationContext; +#endif + +struct UICollectionViewFlowLayoutInvalidationContext_IMPL { + struct UICollectionViewLayoutInvalidationContext_IMPL UICollectionViewLayoutInvalidationContext_IVARS; +}; + + +// @property (nonatomic) BOOL invalidateFlowLayoutDelegateMetrics; +// @property (nonatomic) BOOL invalidateFlowLayoutAttributes; + +/* @end */ + + +// @protocol UICollectionViewDelegateFlowLayout +/* @optional */ + +// - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath; +// - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section; +// - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section; +// - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section; +// - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section; +// - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UICollectionViewFlowLayout +#define _REWRITER_typedef_UICollectionViewFlowLayout +typedef struct objc_object UICollectionViewFlowLayout; +typedef struct {} _objc_exc_UICollectionViewFlowLayout; +#endif + +struct UICollectionViewFlowLayout_IMPL { + struct UICollectionViewLayout_IMPL UICollectionViewLayout_IVARS; +}; + + +// @property (nonatomic) CGFloat minimumLineSpacing; +// @property (nonatomic) CGFloat minimumInteritemSpacing; +// @property (nonatomic) CGSize itemSize; +// @property (nonatomic) CGSize estimatedItemSize __attribute__((availability(ios,introduced=8.0))); +// @property (nonatomic) UICollectionViewScrollDirection scrollDirection; +// @property (nonatomic) CGSize headerReferenceSize; +// @property (nonatomic) CGSize footerReferenceSize; +// @property (nonatomic) UIEdgeInsets sectionInset; + + + +// @property (nonatomic) UICollectionViewFlowLayoutSectionInsetReference sectionInsetReference __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,unavailable))); + + +// @property (nonatomic) BOOL sectionHeadersPinToVisibleBounds __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic) BOOL sectionFootersPinToVisibleBounds __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UICollectionViewTransitionLayout +#define _REWRITER_typedef_UICollectionViewTransitionLayout +typedef struct objc_object UICollectionViewTransitionLayout; +typedef struct {} _objc_exc_UICollectionViewTransitionLayout; +#endif + +struct UICollectionViewTransitionLayout_IMPL { + struct UICollectionViewLayout_IMPL UICollectionViewLayout_IVARS; +}; + + +// @property (assign, nonatomic) CGFloat transitionProgress; +// @property (readonly, nonatomic) UICollectionViewLayout *currentLayout; +// @property (readonly, nonatomic) UICollectionViewLayout *nextLayout; + +// - (instancetype)initWithCurrentLayout:(UICollectionViewLayout *)currentLayout nextLayout:(UICollectionViewLayout *)newLayout __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)init __attribute__((unavailable)); + +// - (void)updateValue:(CGFloat)value forAnimatedKey:(NSString *)key; +// - (CGFloat)valueForAnimatedKey:(NSString *)key; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class NSCollectionLayoutSection; +#ifndef _REWRITER_typedef_NSCollectionLayoutSection +#define _REWRITER_typedef_NSCollectionLayoutSection +typedef struct objc_object NSCollectionLayoutSection; +typedef struct {} _objc_exc_NSCollectionLayoutSection; +#endif + +// @class NSCollectionLayoutGroup; +#ifndef _REWRITER_typedef_NSCollectionLayoutGroup +#define _REWRITER_typedef_NSCollectionLayoutGroup +typedef struct objc_object NSCollectionLayoutGroup; +typedef struct {} _objc_exc_NSCollectionLayoutGroup; +#endif + +// @class NSCollectionLayoutItem; +#ifndef _REWRITER_typedef_NSCollectionLayoutItem +#define _REWRITER_typedef_NSCollectionLayoutItem +typedef struct objc_object NSCollectionLayoutItem; +typedef struct {} _objc_exc_NSCollectionLayoutItem; +#endif + +// @class NSCollectionLayoutSupplementaryItem; +#ifndef _REWRITER_typedef_NSCollectionLayoutSupplementaryItem +#define _REWRITER_typedef_NSCollectionLayoutSupplementaryItem +typedef struct objc_object NSCollectionLayoutSupplementaryItem; +typedef struct {} _objc_exc_NSCollectionLayoutSupplementaryItem; +#endif + +// @class NSCollectionLayoutBoundarySupplementaryItem; +#ifndef _REWRITER_typedef_NSCollectionLayoutBoundarySupplementaryItem +#define _REWRITER_typedef_NSCollectionLayoutBoundarySupplementaryItem +typedef struct objc_object NSCollectionLayoutBoundarySupplementaryItem; +typedef struct {} _objc_exc_NSCollectionLayoutBoundarySupplementaryItem; +#endif + +// @class NSCollectionLayoutDecorationItem; +#ifndef _REWRITER_typedef_NSCollectionLayoutDecorationItem +#define _REWRITER_typedef_NSCollectionLayoutDecorationItem +typedef struct objc_object NSCollectionLayoutDecorationItem; +typedef struct {} _objc_exc_NSCollectionLayoutDecorationItem; +#endif + + +// @class NSCollectionLayoutSize; +#ifndef _REWRITER_typedef_NSCollectionLayoutSize +#define _REWRITER_typedef_NSCollectionLayoutSize +typedef struct objc_object NSCollectionLayoutSize; +typedef struct {} _objc_exc_NSCollectionLayoutSize; +#endif + +// @class NSCollectionLayoutDimension; +#ifndef _REWRITER_typedef_NSCollectionLayoutDimension +#define _REWRITER_typedef_NSCollectionLayoutDimension +typedef struct objc_object NSCollectionLayoutDimension; +typedef struct {} _objc_exc_NSCollectionLayoutDimension; +#endif + +// @class NSCollectionLayoutSpacing; +#ifndef _REWRITER_typedef_NSCollectionLayoutSpacing +#define _REWRITER_typedef_NSCollectionLayoutSpacing +typedef struct objc_object NSCollectionLayoutSpacing; +typedef struct {} _objc_exc_NSCollectionLayoutSpacing; +#endif + +// @class NSCollectionLayoutEdgeSpacing; +#ifndef _REWRITER_typedef_NSCollectionLayoutEdgeSpacing +#define _REWRITER_typedef_NSCollectionLayoutEdgeSpacing +typedef struct objc_object NSCollectionLayoutEdgeSpacing; +typedef struct {} _objc_exc_NSCollectionLayoutEdgeSpacing; +#endif + +// @class NSCollectionLayoutAnchor; +#ifndef _REWRITER_typedef_NSCollectionLayoutAnchor +#define _REWRITER_typedef_NSCollectionLayoutAnchor +typedef struct objc_object NSCollectionLayoutAnchor; +typedef struct {} _objc_exc_NSCollectionLayoutAnchor; +#endif + + +// @protocol NSCollectionLayoutEnvironment; +// @protocol NSCollectionLayoutContainer; +// @protocol NSCollectionLayoutVisibleItem; + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UICollectionViewCompositionalLayoutConfiguration +#define _REWRITER_typedef_UICollectionViewCompositionalLayoutConfiguration +typedef struct objc_object UICollectionViewCompositionalLayoutConfiguration; +typedef struct {} _objc_exc_UICollectionViewCompositionalLayoutConfiguration; +#endif + +struct UICollectionViewCompositionalLayoutConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// @property(nonatomic) UICollectionViewScrollDirection scrollDirection; +// @property(nonatomic) CGFloat interSectionSpacing; +// @property(nonatomic,copy) NSArray *boundarySupplementaryItems; +/* @end */ + + +typedef NSCollectionLayoutSection * _Nullable (*UICollectionViewCompositionalLayoutSectionProvider)(NSInteger section, id/**/); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UICollectionViewCompositionalLayout +#define _REWRITER_typedef_UICollectionViewCompositionalLayout +typedef struct objc_object UICollectionViewCompositionalLayout; +typedef struct {} _objc_exc_UICollectionViewCompositionalLayout; +#endif + +struct UICollectionViewCompositionalLayout_IMPL { + struct UICollectionViewLayout_IMPL UICollectionViewLayout_IVARS; +}; + +// - (instancetype)initWithSection:(NSCollectionLayoutSection*)section; +// - (instancetype)initWithSection:(NSCollectionLayoutSection*)section configuration:(UICollectionViewCompositionalLayoutConfiguration*)configuration; + +// - (instancetype)initWithSectionProvider:(UICollectionViewCompositionalLayoutSectionProvider)sectionProvider; +// - (instancetype)initWithSectionProvider:(UICollectionViewCompositionalLayoutSectionProvider)sectionProvider configuration:(UICollectionViewCompositionalLayoutConfiguration*)configuration; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + +// @property(nonatomic,copy) UICollectionViewCompositionalLayoutConfiguration *configuration; +/* @end */ + + +typedef NSInteger UICollectionLayoutSectionOrthogonalScrollingBehavior; enum { + + UICollectionLayoutSectionOrthogonalScrollingBehaviorNone, + + + + + UICollectionLayoutSectionOrthogonalScrollingBehaviorContinuous, + + + UICollectionLayoutSectionOrthogonalScrollingBehaviorContinuousGroupLeadingBoundary, + + + UICollectionLayoutSectionOrthogonalScrollingBehaviorPaging, + + + UICollectionLayoutSectionOrthogonalScrollingBehaviorGroupPaging, + + + UICollectionLayoutSectionOrthogonalScrollingBehaviorGroupPagingCentered, +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +typedef void (*NSCollectionLayoutSectionVisibleItemsInvalidationHandler)(NSArray/**/> *visibleItems, CGPoint contentOffset, id/**/ layoutEnvironment); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutSection +#define _REWRITER_typedef_NSCollectionLayoutSection +typedef struct objc_object NSCollectionLayoutSection; +typedef struct {} _objc_exc_NSCollectionLayoutSection; +#endif + +struct NSCollectionLayoutSection_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)sectionWithGroup:(NSCollectionLayoutGroup*)group; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic) NSDirectionalEdgeInsets contentInsets; +// @property(nonatomic) CGFloat interGroupSpacing; + + +// @property(nonatomic) UICollectionLayoutSectionOrthogonalScrollingBehavior orthogonalScrollingBehavior; + + +// @property(nonatomic,copy) NSArray *boundarySupplementaryItems; + + +// @property(nonatomic) BOOL supplementariesFollowContentInsets; + + +// @property(nonatomic,copy,nullable) NSCollectionLayoutSectionVisibleItemsInvalidationHandler visibleItemsInvalidationHandler; + + +// @property(nonatomic,copy) NSArray *decorationItems; +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutItem +#define _REWRITER_typedef_NSCollectionLayoutItem +typedef struct objc_object NSCollectionLayoutItem; +typedef struct {} _objc_exc_NSCollectionLayoutItem; +#endif + +struct NSCollectionLayoutItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)itemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize; +// + (instancetype)itemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize supplementaryItems:(NSArray*)supplementaryItems; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); +// @property(nonatomic) NSDirectionalEdgeInsets contentInsets; +// @property(nonatomic,copy,nullable) NSCollectionLayoutEdgeSpacing *edgeSpacing; + +// @property(nonatomic,readonly) NSCollectionLayoutSize *layoutSize; +// @property(nonatomic,readonly) NSArray *supplementaryItems; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutGroupCustomItem +#define _REWRITER_typedef_NSCollectionLayoutGroupCustomItem +typedef struct objc_object NSCollectionLayoutGroupCustomItem; +typedef struct {} _objc_exc_NSCollectionLayoutGroupCustomItem; +#endif + +struct NSCollectionLayoutGroupCustomItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)customItemWithFrame:(CGRect)frame; +// + (instancetype)customItemWithFrame:(CGRect)frame zIndex:(NSInteger)zIndex; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly) CGRect frame; +// @property(nonatomic,readonly) NSInteger zIndex; +/* @end */ + + +typedef NSArray * _Nonnull(*NSCollectionLayoutGroupCustomItemProvider)(id/**/ layoutEnvironment); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutGroup +#define _REWRITER_typedef_NSCollectionLayoutGroup +typedef struct objc_object NSCollectionLayoutGroup; +typedef struct {} _objc_exc_NSCollectionLayoutGroup; +#endif + +struct NSCollectionLayoutGroup_IMPL { + struct NSCollectionLayoutItem_IMPL NSCollectionLayoutItem_IVARS; +}; + +// + (instancetype)horizontalGroupWithLayoutSize:(NSCollectionLayoutSize*)layoutSize subitem:(NSCollectionLayoutItem*)subitem count:(NSInteger)count; + + + +// + (instancetype)horizontalGroupWithLayoutSize:(NSCollectionLayoutSize*)layoutSize subitems:(NSArray*)subitems; +// + (instancetype)verticalGroupWithLayoutSize:(NSCollectionLayoutSize*)layoutSize subitem:(NSCollectionLayoutItem*)subitem count:(NSInteger)count; + + + +// + (instancetype)verticalGroupWithLayoutSize:(NSCollectionLayoutSize*)layoutSize subitems:(NSArray*)subitems; + + + + + +// + (instancetype)customGroupWithLayoutSize:(NSCollectionLayoutSize*)layoutSize itemProvider:(NSCollectionLayoutGroupCustomItemProvider)itemProvider; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + +// @property(nonatomic,copy) NSArray *supplementaryItems; + + +// @property(nonatomic,copy,nullable) NSCollectionLayoutSpacing *interItemSpacing; + +// @property(nonatomic,readonly) NSArray *subitems; + + +// - (NSString*)visualDescription; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutDimension +#define _REWRITER_typedef_NSCollectionLayoutDimension +typedef struct objc_object NSCollectionLayoutDimension; +typedef struct {} _objc_exc_NSCollectionLayoutDimension; +#endif + +struct NSCollectionLayoutDimension_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)fractionalWidthDimension:(CGFloat)fractionalWidth; + + +// + (instancetype)fractionalHeightDimension:(CGFloat)fractionalHeight; + + +// + (instancetype)absoluteDimension:(CGFloat)absoluteDimension; + + +// + (instancetype)estimatedDimension:(CGFloat)estimatedDimension; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly) BOOL isFractionalWidth; +// @property(nonatomic,readonly) BOOL isFractionalHeight; +// @property(nonatomic,readonly) BOOL isAbsolute; +// @property(nonatomic,readonly) BOOL isEstimated; +// @property(nonatomic,readonly) CGFloat dimension; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutSize +#define _REWRITER_typedef_NSCollectionLayoutSize +typedef struct objc_object NSCollectionLayoutSize; +typedef struct {} _objc_exc_NSCollectionLayoutSize; +#endif + +struct NSCollectionLayoutSize_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)sizeWithWidthDimension:(NSCollectionLayoutDimension*)width heightDimension:(NSCollectionLayoutDimension*)height; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly) NSCollectionLayoutDimension *widthDimension; +// @property(nonatomic,readonly) NSCollectionLayoutDimension *heightDimension; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutSpacing +#define _REWRITER_typedef_NSCollectionLayoutSpacing +typedef struct objc_object NSCollectionLayoutSpacing; +typedef struct {} _objc_exc_NSCollectionLayoutSpacing; +#endif + +struct NSCollectionLayoutSpacing_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)flexibleSpacing:(CGFloat)flexibleSpacing; +// + (instancetype)fixedSpacing:(CGFloat)fixedSpacing; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly) CGFloat spacing; +// @property(nonatomic,readonly) BOOL isFlexibleSpacing; +// @property(nonatomic,readonly) BOOL isFixedSpacing; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutEdgeSpacing +#define _REWRITER_typedef_NSCollectionLayoutEdgeSpacing +typedef struct objc_object NSCollectionLayoutEdgeSpacing; +typedef struct {} _objc_exc_NSCollectionLayoutEdgeSpacing; +#endif + +struct NSCollectionLayoutEdgeSpacing_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +#if 0 ++ (instancetype)spacingForLeading:(nullable NSCollectionLayoutSpacing *)leading + top:(nullable NSCollectionLayoutSpacing *)top + trailing:(nullable NSCollectionLayoutSpacing *)trailing + bottom:(nullable NSCollectionLayoutSpacing *)bottom; +#endif + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly,nullable) NSCollectionLayoutSpacing *leading; +// @property(nonatomic,readonly,nullable) NSCollectionLayoutSpacing *top; +// @property(nonatomic,readonly,nullable) NSCollectionLayoutSpacing *trailing; +// @property(nonatomic,readonly,nullable) NSCollectionLayoutSpacing *bottom; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutSupplementaryItem +#define _REWRITER_typedef_NSCollectionLayoutSupplementaryItem +typedef struct objc_object NSCollectionLayoutSupplementaryItem; +typedef struct {} _objc_exc_NSCollectionLayoutSupplementaryItem; +#endif + +struct NSCollectionLayoutSupplementaryItem_IMPL { + struct NSCollectionLayoutItem_IMPL NSCollectionLayoutItem_IVARS; +}; + +// + (instancetype)supplementaryItemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize elementKind:(NSString*)elementKind containerAnchor:(NSCollectionLayoutAnchor*)containerAnchor; +// + (instancetype)supplementaryItemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize elementKind:(NSString*)elementKind containerAnchor:(NSCollectionLayoutAnchor*)containerAnchor itemAnchor:(NSCollectionLayoutAnchor*)itemAnchor; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic) NSInteger zIndex; + +// @property(nonatomic,readonly) NSString *elementKind; +// @property(nonatomic,readonly) NSCollectionLayoutAnchor *containerAnchor; +// @property(nonatomic,readonly,nullable) NSCollectionLayoutAnchor *itemAnchor; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutBoundarySupplementaryItem +#define _REWRITER_typedef_NSCollectionLayoutBoundarySupplementaryItem +typedef struct objc_object NSCollectionLayoutBoundarySupplementaryItem; +typedef struct {} _objc_exc_NSCollectionLayoutBoundarySupplementaryItem; +#endif + +struct NSCollectionLayoutBoundarySupplementaryItem_IMPL { + struct NSCollectionLayoutSupplementaryItem_IMPL NSCollectionLayoutSupplementaryItem_IVARS; +}; + +// + (instancetype)boundarySupplementaryItemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize elementKind:(NSString*)elementKind alignment:(NSRectAlignment)alignment; +// + (instancetype)boundarySupplementaryItemWithLayoutSize:(NSCollectionLayoutSize*)layoutSize elementKind:(NSString*)elementKind alignment:(NSRectAlignment)alignment absoluteOffset:(CGPoint)absoluteOffset; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + +// @property(nonatomic) BOOL extendsBoundary; + + + +// @property(nonatomic) BOOL pinToVisibleBounds; + +// @property(nonatomic,readonly) NSRectAlignment alignment; +// @property(nonatomic,readonly) CGPoint offset; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutDecorationItem +#define _REWRITER_typedef_NSCollectionLayoutDecorationItem +typedef struct objc_object NSCollectionLayoutDecorationItem; +typedef struct {} _objc_exc_NSCollectionLayoutDecorationItem; +#endif + +struct NSCollectionLayoutDecorationItem_IMPL { + struct NSCollectionLayoutItem_IMPL NSCollectionLayoutItem_IVARS; +}; + +// + (instancetype)backgroundDecorationItemWithElementKind:(NSString*)elementKind; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic) NSInteger zIndex; + +// @property(nonatomic,readonly) NSString *elementKind; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSCollectionLayoutAnchor +#define _REWRITER_typedef_NSCollectionLayoutAnchor +typedef struct objc_object NSCollectionLayoutAnchor; +typedef struct {} _objc_exc_NSCollectionLayoutAnchor; +#endif + +struct NSCollectionLayoutAnchor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)layoutAnchorWithEdges:(NSDirectionalRectEdge)edges; +// + (instancetype)layoutAnchorWithEdges:(NSDirectionalRectEdge)edges absoluteOffset:(CGPoint)absoluteOffset; +// + (instancetype)layoutAnchorWithEdges:(NSDirectionalRectEdge)edges fractionalOffset:(CGPoint)fractionalOffset; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,readonly) NSDirectionalRectEdge edges; +// @property(nonatomic,readonly) CGPoint offset; +// @property(nonatomic,readonly) BOOL isAbsoluteOffset; +// @property(nonatomic,readonly) BOOL isFractionalOffset; +/* @end */ + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) +// @protocol NSCollectionLayoutContainer +// @property(nonatomic,readonly) CGSize contentSize; +// @property(nonatomic,readonly) CGSize effectiveContentSize; +// @property(nonatomic,readonly) NSDirectionalEdgeInsets contentInsets; +// @property(nonatomic,readonly) NSDirectionalEdgeInsets effectiveContentInsets; +/* @end */ + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) +// @protocol NSCollectionLayoutEnvironment +// @property(nonatomic,readonly) id container; +// @property(nonatomic,readonly) UITraitCollection *traitCollection; +/* @end */ + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) +// @protocol NSCollectionLayoutVisibleItem +// @property(nonatomic) CGFloat alpha; +// @property(nonatomic) NSInteger zIndex; +// @property(nonatomic, getter=isHidden) BOOL hidden; +// @property(nonatomic) CGPoint center; +// @property(nonatomic) CGAffineTransform transform; +// @property(nonatomic) CATransform3D transform3D; + +// @property(nonatomic,readonly) NSString *name; +// @property(nonatomic,readonly) NSIndexPath *indexPath; +// @property(nonatomic,readonly) CGRect frame; +// @property(nonatomic,readonly) CGRect bounds; +// @property(nonatomic,readonly) UICollectionElementCategory representedElementCategory; +// @property(nonatomic,readonly,nullable) NSString *representedElementKind; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UIGestureRecognizerDelegate; +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + +#ifndef _REWRITER_typedef_UITouch +#define _REWRITER_typedef_UITouch +typedef struct objc_object UITouch; +typedef struct {} _objc_exc_UITouch; +#endif + +#ifndef _REWRITER_typedef_UIPress +#define _REWRITER_typedef_UIPress +typedef struct objc_object UIPress; +typedef struct {} _objc_exc_UIPress; +#endif + + +typedef NSInteger UIGestureRecognizerState; enum { + UIGestureRecognizerStatePossible, + + UIGestureRecognizerStateBegan, + UIGestureRecognizerStateChanged, + UIGestureRecognizerStateEnded, + UIGestureRecognizerStateCancelled, + + UIGestureRecognizerStateFailed, + + + UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UIGestureRecognizer +#define _REWRITER_typedef_UIGestureRecognizer +typedef struct objc_object UIGestureRecognizer; +typedef struct {} _objc_exc_UIGestureRecognizer; +#endif + +struct UIGestureRecognizer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// - (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action __attribute__((objc_designated_initializer)); + +// - (instancetype)init; +// - (nullable instancetype)initWithCoder:(NSCoder *)coder; + +// - (void)addTarget:(id)target action:(SEL)action; +// - (void)removeTarget:(nullable id)target action:(nullable SEL)action; + +// @property(nonatomic,readonly) UIGestureRecognizerState state; + +// @property(nullable,nonatomic,weak) id delegate; + +// @property(nonatomic, getter=isEnabled) BOOL enabled; + + +// @property(nullable, nonatomic,readonly) UIView *view; + +// @property(nonatomic) BOOL cancelsTouchesInView; +// @property(nonatomic) BOOL delaysTouchesBegan; +// @property(nonatomic) BOOL delaysTouchesEnded; + +// @property(nonatomic, copy) NSArray *allowedTouchTypes __attribute__((availability(ios,introduced=9.0))); +// @property(nonatomic, copy) NSArray *allowedPressTypes __attribute__((availability(ios,introduced=9.0))); + + + + +// @property (nonatomic) BOOL requiresExclusiveTouchType __attribute__((availability(ios,introduced=9.2))); + + + + +// - (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer; + + +// - (CGPoint)locationInView:(nullable UIView*)view; + +// @property(nonatomic, readonly) NSUInteger numberOfTouches; +// - (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(nullable UIView*)view; + +// @property (nullable, nonatomic, copy) NSString *name __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + +// @property (nonatomic, readonly) UIKeyModifierFlags modifierFlags __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, readonly) UIEventButtonMask buttonMask __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + +// @protocol UIGestureRecognizerDelegate +/* @optional */ + +// - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; + + + + + +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; + + + + + +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer __attribute__((availability(ios,introduced=7.0))); +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer __attribute__((availability(ios,introduced=7.0))); + + +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch; + + +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePress:(UIPress *)press; + + + +// - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveEvent:(UIEvent *)event __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin +typedef NSUInteger UISwipeGestureRecognizerDirection; enum { + UISwipeGestureRecognizerDirectionRight = 1 << 0, + UISwipeGestureRecognizerDirectionLeft = 1 << 1, + UISwipeGestureRecognizerDirectionUp = 1 << 2, + UISwipeGestureRecognizerDirectionDown = 1 << 3 +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UISwipeGestureRecognizer +#define _REWRITER_typedef_UISwipeGestureRecognizer +typedef struct objc_object UISwipeGestureRecognizer; +typedef struct {} _objc_exc_UISwipeGestureRecognizer; +#endif + +struct UISwipeGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property(nonatomic) NSUInteger numberOfTouchesRequired __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) UISwipeGestureRecognizerDirection direction; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIContextualAction; +#ifndef _REWRITER_typedef_UIContextualAction +#define _REWRITER_typedef_UIContextualAction +typedef struct objc_object UIContextualAction; +typedef struct {} _objc_exc_UIContextualAction; +#endif + + + + +typedef void (*UIContextualActionHandler)(UIContextualAction *action, __kindof UIView *sourceView, void(^completionHandler)(BOOL actionPerformed)); + +typedef NSInteger UIContextualActionStyle; enum { + UIContextualActionStyleNormal, + UIContextualActionStyleDestructive +} __attribute__((swift_name("UIContextualAction.Style"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIContextualAction +#define _REWRITER_typedef_UIContextualAction +typedef struct objc_object UIContextualAction; +typedef struct {} _objc_exc_UIContextualAction; +#endif + +struct UIContextualAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)contextualActionWithStyle:(UIContextualActionStyle)style title:(nullable NSString *)title handler:(UIContextualActionHandler)handler; + +// @property (nonatomic, readonly) UIContextualActionStyle style; +// @property (nonatomic, copy, readonly) UIContextualActionHandler handler; + +// @property (nonatomic, copy, nullable) NSString *title; +// @property (nonatomic, copy, null_resettable) UIColor *backgroundColor; +// @property (nonatomic, copy, nullable) UIImage *image; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UISwipeActionsConfiguration +#define _REWRITER_typedef_UISwipeActionsConfiguration +typedef struct objc_object UISwipeActionsConfiguration; +typedef struct {} _objc_exc_UISwipeActionsConfiguration; +#endif + +struct UISwipeActionsConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)configurationWithActions:(NSArray *)actions; + +// @property (nonatomic, copy, readonly) NSArray *actions; +// @property (nonatomic) BOOL performsFirstActionWithFullSwipe; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +#ifndef _REWRITER_typedef_UITextField +#define _REWRITER_typedef_UITextField +typedef struct objc_object UITextField; +typedef struct {} _objc_exc_UITextField; +#endif + +#ifndef _REWRITER_typedef_UITableView +#define _REWRITER_typedef_UITableView +typedef struct objc_object UITableView; +typedef struct {} _objc_exc_UITableView; +#endif + +#ifndef _REWRITER_typedef_UILongPressGestureRecognizer +#define _REWRITER_typedef_UILongPressGestureRecognizer +typedef struct objc_object UILongPressGestureRecognizer; +typedef struct {} _objc_exc_UILongPressGestureRecognizer; +#endif + + +typedef NSInteger UITableViewCellStyle; enum { + UITableViewCellStyleDefault, + UITableViewCellStyleValue1, + UITableViewCellStyleValue2, + UITableViewCellStyleSubtitle +}; + +typedef NSInteger UITableViewCellSeparatorStyle; enum { + UITableViewCellSeparatorStyleNone, + UITableViewCellSeparatorStyleSingleLine, + UITableViewCellSeparatorStyleSingleLineEtched __attribute__((availability(ios,introduced=2_0,deprecated=11_0,message="" "Use UITableViewCellSeparatorStyleSingleLine for a single line separator."))) +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UITableViewCellSelectionStyle; enum { + UITableViewCellSelectionStyleNone, + UITableViewCellSelectionStyleBlue, + UITableViewCellSelectionStyleGray, + UITableViewCellSelectionStyleDefault __attribute__((availability(ios,introduced=7.0))) +}; + +typedef NSInteger UITableViewCellFocusStyle; enum { + UITableViewCellFocusStyleDefault, + UITableViewCellFocusStyleCustom +} __attribute__((availability(ios,introduced=9.0))); + +typedef NSInteger UITableViewCellEditingStyle; enum { + UITableViewCellEditingStyleNone, + UITableViewCellEditingStyleDelete, + UITableViewCellEditingStyleInsert +}; + +typedef NSInteger UITableViewCellAccessoryType; enum { + UITableViewCellAccessoryNone, + UITableViewCellAccessoryDisclosureIndicator, + UITableViewCellAccessoryDetailDisclosureButton __attribute__((availability(tvos,unavailable))), + UITableViewCellAccessoryCheckmark, + UITableViewCellAccessoryDetailButton __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))) +}; + +typedef NSUInteger UITableViewCellStateMask; enum { + UITableViewCellStateDefaultMask = 0, + UITableViewCellStateShowingEditControlMask = 1 << 0, + UITableViewCellStateShowingDeleteConfirmationMask = 1 << 1 +}; + +typedef NSInteger UITableViewCellDragState; enum { + UITableViewCellDragStateNone, + UITableViewCellDragStateLifting, + UITableViewCellDragStateDragging +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITableViewCell +#define _REWRITER_typedef_UITableViewCell +typedef struct objc_object UITableViewCell; +typedef struct {} _objc_exc_UITableViewCell; +#endif + +struct UITableViewCell_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + + +// - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier __attribute__((availability(ios,introduced=3.0))) __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property (nonatomic, readonly, strong, nullable) UIImageView *imageView __attribute__((availability(ios,introduced=3.0))); + +// @property (nonatomic, readonly, strong, nullable) UILabel *textLabel __attribute__((availability(ios,introduced=3.0))); +// @property (nonatomic, readonly, strong, nullable) UILabel *detailTextLabel __attribute__((availability(ios,introduced=3.0))); + + +// @property (nonatomic, readonly, strong) UIView *contentView; + + +// @property (nonatomic, strong, nullable) UIView *backgroundView; + + +// @property (nonatomic, strong, nullable) UIView *selectedBackgroundView; + + +// @property (nonatomic, strong, nullable) UIView *multipleSelectionBackgroundView __attribute__((availability(ios,introduced=5.0))); + +// @property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier; +// - (void)prepareForReuse __attribute__((objc_requires_super)); + +// @property (nonatomic) UITableViewCellSelectionStyle selectionStyle; +// @property (nonatomic, getter=isSelected) BOOL selected; +// @property (nonatomic, getter=isHighlighted) BOOL highlighted; +// - (void)setSelected:(BOOL)selected animated:(BOOL)animated; +// - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated; + +// @property (nonatomic, readonly) UITableViewCellEditingStyle editingStyle; +// @property (nonatomic) BOOL showsReorderControl; +// @property (nonatomic) BOOL shouldIndentWhileEditing; + +// @property (nonatomic) UITableViewCellAccessoryType accessoryType; +// @property (nonatomic, strong, nullable) UIView *accessoryView; +// @property (nonatomic) UITableViewCellAccessoryType editingAccessoryType; +// @property (nonatomic, strong, nullable) UIView *editingAccessoryView; + +// @property (nonatomic) NSInteger indentationLevel; +// @property (nonatomic) CGFloat indentationWidth; +// @property (nonatomic) UIEdgeInsets separatorInset __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, getter=isEditing) BOOL editing; +// - (void)setEditing:(BOOL)editing animated:(BOOL)animated; + +// @property(nonatomic, readonly) BOOL showingDeleteConfirmation; + +// @property (nonatomic) UITableViewCellFocusStyle focusStyle __attribute__((availability(ios,introduced=9.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + +// - (void)willTransitionToState:(UITableViewCellStateMask)state __attribute__((availability(ios,introduced=3.0))); +// - (void)didTransitionToState:(UITableViewCellStateMask)state __attribute__((availability(ios,introduced=3.0))); + + + + +// - (void)dragStateDidChange:(UITableViewCellDragState)dragState __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +// @property (nonatomic) BOOL userInteractionEnabledWhileDragging __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + +// @interface UITableViewCell (UIDeprecated) + + +// - (id)initWithFrame:(CGRect)frame reuseIdentifier:(nullable NSString *)reuseIdentifier __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + + + +// @property (nonatomic, copy, nullable) NSString *text __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, strong, nullable) UIFont *font __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic) NSTextAlignment textAlignment __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic) NSLineBreakMode lineBreakMode __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, strong, nullable) UIColor *textColor __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, strong, nullable) UIColor *selectedTextColor __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, strong, nullable) UIImage *image __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, strong, nullable) UIImage *selectedImage __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic) BOOL hidesAccessoryWhenEditing __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, nullable) id target __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, nullable) SEL editAction __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, nullable) SEL accessoryAction __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin + +typedef NSInteger UITableViewStyle; enum { + UITableViewStylePlain, + UITableViewStyleGrouped, + UITableViewStyleInsetGrouped __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) +}; + +typedef NSInteger UITableViewScrollPosition; enum { + UITableViewScrollPositionNone, + UITableViewScrollPositionTop, + UITableViewScrollPositionMiddle, + UITableViewScrollPositionBottom +}; + +typedef NSInteger UITableViewRowAnimation; enum { + UITableViewRowAnimationFade, + UITableViewRowAnimationRight, + UITableViewRowAnimationLeft, + UITableViewRowAnimationTop, + UITableViewRowAnimationBottom, + UITableViewRowAnimationNone, + UITableViewRowAnimationMiddle, + UITableViewRowAnimationAutomatic = 100 +}; + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UITableViewIndexSearch __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) const CGFloat UITableViewAutomaticDimension __attribute__((availability(ios,introduced=5.0))); + +// @class UITableView; +#ifndef _REWRITER_typedef_UITableView +#define _REWRITER_typedef_UITableView +typedef struct objc_object UITableView; +typedef struct {} _objc_exc_UITableView; +#endif + +#ifndef _REWRITER_typedef_UINib +#define _REWRITER_typedef_UINib +typedef struct objc_object UINib; +typedef struct {} _objc_exc_UINib; +#endif + +#ifndef _REWRITER_typedef_UITableViewHeaderFooterView +#define _REWRITER_typedef_UITableViewHeaderFooterView +typedef struct objc_object UITableViewHeaderFooterView; +typedef struct {} _objc_exc_UITableViewHeaderFooterView; +#endif + +#ifndef _REWRITER_typedef_UIVisualEffect +#define _REWRITER_typedef_UIVisualEffect +typedef struct objc_object UIVisualEffect; +typedef struct {} _objc_exc_UIVisualEffect; +#endif + +// @protocol UITableViewDataSource, UITableViewDataSourcePrefetching; +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UIDragPreviewParameters +#define _REWRITER_typedef_UIDragPreviewParameters +typedef struct objc_object UIDragPreviewParameters; +typedef struct {} _objc_exc_UIDragPreviewParameters; +#endif + +#ifndef _REWRITER_typedef_UIDragPreviewTarget +#define _REWRITER_typedef_UIDragPreviewTarget +typedef struct objc_object UIDragPreviewTarget; +typedef struct {} _objc_exc_UIDragPreviewTarget; +#endif + +#ifndef _REWRITER_typedef_UITableViewDropProposal +#define _REWRITER_typedef_UITableViewDropProposal +typedef struct objc_object UITableViewDropProposal; +typedef struct {} _objc_exc_UITableViewDropProposal; +#endif + +#ifndef _REWRITER_typedef_UITableViewPlaceholder +#define _REWRITER_typedef_UITableViewPlaceholder +typedef struct objc_object UITableViewPlaceholder; +typedef struct {} _objc_exc_UITableViewPlaceholder; +#endif + +#ifndef _REWRITER_typedef_UITableViewDropPlaceholder +#define _REWRITER_typedef_UITableViewDropPlaceholder +typedef struct objc_object UITableViewDropPlaceholder; +typedef struct {} _objc_exc_UITableViewDropPlaceholder; +#endif + +// @class UIContextMenuConfiguration; +#ifndef _REWRITER_typedef_UIContextMenuConfiguration +#define _REWRITER_typedef_UIContextMenuConfiguration +typedef struct objc_object UIContextMenuConfiguration; +typedef struct {} _objc_exc_UIContextMenuConfiguration; +#endif + +#ifndef _REWRITER_typedef_UITargetedPreview +#define _REWRITER_typedef_UITargetedPreview +typedef struct objc_object UITargetedPreview; +typedef struct {} _objc_exc_UITargetedPreview; +#endif + +// @protocol UIContextMenuInteractionCommitAnimating; +// @protocol UISpringLoadedInteractionContext, UIDragSession, UIDropSession; +// @protocol UITableViewDragDelegate, UITableViewDropDelegate, UITableViewDropCoordinator, UITableViewDropItem, UITableViewDropPlaceholderContext; + +typedef NSInteger UITableViewRowActionStyle; enum { + UITableViewRowActionStyleDefault = 0, + UITableViewRowActionStyleDestructive = UITableViewRowActionStyleDefault, + UITableViewRowActionStyleNormal +} __attribute__((availability(ios,introduced=8.0,deprecated=13.0,message="Use UIContextualAction and related APIs instead."))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=13.0,message="Use UIContextualAction and related APIs instead."))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UITableViewRowAction +#define _REWRITER_typedef_UITableViewRowAction +typedef struct objc_object UITableViewRowAction; +typedef struct {} _objc_exc_UITableViewRowAction; +#endif + +struct UITableViewRowAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)rowActionWithStyle:(UITableViewRowActionStyle)style title:(nullable NSString *)title handler:(void (^)(UITableViewRowAction *action, NSIndexPath *indexPath))handler; + +// @property (nonatomic, readonly) UITableViewRowActionStyle style; +// @property (nonatomic, copy, nullable) NSString *title; +// @property (nonatomic, copy, nullable) UIColor *backgroundColor; +// @property (nonatomic, copy, nullable) UIVisualEffect* backgroundEffect; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UITableViewFocusUpdateContext +#define _REWRITER_typedef_UITableViewFocusUpdateContext +typedef struct objc_object UITableViewFocusUpdateContext; +typedef struct {} _objc_exc_UITableViewFocusUpdateContext; +#endif + +struct UITableViewFocusUpdateContext_IMPL { + struct UIFocusUpdateContext_IMPL UIFocusUpdateContext_IVARS; +}; + + +// @property (nonatomic, strong, readonly, nullable) NSIndexPath *previouslyFocusedIndexPath; +// @property (nonatomic, strong, readonly, nullable) NSIndexPath *nextFocusedIndexPath; + +/* @end */ + + + + + +// @protocol UITableViewDelegate + +/* @optional */ + + + +// - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; +// - (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView didEndDisplayingHeaderView:(UIView *)view forSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView didEndDisplayingFooterView:(UIView *)view forSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); + + + +// - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; +// - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; +// - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section; + + + +// - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=7.0))); +// - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForHeaderInSection:(NSInteger)section __attribute__((availability(ios,introduced=7.0))); +// - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForFooterInSection:(NSInteger)section __attribute__((availability(ios,introduced=7.0))); + + + +// - (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; +// - (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section; + + + +// - (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath; + + + + + +// - (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=6.0))); +// - (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=6.0))); + + +// - (nullable NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath; +// - (nullable NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=3.0))); + +// - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; +// - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=3.0))); + + + + +// - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; +// - (nullable NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + + +// - (nullable NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=8.0,deprecated=13.0,replacement="tableView:trailingSwipeActionsConfigurationForRowAtIndexPath:"))) __attribute__((availability(tvos,unavailable))); + + + + +// - (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); +// - (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + + +// - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath; + + +// - (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(tvos,unavailable))); +// - (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(nullable NSIndexPath *)indexPath __attribute__((availability(tvos,unavailable))); + + + + +// - (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath; + + + +// - (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath; + + + +// - (BOOL)tableView:(UITableView *)tableView shouldShowMenuForRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=5.0,deprecated=13.0,replacement="tableView:contextMenuConfigurationForRowAtIndexPath:point:"))); +// - (BOOL)tableView:(UITableView *)tableView canPerformAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender __attribute__((availability(ios,introduced=5.0,deprecated=13.0,replacement="tableView:contextMenuConfigurationForRowAtIndexPath:point:"))); +// - (void)tableView:(UITableView *)tableView performAction:(SEL)action forRowAtIndexPath:(NSIndexPath *)indexPath withSender:(nullable id)sender __attribute__((availability(ios,introduced=5.0,deprecated=13.0,replacement="tableView:contextMenuConfigurationForRowAtIndexPath:"))); + + + +// - (BOOL)tableView:(UITableView *)tableView canFocusRowAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=9.0))); +// - (BOOL)tableView:(UITableView *)tableView shouldUpdateFocusInContext:(UITableViewFocusUpdateContext *)context __attribute__((availability(ios,introduced=9.0))); +// - (void)tableView:(UITableView *)tableView didUpdateFocusInContext:(UITableViewFocusUpdateContext *)context withAnimationCoordinator:(UIFocusAnimationCoordinator *)coordinator __attribute__((availability(ios,introduced=9.0))); +// - (nullable NSIndexPath *)indexPathForPreferredFocusedViewInTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=9.0))); + + + + + + +// - (BOOL)tableView:(UITableView *)tableView shouldSpringLoadRowAtIndexPath:(NSIndexPath *)indexPath withContext:(id)context __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// - (BOOL)tableView:(UITableView *)tableView shouldBeginMultipleSelectionInteractionAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// - (void)tableView:(UITableView *)tableView didBeginMultipleSelectionInteractionAtIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// - (void)tableViewDidEndMultipleSelectionInteraction:(UITableView *)tableView __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// - (nullable UIContextMenuConfiguration *)tableView:(UITableView *)tableView contextMenuConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (nullable UITargetedPreview *)tableView:(UITableView *)tableView previewForHighlightingContextMenuWithConfiguration:(UIContextMenuConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (nullable UITargetedPreview *)tableView:(UITableView *)tableView previewForDismissingContextMenuWithConfiguration:(UIContextMenuConfiguration *)configuration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)tableView:(UITableView *)tableView willPerformPreviewActionForMenuWithConfiguration:(UIContextMenuConfiguration *)configuration animator:(id)animator __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITableViewSelectionDidChangeNotification; + +typedef NSInteger UITableViewSeparatorInsetReference; enum { + + UITableViewSeparatorInsetFromCellEdges, + + + UITableViewSeparatorInsetFromAutomaticInsets +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITableView +#define _REWRITER_typedef_UITableView +typedef struct objc_object UITableView; +typedef struct {} _objc_exc_UITableView; +#endif + +struct UITableView_IMPL { + struct UIScrollView_IMPL UIScrollView_IVARS; +}; + + +// - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nonatomic, readonly) UITableViewStyle style; + +// @property (nonatomic, weak, nullable) id dataSource; +// @property (nonatomic, weak, nullable) id delegate; +// @property (nonatomic, weak, nullable) id prefetchDataSource __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, weak, nullable) id dragDelegate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property (nonatomic, weak, nullable) id dropDelegate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property (nonatomic) CGFloat rowHeight; +// @property (nonatomic) CGFloat sectionHeaderHeight; +// @property (nonatomic) CGFloat sectionFooterHeight; +// @property (nonatomic) CGFloat estimatedRowHeight __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat estimatedSectionHeaderHeight __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat estimatedSectionFooterHeight __attribute__((availability(ios,introduced=7.0))); + +// @property (nonatomic) UIEdgeInsets separatorInset __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property (nonatomic) UITableViewSeparatorInsetReference separatorInsetReference __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property (nonatomic, strong, nullable) UIView *backgroundView __attribute__((availability(ios,introduced=3.2))); + + + +// @property (nonatomic, readonly) NSInteger numberOfSections; +// - (NSInteger)numberOfRowsInSection:(NSInteger)section; + +// - (CGRect)rectForSection:(NSInteger)section; +// - (CGRect)rectForHeaderInSection:(NSInteger)section; +// - (CGRect)rectForFooterInSection:(NSInteger)section; +// - (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; + +// - (nullable NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point; +// - (nullable NSIndexPath *)indexPathForCell:(UITableViewCell *)cell; +// - (nullable NSArray *)indexPathsForRowsInRect:(CGRect)rect; + +// - (nullable __kindof UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath; +// @property (nonatomic, readonly) NSArray<__kindof UITableViewCell *> *visibleCells; +// @property (nonatomic, readonly, nullable) NSArray *indexPathsForVisibleRows; + +// - (nullable UITableViewHeaderFooterView *)headerViewForSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); +// - (nullable UITableViewHeaderFooterView *)footerViewForSection:(NSInteger)section __attribute__((availability(ios,introduced=6.0))); + +// - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated; +// - (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated; + + + + +// - (void)performBatchUpdates:(void (__attribute__((noescape)) ^ _Nullable)(void))updates completion:(void (^ _Nullable)(BOOL finished))completion __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (void)beginUpdates; +// - (void)endUpdates; + +// - (void)insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; +// - (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; +// - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation __attribute__((availability(ios,introduced=3.0))); +// - (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection __attribute__((availability(ios,introduced=5.0))); + +// - (void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; +// - (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; +// - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation __attribute__((availability(ios,introduced=3.0))); +// - (void)moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath __attribute__((availability(ios,introduced=5.0))); + + +// @property (nonatomic, readonly) BOOL hasUncommittedUpdates __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (void)reloadData; + + +// - (void)reloadSectionIndexTitles __attribute__((availability(ios,introduced=3.0))); + + + +// @property (nonatomic, getter=isEditing) BOOL editing; +// - (void)setEditing:(BOOL)editing animated:(BOOL)animated; + +// @property (nonatomic) BOOL allowsSelection __attribute__((availability(ios,introduced=3.0))); +// @property (nonatomic) BOOL allowsSelectionDuringEditing; +// @property (nonatomic) BOOL allowsMultipleSelection __attribute__((availability(ios,introduced=5.0))); +// @property (nonatomic) BOOL allowsMultipleSelectionDuringEditing __attribute__((availability(ios,introduced=5.0))); + + + +// @property (nonatomic, readonly, nullable) NSIndexPath *indexPathForSelectedRow; +// @property (nonatomic, readonly, nullable) NSArray *indexPathsForSelectedRows __attribute__((availability(ios,introduced=5.0))); + + +// - (void)selectRowAtIndexPath:(nullable NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition; +// - (void)deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; + + + +// @property (nonatomic) NSInteger sectionIndexMinimumDisplayRowCount; +// @property (nonatomic, strong, nullable) UIColor *sectionIndexColor __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property (nonatomic, strong, nullable) UIColor *sectionIndexBackgroundColor __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property (nonatomic, strong, nullable) UIColor *sectionIndexTrackingBackgroundColor __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property (nonatomic) UITableViewCellSeparatorStyle separatorStyle __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, strong, nullable) UIColor *separatorColor __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, copy, nullable) UIVisualEffect *separatorEffect __attribute__((availability(ios,introduced=8.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic) BOOL cellLayoutMarginsFollowReadableWidth __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic) BOOL insetsContentViewsToSafeArea __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +// @property (nonatomic, strong, nullable) UIView *tableHeaderView; +// @property (nonatomic, strong, nullable) UIView *tableFooterView; + +// - (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier; +// - (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath __attribute__((availability(ios,introduced=6.0))); +// - (nullable __kindof UITableViewHeaderFooterView *)dequeueReusableHeaderFooterViewWithIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=6.0))); + + + + +// - (void)registerNib:(nullable UINib *)nib forCellReuseIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=5.0))); +// - (void)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=6.0))); + +// - (void)registerNib:(nullable UINib *)nib forHeaderFooterViewReuseIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=6.0))); +// - (void)registerClass:(nullable Class)aClass forHeaderFooterViewReuseIdentifier:(NSString *)identifier __attribute__((availability(ios,introduced=6.0))); + + + +// @property (nonatomic) BOOL remembersLastFocusedIndexPath __attribute__((availability(ios,introduced=9.0))); + + + + + + +// @property (nonatomic) BOOL dragInteractionEnabled __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +// @property (nonatomic, readonly) BOOL hasActiveDrag __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +// @property (nonatomic, readonly) BOOL hasActiveDrop __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + +// @interface UITableView (UIDragAndDrop) +/* @end */ + + + + + + +// @protocol UITableViewDataSource + +/* @required */ + +// - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; + + + + +// - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; + +/* @optional */ + +// - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; + +// - (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; +// - (nullable NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; + + + + +// - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; + + + + +// - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath; + + + +// - (nullable NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView; +// - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index; + + + + + +// - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; + + + +// - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath; + +/* @end */ + + + + + + +// @protocol UITableViewDataSourcePrefetching + +/* @required */ + + +// - (void)tableView:(UITableView *)tableView prefetchRowsAtIndexPaths:(NSArray *)indexPaths; + +/* @optional */ + + +// - (void)tableView:(UITableView *)tableView cancelPrefetchingForRowsAtIndexPaths:(NSArray *)indexPaths; + +/* @end */ + + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UITableViewDragDelegate + +/* @required */ + + + + +// - (NSArray *)tableView:(UITableView *)tableView itemsForBeginningDragSession:(id)session atIndexPath:(NSIndexPath *)indexPath; + +/* @optional */ + + + + + +// - (NSArray *)tableView:(UITableView *)tableView itemsForAddingToDragSession:(id)session atIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point; + + + +// - (nullable UIDragPreviewParameters *)tableView:(UITableView *)tableView dragPreviewParametersForRowAtIndexPath:(NSIndexPath *)indexPath; + + + +// - (void)tableView:(UITableView *)tableView dragSessionWillBegin:(id)session; + + +// - (void)tableView:(UITableView *)tableView dragSessionDidEnd:(id)session; + + + +// - (BOOL)tableView:(UITableView *)tableView dragSessionAllowsMoveOperation:(id)session; + + + +// - (BOOL)tableView:(UITableView *)tableView dragSessionIsRestrictedToDraggingApplication:(id)session; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UITableViewDropDelegate + +/* @required */ + + + + + + +// - (void)tableView:(UITableView *)tableView performDropWithCoordinator:(id)coordinator; + +/* @optional */ + + + +// - (BOOL)tableView:(UITableView *)tableView canHandleDropSession:(id)session; + + +// - (void)tableView:(UITableView *)tableView dropSessionDidEnter:(id)session; + + + + + + + +// - (UITableViewDropProposal *)tableView:(UITableView *)tableView dropSessionDidUpdate:(id)session withDestinationIndexPath:(nullable NSIndexPath *)destinationIndexPath; + + +// - (void)tableView:(UITableView *)tableView dropSessionDidExit:(id)session; + + +// - (void)tableView:(UITableView *)tableView dropSessionDidEnd:(id)session; + + + +// - (nullable UIDragPreviewParameters *)tableView:(UITableView *)tableView dropPreviewParametersForRowAtIndexPath:(NSIndexPath *)indexPath; + +/* @end */ + + + +typedef NSInteger UITableViewDropIntent; enum { + + + UITableViewDropIntentUnspecified, + + + + UITableViewDropIntentInsertAtDestinationIndexPath, + + + + UITableViewDropIntentInsertIntoDestinationIndexPath, + + + + + + UITableViewDropIntentAutomatic +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UITableViewDropProposal +#define _REWRITER_typedef_UITableViewDropProposal +typedef struct objc_object UITableViewDropProposal; +typedef struct {} _objc_exc_UITableViewDropProposal; +#endif + +struct UITableViewDropProposal_IMPL { + struct UIDropProposal_IMPL UIDropProposal_IVARS; +}; + + +// - (instancetype)initWithDropOperation:(UIDropOperation)operation intent:(UITableViewDropIntent)intent; + + +// @property (nonatomic, readonly) UITableViewDropIntent intent; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UITableViewDropCoordinator + + +// @property (nonatomic, readonly) NSArray> *items; + + + + + + +// @property (nonatomic, readonly, nullable) NSIndexPath *destinationIndexPath; + + +// @property (nonatomic, readonly) UITableViewDropProposal *proposal; + + +// @property (nonatomic, readonly) id session; + + + + +// - (id)dropItem:(UIDragItem *)dragItem toPlaceholder:(UITableViewDropPlaceholder *)placeholder; + + + + +// - (id)dropItem:(UIDragItem *)dragItem toRowAtIndexPath:(NSIndexPath *)indexPath; + + + + +// - (id)dropItem:(UIDragItem *)dragItem intoRowAtIndexPath:(NSIndexPath *)indexPath rect:(CGRect)rect; + + + +// - (id)dropItem:(UIDragItem *)dragItem toTarget:(UIDragPreviewTarget *)target; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UITableViewPlaceholder +#define _REWRITER_typedef_UITableViewPlaceholder +typedef struct objc_object UITableViewPlaceholder; +typedef struct {} _objc_exc_UITableViewPlaceholder; +#endif + +struct UITableViewPlaceholder_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithInsertionIndexPath:(NSIndexPath *)insertionIndexPath reuseIdentifier:(NSString *)reuseIdentifier rowHeight:(CGFloat)rowHeight __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + +// @property (nonatomic, nullable, copy) void(^cellUpdateHandler)(__kindof UITableViewCell *); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UITableViewDropPlaceholder +#define _REWRITER_typedef_UITableViewDropPlaceholder +typedef struct objc_object UITableViewDropPlaceholder; +typedef struct {} _objc_exc_UITableViewDropPlaceholder; +#endif + +struct UITableViewDropPlaceholder_IMPL { + struct UITableViewPlaceholder_IMPL UITableViewPlaceholder_IVARS; +}; + + + + +// @property (nonatomic, nullable, copy) UIDragPreviewParameters * _Nullable (^previewParametersProvider)(__kindof UITableViewCell *); + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UITableViewDropItem + + +// @property (nonatomic, readonly) UIDragItem *dragItem; + + + + + + +// @property (nonatomic, readonly, nullable) NSIndexPath *sourceIndexPath; + + + +// @property (nonatomic, readonly) CGSize previewSize; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UITableViewDropPlaceholderContext + + +// @property (nonatomic, readonly) UIDragItem *dragItem; + + + + + +// - (BOOL)commitInsertionWithDataSourceUpdates:(void(__attribute__((noescape)) ^)(NSIndexPath *insertionIndexPath))dataSourceUpdates; + + + + +// - (BOOL)deletePlaceholder; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_NSDiffableDataSourceSnapshot +#define _REWRITER_typedef_NSDiffableDataSourceSnapshot +typedef struct objc_object NSDiffableDataSourceSnapshot; +typedef struct {} _objc_exc_NSDiffableDataSourceSnapshot; +#endif + +struct NSDiffableDataSourceSnapshot_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// @property(nonatomic,readonly) NSInteger numberOfItems; +// @property(nonatomic,readonly) NSInteger numberOfSections; +// @property(nonatomic,readonly) NSArray *sectionIdentifiers; +// @property(nonatomic,readonly) NSArray *itemIdentifiers; + +// - (NSInteger)numberOfItemsInSection:(SectionIdentifierType)sectionIdentifier; +// - (NSArray*)itemIdentifiersInSectionWithIdentifier:(SectionIdentifierType)sectionIdentifier; +// - (nullable SectionIdentifierType)sectionIdentifierForSectionContainingItemIdentifier:(ItemIdentifierType)itemIdentifier; + +// - (NSInteger)indexOfItemIdentifier:(ItemIdentifierType)itemIdentifier; +// - (NSInteger)indexOfSectionIdentifier:(SectionIdentifierType)sectionIdentifier; + + + +// - (void)appendItemsWithIdentifiers:(NSArray*)identifiers; +// - (void)appendItemsWithIdentifiers:(NSArray*)identifiers intoSectionWithIdentifier:(SectionIdentifierType)sectionIdentifier; + +// - (void)insertItemsWithIdentifiers:(NSArray*)identifiers beforeItemWithIdentifier:(ItemIdentifierType)itemIdentifier; +// - (void)insertItemsWithIdentifiers:(NSArray*)identifiers afterItemWithIdentifier:(ItemIdentifierType)itemIdentifier; + +// - (void)deleteItemsWithIdentifiers:(NSArray*)identifiers; +// - (void)deleteAllItems; + +// - (void)moveItemWithIdentifier:(ItemIdentifierType)fromIdentifier beforeItemWithIdentifier:(ItemIdentifierType)toIdentifier; +// - (void)moveItemWithIdentifier:(ItemIdentifierType)fromIdentifier afterItemWithIdentifier:(ItemIdentifierType)toIdentifier; + +// - (void)reloadItemsWithIdentifiers:(NSArray*)identifiers; + + + +// - (void)appendSectionsWithIdentifiers:(NSArray*)sectionIdentifiers; + +// - (void)insertSectionsWithIdentifiers:(NSArray*)sectionIdentifiers beforeSectionWithIdentifier:(SectionIdentifierType)toSectionIdentifier; +// - (void)insertSectionsWithIdentifiers:(NSArray*)sectionIdentifiers afterSectionWithIdentifier:(SectionIdentifierType)toSectionIdentifier; + +// - (void)deleteSectionsWithIdentifiers:(NSArray*)sectionIdentifiers; + +// - (void)moveSectionWithIdentifier:(SectionIdentifierType)fromSectionIdentifier beforeSectionWithIdentifier:(SectionIdentifierType)toSectionIdentifier; +// - (void)moveSectionWithIdentifier:(SectionIdentifierType)fromSectionIdentifier afterSectionWithIdentifier:(SectionIdentifierType)toSectionIdentifier; + +// - (void)reloadSectionsWithIdentifiers:(NSArray*)sectionIdentifiers; + +/* @end */ + + +typedef UICollectionViewCell * _Nullable (*UICollectionViewDiffableDataSourceCellProvider)(UICollectionView * _Nonnull,NSIndexPath * _Nonnull, id _Nonnull); +typedef UICollectionReusableView * _Nullable (*UICollectionViewDiffableDataSourceSupplementaryViewProvider)(UICollectionView* _Nonnull, NSString * _Nonnull, NSIndexPath * _Nonnull); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UICollectionViewDiffableDataSource +#define _REWRITER_typedef_UICollectionViewDiffableDataSource +typedef struct objc_object UICollectionViewDiffableDataSource; +typedef struct {} _objc_exc_UICollectionViewDiffableDataSource; +#endif + +struct UICollectionViewDiffableDataSource_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithCollectionView:(UICollectionView*)collectionView cellProvider:(UICollectionViewDiffableDataSourceCellProvider)cellProvider; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property(nonatomic,copy,nullable) UICollectionViewDiffableDataSourceSupplementaryViewProvider supplementaryViewProvider; + + + + +// - (NSDiffableDataSourceSnapshot*)snapshot; +// - (void)applySnapshot:(NSDiffableDataSourceSnapshot*)snapshot animatingDifferences:(BOOL)animatingDifferences; +// - (void)applySnapshot:(NSDiffableDataSourceSnapshot*)snapshot animatingDifferences:(BOOL)animatingDifferences completion:(void(^ _Nullable)(void))completion; + + + +// - (nullable ItemIdentifierType)itemIdentifierForIndexPath:(NSIndexPath*)indexPath; +// - (nullable NSIndexPath*)indexPathForItemIdentifier:(ItemIdentifierType)identifier; + +/* @end */ + + +typedef UITableViewCell * _Nullable (*UITableViewDiffableDataSourceCellProvider)(UITableView * _Nonnull, NSIndexPath * _Nonnull, id _Nonnull); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UITableViewDiffableDataSource +#define _REWRITER_typedef_UITableViewDiffableDataSource +typedef struct objc_object UITableViewDiffableDataSource; +typedef struct {} _objc_exc_UITableViewDiffableDataSource; +#endif + +struct UITableViewDiffableDataSource_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithTableView:(UITableView*)tableView cellProvider:(UITableViewDiffableDataSourceCellProvider)cellProvider; +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + + +// - (NSDiffableDataSourceSnapshot*)snapshot; +// - (void)applySnapshot:(NSDiffableDataSourceSnapshot*)snapshot animatingDifferences:(BOOL)animatingDifferences; +// - (void)applySnapshot:(NSDiffableDataSourceSnapshot*)snapshot animatingDifferences:(BOOL)animatingDifferences completion:(void(^ _Nullable)(void))completion; + + + +// - (nullable ItemIdentifierType)itemIdentifierForIndexPath:(NSIndexPath*)indexPath; +// - (nullable NSIndexPath*)indexPathForItemIdentifier:(ItemIdentifierType)identifier; + + + +// @property(nonatomic) UITableViewRowAnimation defaultRowAnimation; + +/* @end */ + +#pragma clang assume_nonnull end +__attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))) typedef CFIndex UIKeyboardHIDUsage; enum +{ + UIKeyboardHIDUsageKeyboardErrorRollOver = 0x01, + UIKeyboardHIDUsageKeyboardPOSTFail = 0x02, + UIKeyboardHIDUsageKeyboardErrorUndefined = 0x03, + + UIKeyboardHIDUsageKeyboardA = 0x04, + UIKeyboardHIDUsageKeyboardB = 0x05, + UIKeyboardHIDUsageKeyboardC = 0x06, + UIKeyboardHIDUsageKeyboardD = 0x07, + UIKeyboardHIDUsageKeyboardE = 0x08, + UIKeyboardHIDUsageKeyboardF = 0x09, + UIKeyboardHIDUsageKeyboardG = 0x0A, + UIKeyboardHIDUsageKeyboardH = 0x0B, + UIKeyboardHIDUsageKeyboardI = 0x0C, + UIKeyboardHIDUsageKeyboardJ = 0x0D, + UIKeyboardHIDUsageKeyboardK = 0x0E, + UIKeyboardHIDUsageKeyboardL = 0x0F, + UIKeyboardHIDUsageKeyboardM = 0x10, + UIKeyboardHIDUsageKeyboardN = 0x11, + UIKeyboardHIDUsageKeyboardO = 0x12, + UIKeyboardHIDUsageKeyboardP = 0x13, + UIKeyboardHIDUsageKeyboardQ = 0x14, + UIKeyboardHIDUsageKeyboardR = 0x15, + UIKeyboardHIDUsageKeyboardS = 0x16, + UIKeyboardHIDUsageKeyboardT = 0x17, + UIKeyboardHIDUsageKeyboardU = 0x18, + UIKeyboardHIDUsageKeyboardV = 0x19, + UIKeyboardHIDUsageKeyboardW = 0x1A, + UIKeyboardHIDUsageKeyboardX = 0x1B, + UIKeyboardHIDUsageKeyboardY = 0x1C, + UIKeyboardHIDUsageKeyboardZ = 0x1D, + UIKeyboardHIDUsageKeyboard1 = 0x1E, + UIKeyboardHIDUsageKeyboard2 = 0x1F, + UIKeyboardHIDUsageKeyboard3 = 0x20, + UIKeyboardHIDUsageKeyboard4 = 0x21, + UIKeyboardHIDUsageKeyboard5 = 0x22, + UIKeyboardHIDUsageKeyboard6 = 0x23, + UIKeyboardHIDUsageKeyboard7 = 0x24, + UIKeyboardHIDUsageKeyboard8 = 0x25, + UIKeyboardHIDUsageKeyboard9 = 0x26, + UIKeyboardHIDUsageKeyboard0 = 0x27, + + UIKeyboardHIDUsageKeyboardReturnOrEnter = 0x28, + UIKeyboardHIDUsageKeyboardEscape = 0x29, + UIKeyboardHIDUsageKeyboardDeleteOrBackspace = 0x2A, + UIKeyboardHIDUsageKeyboardTab = 0x2B, + UIKeyboardHIDUsageKeyboardSpacebar = 0x2C, + UIKeyboardHIDUsageKeyboardHyphen = 0x2D, + UIKeyboardHIDUsageKeyboardEqualSign = 0x2E, + UIKeyboardHIDUsageKeyboardOpenBracket = 0x2F, + UIKeyboardHIDUsageKeyboardCloseBracket = 0x30, + UIKeyboardHIDUsageKeyboardBackslash = 0x31, + UIKeyboardHIDUsageKeyboardNonUSPound = 0x32, + + + + UIKeyboardHIDUsageKeyboardSemicolon = 0x33, + UIKeyboardHIDUsageKeyboardQuote = 0x34, + UIKeyboardHIDUsageKeyboardGraveAccentAndTilde = 0x35, + UIKeyboardHIDUsageKeyboardComma = 0x36, + UIKeyboardHIDUsageKeyboardPeriod = 0x37, + UIKeyboardHIDUsageKeyboardSlash = 0x38, + UIKeyboardHIDUsageKeyboardCapsLock = 0x39, + + + UIKeyboardHIDUsageKeyboardF1 = 0x3A, + UIKeyboardHIDUsageKeyboardF2 = 0x3B, + UIKeyboardHIDUsageKeyboardF3 = 0x3C, + UIKeyboardHIDUsageKeyboardF4 = 0x3D, + UIKeyboardHIDUsageKeyboardF5 = 0x3E, + UIKeyboardHIDUsageKeyboardF6 = 0x3F, + UIKeyboardHIDUsageKeyboardF7 = 0x40, + UIKeyboardHIDUsageKeyboardF8 = 0x41, + UIKeyboardHIDUsageKeyboardF9 = 0x42, + UIKeyboardHIDUsageKeyboardF10 = 0x43, + UIKeyboardHIDUsageKeyboardF11 = 0x44, + UIKeyboardHIDUsageKeyboardF12 = 0x45, + UIKeyboardHIDUsageKeyboardPrintScreen = 0x46, + UIKeyboardHIDUsageKeyboardScrollLock = 0x47, + UIKeyboardHIDUsageKeyboardPause = 0x48, + UIKeyboardHIDUsageKeyboardInsert = 0x49, + UIKeyboardHIDUsageKeyboardHome = 0x4A, + UIKeyboardHIDUsageKeyboardPageUp = 0x4B, + UIKeyboardHIDUsageKeyboardDeleteForward = 0x4C, + UIKeyboardHIDUsageKeyboardEnd = 0x4D, + UIKeyboardHIDUsageKeyboardPageDown = 0x4E, + UIKeyboardHIDUsageKeyboardRightArrow = 0x4F, + UIKeyboardHIDUsageKeyboardLeftArrow = 0x50, + UIKeyboardHIDUsageKeyboardDownArrow = 0x51, + UIKeyboardHIDUsageKeyboardUpArrow = 0x52, + + + UIKeyboardHIDUsageKeypadNumLock = 0x53, + UIKeyboardHIDUsageKeypadSlash = 0x54, + UIKeyboardHIDUsageKeypadAsterisk = 0x55, + UIKeyboardHIDUsageKeypadHyphen = 0x56, + UIKeyboardHIDUsageKeypadPlus = 0x57, + UIKeyboardHIDUsageKeypadEnter = 0x58, + UIKeyboardHIDUsageKeypad1 = 0x59, + UIKeyboardHIDUsageKeypad2 = 0x5A, + UIKeyboardHIDUsageKeypad3 = 0x5B, + UIKeyboardHIDUsageKeypad4 = 0x5C, + UIKeyboardHIDUsageKeypad5 = 0x5D, + UIKeyboardHIDUsageKeypad6 = 0x5E, + UIKeyboardHIDUsageKeypad7 = 0x5F, + UIKeyboardHIDUsageKeypad8 = 0x60, + UIKeyboardHIDUsageKeypad9 = 0x61, + UIKeyboardHIDUsageKeypad0 = 0x62, + UIKeyboardHIDUsageKeypadPeriod = 0x63, + UIKeyboardHIDUsageKeyboardNonUSBackslash = 0x64, + + + + + UIKeyboardHIDUsageKeyboardApplication = 0x65, + UIKeyboardHIDUsageKeyboardPower = 0x66, + UIKeyboardHIDUsageKeypadEqualSign = 0x67, + + + UIKeyboardHIDUsageKeyboardF13 = 0x68, + UIKeyboardHIDUsageKeyboardF14 = 0x69, + UIKeyboardHIDUsageKeyboardF15 = 0x6A, + UIKeyboardHIDUsageKeyboardF16 = 0x6B, + UIKeyboardHIDUsageKeyboardF17 = 0x6C, + UIKeyboardHIDUsageKeyboardF18 = 0x6D, + UIKeyboardHIDUsageKeyboardF19 = 0x6E, + UIKeyboardHIDUsageKeyboardF20 = 0x6F, + UIKeyboardHIDUsageKeyboardF21 = 0x70, + UIKeyboardHIDUsageKeyboardF22 = 0x71, + UIKeyboardHIDUsageKeyboardF23 = 0x72, + UIKeyboardHIDUsageKeyboardF24 = 0x73, + UIKeyboardHIDUsageKeyboardExecute = 0x74, + UIKeyboardHIDUsageKeyboardHelp = 0x75, + UIKeyboardHIDUsageKeyboardMenu = 0x76, + UIKeyboardHIDUsageKeyboardSelect = 0x77, + UIKeyboardHIDUsageKeyboardStop = 0x78, + UIKeyboardHIDUsageKeyboardAgain = 0x79, + UIKeyboardHIDUsageKeyboardUndo = 0x7A, + UIKeyboardHIDUsageKeyboardCut = 0x7B, + UIKeyboardHIDUsageKeyboardCopy = 0x7C, + UIKeyboardHIDUsageKeyboardPaste = 0x7D, + UIKeyboardHIDUsageKeyboardFind = 0x7E, + UIKeyboardHIDUsageKeyboardMute = 0x7F, + UIKeyboardHIDUsageKeyboardVolumeUp = 0x80, + UIKeyboardHIDUsageKeyboardVolumeDown = 0x81, + + UIKeyboardHIDUsageKeyboardLockingCapsLock = 0x82, + UIKeyboardHIDUsageKeyboardLockingNumLock = 0x83, + + + UIKeyboardHIDUsageKeyboardLockingScrollLock = 0x84, + UIKeyboardHIDUsageKeypadComma = 0x85, + UIKeyboardHIDUsageKeypadEqualSignAS400 = 0x86, + + + + UIKeyboardHIDUsageKeyboardInternational1 = 0x87, + UIKeyboardHIDUsageKeyboardInternational2 = 0x88, + UIKeyboardHIDUsageKeyboardInternational3 = 0x89, + UIKeyboardHIDUsageKeyboardInternational4 = 0x8A, + UIKeyboardHIDUsageKeyboardInternational5 = 0x8B, + UIKeyboardHIDUsageKeyboardInternational6 = 0x8C, + UIKeyboardHIDUsageKeyboardInternational7 = 0x8D, + UIKeyboardHIDUsageKeyboardInternational8 = 0x8E, + UIKeyboardHIDUsageKeyboardInternational9 = 0x8F, + + + + UIKeyboardHIDUsageKeyboardLANG1 = 0x90, + + + + UIKeyboardHIDUsageKeyboardLANG2 = 0x91, + + + UIKeyboardHIDUsageKeyboardLANG3 = 0x92, + + + UIKeyboardHIDUsageKeyboardLANG4 = 0x93, + + + UIKeyboardHIDUsageKeyboardLANG5 = 0x94, + + + UIKeyboardHIDUsageKeyboardLANG6 = 0x95, + UIKeyboardHIDUsageKeyboardLANG7 = 0x96, + UIKeyboardHIDUsageKeyboardLANG8 = 0x97, + UIKeyboardHIDUsageKeyboardLANG9 = 0x98, + + UIKeyboardHIDUsageKeyboardAlternateErase = 0x99, + UIKeyboardHIDUsageKeyboardSysReqOrAttention = 0x9A, + UIKeyboardHIDUsageKeyboardCancel = 0x9B, + UIKeyboardHIDUsageKeyboardClear = 0x9C, + UIKeyboardHIDUsageKeyboardPrior = 0x9D, + UIKeyboardHIDUsageKeyboardReturn = 0x9E, + UIKeyboardHIDUsageKeyboardSeparator = 0x9F, + UIKeyboardHIDUsageKeyboardOut = 0xA0, + UIKeyboardHIDUsageKeyboardOper = 0xA1, + UIKeyboardHIDUsageKeyboardClearOrAgain = 0xA2, + UIKeyboardHIDUsageKeyboardCrSelOrProps = 0xA3, + UIKeyboardHIDUsageKeyboardExSel = 0xA4, + + + + UIKeyboardHIDUsageKeyboardLeftControl = 0xE0, + UIKeyboardHIDUsageKeyboardLeftShift = 0xE1, + UIKeyboardHIDUsageKeyboardLeftAlt = 0xE2, + UIKeyboardHIDUsageKeyboardLeftGUI = 0xE3, + UIKeyboardHIDUsageKeyboardRightControl = 0xE4, + UIKeyboardHIDUsageKeyboardRightShift = 0xE5, + UIKeyboardHIDUsageKeyboardRightAlt = 0xE6, + UIKeyboardHIDUsageKeyboardRightGUI = 0xE7, + + + UIKeyboardHIDUsageKeyboard_Reserved = 0xFFFF, + + + + UIKeyboardHIDUsageKeyboardHangul = UIKeyboardHIDUsageKeyboardLANG1, + UIKeyboardHIDUsageKeyboardHanja = UIKeyboardHIDUsageKeyboardLANG2, + + UIKeyboardHIDUsageKeyboardKanaSwitch = UIKeyboardHIDUsageKeyboardLANG1, + UIKeyboardHIDUsageKeyboardAlphanumericSwitch = UIKeyboardHIDUsageKeyboardLANG2, + UIKeyboardHIDUsageKeyboardKatakana = UIKeyboardHIDUsageKeyboardLANG3, + UIKeyboardHIDUsageKeyboardHiragana = UIKeyboardHIDUsageKeyboardLANG4, + UIKeyboardHIDUsageKeyboardZenkakuHankakuKanji = UIKeyboardHIDUsageKeyboardLANG5, +}; + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UIKey +#define _REWRITER_typedef_UIKey +typedef struct objc_object UIKey; +typedef struct {} _objc_exc_UIKey; +#endif + +struct UIKey_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + +// @property (nonatomic, readonly) NSString *characters; + + + + + +// @property (nonatomic, readonly) NSString *charactersIgnoringModifiers; + + +// @property (nonatomic, readonly) UIKeyModifierFlags modifierFlags; + + +// @property (nonatomic, readonly) UIKeyboardHIDUsage keyCode; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +typedef NSUInteger UIDataDetectorTypes; enum { + UIDataDetectorTypePhoneNumber = 1 << 0, + UIDataDetectorTypeLink = 1 << 1, + UIDataDetectorTypeAddress __attribute__((availability(ios,introduced=4.0))) = 1 << 2, + UIDataDetectorTypeCalendarEvent __attribute__((availability(ios,introduced=4.0))) = 1 << 3, + UIDataDetectorTypeShipmentTrackingNumber __attribute__((availability(ios,introduced=10.0))) = 1 << 4, + UIDataDetectorTypeFlightNumber __attribute__((availability(ios,introduced=10.0))) = 1 << 5, + UIDataDetectorTypeLookupSuggestion __attribute__((availability(ios,introduced=10.0))) = 1 << 6, + + UIDataDetectorTypeNone = 0, + UIDataDetectorTypeAll = (9223372036854775807L *2UL+1UL) +} __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull begin + +typedef NSInteger UIDatePickerMode; enum { + UIDatePickerModeTime, + UIDatePickerModeDate, + UIDatePickerModeDateAndTime, + UIDatePickerModeCountDownTimer, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIDatePickerStyle; enum { + + UIDatePickerStyleAutomatic, + + UIDatePickerStyleWheels, + + UIDatePickerStyleCompact, +} __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDatePicker +#define _REWRITER_typedef_UIDatePicker +typedef struct objc_object UIDatePicker; +typedef struct {} _objc_exc_UIDatePicker; +#endif + +struct UIDatePicker_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + +// @property (nonatomic) UIDatePickerMode datePickerMode; + +// @property (nullable, nonatomic, strong) NSLocale *locale; +// @property (null_resettable, nonatomic, copy) NSCalendar *calendar; +// @property (nullable, nonatomic, strong) NSTimeZone *timeZone; + +// @property (nonatomic, strong) NSDate *date; +// @property (nullable, nonatomic, strong) NSDate *minimumDate; +// @property (nullable, nonatomic, strong) NSDate *maximumDate; + +// @property (nonatomic) NSTimeInterval countDownDuration; +// @property (nonatomic) NSInteger minuteInterval; + +// - (void)setDate:(NSDate *)date animated:(BOOL)animated; + + +// @property (nonatomic, readwrite, assign) UIDatePickerStyle preferredDatePickerStyle __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +// @property (nonatomic, readonly, assign) UIDatePickerStyle datePickerStyle __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSInteger UIDocumentChangeKind; enum { + UIDocumentChangeDone, + UIDocumentChangeUndone, + UIDocumentChangeRedone, + UIDocumentChangeCleared +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIDocumentSaveOperation; enum { + UIDocumentSaveForCreating, + UIDocumentSaveForOverwriting +} __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIDocumentState; enum { + UIDocumentStateNormal = 0, + UIDocumentStateClosed = 1 << 0, + UIDocumentStateInConflict = 1 << 1, + UIDocumentStateSavingError = 1 << 2, + UIDocumentStateEditingDisabled = 1 << 3, + UIDocumentStateProgressAvailable = 1 << 4 +} __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIDocumentStateChangedNotification __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocument +#define _REWRITER_typedef_UIDocument +typedef struct objc_object UIDocument; +typedef struct {} _objc_exc_UIDocument; +#endif + +struct UIDocument_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// - (instancetype)initWithFileURL:(NSURL *)url __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property (readonly) NSURL *fileURL __attribute__((availability(tvos,unavailable))); +// @property (readonly, copy) NSString *localizedName __attribute__((availability(tvos,unavailable))); +// @property (readonly, copy, nullable) NSString *fileType __attribute__((availability(tvos,unavailable))); +// @property (copy, nullable) NSDate *fileModificationDate __attribute__((availability(tvos,unavailable))); + +// @property (readonly) UIDocumentState documentState __attribute__((availability(tvos,unavailable))); + +// @property (readonly, nullable) NSProgress *progress __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + + + + + +// - (void)openWithCompletionHandler:(void (^ _Nullable)(BOOL success))completionHandler __attribute__((availability(tvos,unavailable))); + + +// - (void)closeWithCompletionHandler:(void (^ _Nullable)(BOOL success))completionHandler __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (BOOL)loadFromContents:(id)contents ofType:(nullable NSString *)typeName error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + + +// - (nullable id)contentsForType:(NSString *)typeName error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + + + + + +// - (void)disableEditing __attribute__((availability(tvos,unavailable))); +// - (void)enableEditing __attribute__((availability(tvos,unavailable))); + + + + + + +// @property (strong, null_resettable) NSUndoManager *undoManager __attribute__((availability(tvos,unavailable))); + + + +// @property(nonatomic, readonly) BOOL hasUnsavedChanges __attribute__((availability(tvos,unavailable))); + + +// - (void)updateChangeCount:(UIDocumentChangeKind)change __attribute__((availability(tvos,unavailable))); + + + + + +// - (id)changeCountTokenForSaveOperation:(UIDocumentSaveOperation)saveOperation __attribute__((availability(tvos,unavailable))); +// - (void)updateChangeCountWithToken:(id)changeCountToken forSaveOperation:(UIDocumentSaveOperation)saveOperation __attribute__((availability(tvos,unavailable))); + + + + + + +// - (void)saveToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation completionHandler:(void (^ _Nullable)(BOOL success))completionHandler __attribute__((availability(tvos,unavailable))); + + + +// - (void)autosaveWithCompletionHandler:(void (^ _Nullable)(BOOL success))completionHandler __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic, readonly, nullable) NSString *savingFileType __attribute__((availability(tvos,unavailable))); +// - (NSString *)fileNameExtensionForType:(nullable NSString *)typeName saveOperation:(UIDocumentSaveOperation)saveOperation __attribute__((availability(tvos,unavailable))); + + + +// - (BOOL)writeContents:(id)contents andAttributes:(nullable NSDictionary *)additionalFileAttributes safelyToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + +// - (BOOL)writeContents:(id)contents toURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation originalContentsURL:(nullable NSURL *)originalContentsURL error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + + +// - (nullable NSDictionary *)fileAttributesToWriteToURL:(NSURL *)url forSaveOperation:(UIDocumentSaveOperation)saveOperation error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + + + +// - (BOOL)readFromURL:(NSURL *)url error:(NSError **)outError __attribute__((availability(tvos,unavailable))); + + + + +// - (void)performAsynchronousFileAccessUsingBlock:(void (^)(void))block __attribute__((availability(tvos,unavailable))); +// - (void)handleError:(NSError *)error userInteractionPermitted:(BOOL)userInteractionPermitted __attribute__((availability(tvos,unavailable))); + + + + +// - (void)finishedHandlingError:(NSError *)error recovered:(BOOL)recovered __attribute__((availability(tvos,unavailable))); + + + + +// - (void)userInteractionNoLongerPermittedForError:(NSError *)error __attribute__((availability(tvos,unavailable))); + + + + + + + +// - (void)revertToContentsOfURL:(NSURL *)url completionHandler:(void (^ _Nullable)(BOOL success))completionHandler __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) NSString* const NSUserActivityDocumentURLKey __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @interface UIDocument (ActivityContinuation) +// @property (nonatomic, strong, nullable) NSUserActivity *userActivity __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); +// - (void)updateUserActivityState:(NSUserActivity *)userActivity __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); +// - (void)restoreUserActivityState:(NSUserActivity *)userActivity __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIDocumentPickerViewController; +#ifndef _REWRITER_typedef_UIDocumentPickerViewController +#define _REWRITER_typedef_UIDocumentPickerViewController +typedef struct objc_object UIDocumentPickerViewController; +typedef struct {} _objc_exc_UIDocumentPickerViewController; +#endif + +#ifndef _REWRITER_typedef_UIDocumentMenuViewController +#define _REWRITER_typedef_UIDocumentMenuViewController +typedef struct objc_object UIDocumentMenuViewController; +typedef struct {} _objc_exc_UIDocumentMenuViewController; +#endif + + +__attribute__((availability(tvos,unavailable))) // @protocol UIDocumentPickerDelegate + +/* @optional */ + +// - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls __attribute__((availability(ios,introduced=11.0))); + + +// - (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller; + +// - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url __attribute__((availability(ios,introduced=8.0,deprecated=11.0,replacement="documentPicker:didPickDocumentsAtURLs:"))); +/* @end */ + + +typedef NSUInteger UIDocumentPickerMode; enum { + UIDocumentPickerModeImport, + UIDocumentPickerModeOpen, + UIDocumentPickerModeExportToService, + UIDocumentPickerModeMoveToService +} __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocumentPickerViewController +#define _REWRITER_typedef_UIDocumentPickerViewController +typedef struct objc_object UIDocumentPickerViewController; +typedef struct {} _objc_exc_UIDocumentPickerViewController; +#endif + +struct UIDocumentPickerViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + +// - (instancetype)initWithDocumentTypes:(NSArray *)allowedUTIs inMode:(UIDocumentPickerMode)mode __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithURL:(NSURL *)url inMode:(UIDocumentPickerMode)mode __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithURLs:(NSArray *)urls inMode:(UIDocumentPickerMode)mode __attribute__((objc_designated_initializer)) __attribute__((availability(ios,introduced=11.0))); + +// @property (nullable, nonatomic, weak) id delegate; +// @property (nonatomic, assign, readonly) UIDocumentPickerMode documentPickerMode; +// @property (nonatomic, assign) BOOL allowsMultipleSelection __attribute__((availability(ios,introduced=11.0))); + + +// @property (assign, nonatomic) BOOL shouldShowFileExtensions __attribute__((availability(ios,introduced=13.0))); + + +// @property (nullable, nonatomic, copy) NSURL *directoryURL __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSUInteger UIDocumentMenuOrder; enum { + UIDocumentMenuOrderFirst, + UIDocumentMenuOrderLast +} __attribute__((availability(ios,introduced=8_0,deprecated=11_0,message="" ))) __attribute__((availability(tvos,unavailable))); + +__attribute__((availability(ios,introduced=8.0,deprecated=13.0,message="UIDocumentMenuDelegate is deprecated. Use UIDocumentPickerViewController directly."))) +__attribute__((availability(tvos,unavailable))) // @protocol UIDocumentMenuDelegate + +// - (void)documentMenu:(UIDocumentMenuViewController *)documentMenu didPickDocumentPicker:(UIDocumentPickerViewController *)documentPicker; +/* @optional */ +// - (void)documentMenuWasCancelled:(UIDocumentMenuViewController *)documentMenu; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=11.0,message="UIDocumentMenuViewController is deprecated. Use UIDocumentPickerViewController directly."))) +__attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocumentMenuViewController +#define _REWRITER_typedef_UIDocumentMenuViewController +typedef struct objc_object UIDocumentMenuViewController; +typedef struct {} _objc_exc_UIDocumentMenuViewController; +#endif + +struct UIDocumentMenuViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)initWithDocumentTypes:(NSArray *)allowedUTIs inMode:(UIDocumentPickerMode)mode __attribute__((objc_designated_initializer)); +// - (instancetype)initWithURL:(NSURL *)url inMode:(UIDocumentPickerMode)mode __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (void)addOptionWithTitle:(NSString *)title image:(nullable UIImage *)image order:(UIDocumentMenuOrder)order handler:(void (^)(void))handler; + +// @property (nullable, nonatomic, weak) id delegate; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocumentPickerExtensionViewController +#define _REWRITER_typedef_UIDocumentPickerExtensionViewController +typedef struct objc_object UIDocumentPickerExtensionViewController; +typedef struct {} _objc_exc_UIDocumentPickerExtensionViewController; +#endif + +struct UIDocumentPickerExtensionViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + + + + +// - (void)dismissGrantingAccessToURL:(nullable NSURL *)url; + +// - (void)prepareForPresentationInMode:(UIDocumentPickerMode)mode; + + +// @property (nonatomic, readonly, assign) UIDocumentPickerMode documentPickerMode; + + +// @property (nullable, nonatomic, readonly, copy) NSURL *originalURL; + + +// @property (nullable, nonatomic, readonly, copy) NSArray *validTypes; + + + +// @property (nonatomic, readonly, copy) NSString *providerIdentifier; +// @property (nullable, nonatomic, readonly, copy) NSURL *documentStorageURL; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UICloudSharingController; +#ifndef _REWRITER_typedef_UICloudSharingController +#define _REWRITER_typedef_UICloudSharingController +typedef struct objc_object UICloudSharingController; +typedef struct {} _objc_exc_UICloudSharingController; +#endif + +#ifndef _REWRITER_typedef_CKShare +#define _REWRITER_typedef_CKShare +typedef struct objc_object CKShare; +typedef struct {} _objc_exc_CKShare; +#endif + +#ifndef _REWRITER_typedef_CKContainer +#define _REWRITER_typedef_CKContainer +typedef struct objc_object CKContainer; +typedef struct {} _objc_exc_CKContainer; +#endif + + +// @protocol UIActivityItemSource; + +typedef NSUInteger UICloudSharingPermissionOptions; enum { + UICloudSharingPermissionStandard = 0, + + UICloudSharingPermissionAllowPublic = 1 << 0, + UICloudSharingPermissionAllowPrivate = 1 << 1, + + UICloudSharingPermissionAllowReadOnly = 1 << 2, + UICloudSharingPermissionAllowReadWrite = 1 << 3, +} __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +__attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UICloudSharingControllerDelegate + +// - (void)cloudSharingController:(UICloudSharingController *)csc failedToSaveShareWithError:(NSError *)error; + + +// - (nullable NSString *)itemTitleForCloudSharingController:(UICloudSharingController *)csc; + +/* @optional */ + +// - (nullable NSData *)itemThumbnailDataForCloudSharingController:(UICloudSharingController *)csc; + +// - (nullable NSString *)itemTypeForCloudSharingController:(UICloudSharingController *)csc; + +// - (void)cloudSharingControllerDidSaveShare:(UICloudSharingController *)csc; +// - (void)cloudSharingControllerDidStopSharing:(UICloudSharingController *)csc; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UICloudSharingController +#define _REWRITER_typedef_UICloudSharingController +typedef struct objc_object UICloudSharingController; +typedef struct {} _objc_exc_UICloudSharingController; +#endif + +struct UICloudSharingController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((unavailable)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((unavailable)); + + + + + + +// - (instancetype)initWithPreparationHandler:(void (^)(UICloudSharingController *controller, void (^preparationCompletionHandler)(CKShare * _Nullable, CKContainer * _Nullable, NSError * _Nullable)))preparationHandler; + + + +// - (instancetype)initWithShare:(CKShare *)share container:(CKContainer *)container; + +// @property (nonatomic, weak) id delegate; +// @property (nonatomic, readonly, strong, nullable) CKShare *share; + + + +// @property (nonatomic) UICloudSharingPermissionOptions availablePermissions; + + + + + +// - (id )activityItemSource; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + +typedef NSString *NSFileProviderItemIdentifier __attribute__((swift_wrapper(struct))); + + + + + +extern "C" NSFileProviderItemIdentifier const NSFileProviderRootContainerItemIdentifier __attribute__((swift_name("NSFileProviderItemIdentifier.rootContainer"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +extern "C" NSFileProviderItemIdentifier const NSFileProviderWorkingSetContainerItemIdentifier __attribute__((swift_name("NSFileProviderItemIdentifier.workingSet"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + + + + + +typedef NSData *NSFileProviderVersionData __attribute__((swift_wrapper(struct))); + +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) + +#ifndef _REWRITER_typedef_NSFileProviderItemVersion +#define _REWRITER_typedef_NSFileProviderItemVersion +typedef struct objc_object NSFileProviderItemVersion; +typedef struct {} _objc_exc_NSFileProviderItemVersion; +#endif + +struct NSFileProviderItemVersion_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + + +#if 0 +- (instancetype)initWithContentVersion:(NSFileProviderVersionData)contentVersion + metadataVersion:(NSFileProviderVersionData)metadataVersion; +#endif + +// @property (nonatomic, readonly) NSFileProviderVersionData contentVersion; + + + + + + +// @property (nonatomic, readonly) NSFileProviderVersionData metadataVersion; + +/* @end */ + + + + + + + +extern "C" unsigned long long const NSFileProviderFavoriteRankUnranked __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger NSFileProviderItemCapabilities; enum { + + + + + NSFileProviderItemCapabilitiesAllowsReading = 1 << 0, + + + + + + NSFileProviderItemCapabilitiesAllowsWriting = 1 << 1, + + + NSFileProviderItemCapabilitiesAllowsReparenting = 1 << 2, + + + NSFileProviderItemCapabilitiesAllowsRenaming = 1 << 3, + + + NSFileProviderItemCapabilitiesAllowsTrashing = 1 << 4, + + + NSFileProviderItemCapabilitiesAllowsDeleting = 1 << 5, + + + + + + NSFileProviderItemCapabilitiesAllowsAddingSubItems = NSFileProviderItemCapabilitiesAllowsWriting, + + + + + + NSFileProviderItemCapabilitiesAllowsContentEnumerating = NSFileProviderItemCapabilitiesAllowsReading, + + NSFileProviderItemCapabilitiesAllowsAll = + NSFileProviderItemCapabilitiesAllowsReading + | NSFileProviderItemCapabilitiesAllowsWriting + | NSFileProviderItemCapabilitiesAllowsReparenting + | NSFileProviderItemCapabilitiesAllowsRenaming + | NSFileProviderItemCapabilitiesAllowsTrashing + | NSFileProviderItemCapabilitiesAllowsDeleting +}; + +// @protocol NSFileProviderItemFlags + +// @property (nonatomic, readonly, getter=isUserExecutable) BOOL userExecutable; +// @property (nonatomic, readonly, getter=isUserReadable) BOOL userReadable; +// @property (nonatomic, readonly, getter=isUserWritable) BOOL userWritable; + +// @property (nonatomic, readonly, getter=isHidden) BOOL hidden; +// @property (nonatomic, readonly, getter=isPathExtensionHidden) BOOL pathExtensionHidden; +/* @end */ + + +// @protocol NSFileProviderItem + +// @property (nonatomic, readonly, copy) NSFileProviderItemIdentifier itemIdentifier; +// @property (nonatomic, readonly, copy) NSFileProviderItemIdentifier parentItemIdentifier; + + + + +// @property (nonatomic, readonly, copy) NSString *filename; + + + + +// @property (nonatomic, readonly, copy) NSString *typeIdentifier; + +/* @optional */ + + + + + +// @property (nonatomic, readonly) NSFileProviderItemCapabilities capabilities; + + + + + +// @property (nonatomic, readonly, strong, nullable) id flags __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +// @property (nonatomic, readonly, copy, nullable) NSNumber *documentSize; +// @property (nonatomic, readonly, copy, nullable) NSNumber *childItemCount; +// @property (nonatomic, readonly, copy, nullable) NSDate *creationDate; +// @property (nonatomic, readonly, copy, nullable) NSDate *contentModificationDate; +// @property (nonatomic, readonly, strong, nullable) NSDictionary *extendedAttributes __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +// @property (nonatomic, readonly, copy, nullable) NSDate *lastUsedDate; +// @property (nonatomic, readonly, copy, nullable) NSData *tagData; +// @property (nonatomic, readonly, copy, nullable) NSNumber *favoriteRank; +// @property (nonatomic, readonly, getter=isTrashed) BOOL trashed; + + + + + +// @property (nonatomic, readonly, getter=isUploaded) BOOL uploaded; +// @property (nonatomic, readonly, getter=isUploading) BOOL uploading; +// @property (nonatomic, readonly, copy, nullable) NSError *uploadingError; + +// @property (nonatomic, readonly, getter=isDownloaded) BOOL downloaded; +// @property (nonatomic, readonly, getter=isDownloading) BOOL downloading; +// @property (nonatomic, readonly, copy, nullable) NSError *downloadingError; +// @property (nonatomic, readonly, getter=isExcludedFromSync) BOOL excludedFromSync + __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +// @property (nonatomic, readonly, getter=isMostRecentVersionDownloaded) BOOL mostRecentVersionDownloaded; + +// @property (nonatomic, readonly, getter=isShared) BOOL shared; +// @property (nonatomic, readonly, getter=isSharedByCurrentUser) BOOL sharedByCurrentUser; + + + + + +// @property (nonatomic, strong, readonly, nullable) NSPersonNameComponents *ownerNameComponents; +// @property (nonatomic, strong, readonly, nullable) NSPersonNameComponents *mostRecentEditorNameComponents; +// @property (nonatomic, strong, readonly, nullable) NSData *versionIdentifier __attribute__((availability(ios,introduced=11.0,deprecated=13.0,message="itemVersion"))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))); + + + + +// @property (nonatomic, strong, readonly, nullable) NSFileProviderItemVersion *itemVersion __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +// @property (nonatomic, strong, readonly, nullable) NSDictionary *userInfo; + + +/* @end */ + + + +typedef id/**/ NSFileProviderItem; +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class NSFileProviderDomain; +#ifndef _REWRITER_typedef_NSFileProviderDomain +#define _REWRITER_typedef_NSFileProviderDomain +typedef struct objc_object NSFileProviderDomain; +typedef struct {} _objc_exc_NSFileProviderDomain; +#endif + + + + + + + + +typedef NSUInteger NSFileProviderItemField; enum { + NSFileProviderItemFieldContents = 1 << 0, + NSFileProviderItemFieldFilename = 1 << 1, + NSFileProviderItemFieldParentItemIdentifier = 1 << 2, + NSFileProviderItemFieldLastUsedDate = 1 << 3, + NSFileProviderItemFieldTagData = 1 << 4, + NSFileProviderItemFieldFavoriteRank = 1 << 5, + NSFileProviderItemFieldCreationDate = 1 << 6, + NSFileProviderItemFieldContentModificationDate = 1 << 7, + NSFileProviderItemFieldFlags = 1 << 8, + NSFileProviderItemFieldTrashed = 1 << 9, + NSFileProviderItemFieldExtendedAttributes = 1 << 10 +} __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +__attribute__((availability(ios,introduced=8.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_NSFileProviderExtension +#define _REWRITER_typedef_NSFileProviderExtension +typedef struct objc_object NSFileProviderExtension; +typedef struct {} _objc_exc_NSFileProviderExtension; +#endif + +struct NSFileProviderExtension_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (nullable NSFileProviderItem)itemForIdentifier:(NSFileProviderItemIdentifier)identifier error:(NSError * _Nullable *)error __attribute__((swift_name("item(for:)"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#if 0 +- (NSProgress *)fetchContentsForItemWithIdentifier:(NSFileProviderItemIdentifier)itemIdentifier + version:(nullable NSFileProviderItemVersion *)requestedVersion + completionHandler:(void(^)(NSURL * _Nullable fileContents, NSFileProviderItem _Nullable item, NSError * _Nullable error))completionHandler __attribute__((swift_name("fetchContents(for:version:completionHandler:)"))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + +#if 0 +- (NSProgress *)fetchContentsForItemWithIdentifier:(NSFileProviderItemIdentifier)itemIdentifier + version:(nullable NSFileProviderItemVersion *)requestedVersion + usingExistingContentsAtURL:(NSURL *)existingContents + existingVersion:(NSFileProviderItemVersion *)existingVersion + completionHandler:(void(^)(NSURL * _Nullable fileContents, NSFileProviderItem _Nullable item, NSError * _Nullable error))completionHandler +__attribute__((swift_name("fetchContents(for:version:usingExistingContentsAt:existingVersion:completionHandler:)"))) +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + +#if 0 +- (void)itemChanged:(NSFileProviderItem)item + baseVersion:(NSFileProviderItemVersion *)version + changedFields:(NSFileProviderItemField)changedFields + contents:(nullable NSURL *)newContents + completionHandler:(void(^)(NSFileProviderItem _Nullable item, NSError * _Nullable error))completionHandler __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + + +/* @end */ + + + + + +typedef NSUInteger NSFileProviderCreateItemOptions; enum { + NSFileProviderCreateItemOptionsItemMayAlreadyExist = 1 << 0, +} __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +// @interface NSFileProviderExtension (CreateItem) +#if 0 +- (void)createItemBasedOnTemplate:(NSFileProviderItem)itemTemplate + fields:(NSFileProviderItemField)fields + contents:(nullable NSURL *)url + options:(NSFileProviderCreateItemOptions)options + completionHandler:(void (^)(NSFileProviderItem _Nullable createdItem, NSError * _Nullable error))completionHandler + __attribute__((swift_name("createItem(basedOn:fields:contents:options:completionHandler:)"))) + __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + + +/* @end */ + + + + + +typedef NSUInteger NSFileProviderDeleteItemOptions; enum { + NSFileProviderDeleteItemOptionsRecursive = 1 << 0 +} __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +// @interface NSFileProviderExtension (DeleteItem) +#if 0 +- (void)deleteItemWithIdentifier:(NSFileProviderItemIdentifier)itemIdentifier + baseVersion:(NSFileProviderItemVersion *)version + options:(NSFileProviderDeleteItemOptions)options + completionHandler:(void (^)(NSError * _Nullable))completionHandler __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + + +/* @end */ + + +// @interface NSFileProviderExtension (Import) +#if 0 +- (void)importDidFinishWithCompletionHandler:(void (^)(void))completionHandler +__attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +#endif + + +/* @end */ + + +// @interface NSFileProviderExtension (Deprecated) +// + (BOOL)writePlaceholderAtURL:(NSURL *)placeholderURL withMetadata:(NSDictionary *)metadata error:(NSError **)error __attribute__((availability(ios,introduced=8.0,deprecated=11.0,message="Use the corresponding method on NSFileProviderManager instead"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +// + (NSURL *)placeholderURLForURL:(NSURL *)url __attribute__((availability(ios,introduced=8.0,deprecated=11.0,replacement="NSFileProviderManager +placeholderURLForURL:"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property(nonatomic, readonly) NSString *providerIdentifier __attribute__((availability(ios,introduced=8.0,deprecated=11.0,replacement="NSFileProviderManager -providerIdentifier"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + + +// @property(nonatomic, readonly) NSURL *documentStorageURL __attribute__((availability(ios,introduced=8.0,deprecated=11.0,replacement="NSFileProviderManager -documentStorageURL"))) __attribute__((availability(macos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// - (nullable NSURL *)URLForItemWithPersistentIdentifier:(NSFileProviderItemIdentifier)identifier __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +// - (nullable NSFileProviderItemIdentifier)persistentIdentifierForItemAtURL:(NSURL *)url __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +// - (void)providePlaceholderAtURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable error))completionHandler __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +// - (void)startProvidingItemAtURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable error))completionHandler __attribute__((swift_name("startProvidingItem(at:completionHandler:)"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); +// - (void)stopProvidingItemAtURL:(NSURL *)url __attribute__((swift_name("stopProvidingItem(at:)"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + + + + + +// - (void)itemChangedAtURL:(NSURL *)url __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(macos,unavailable))) __attribute__((availability(macCatalyst,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIVisualEffect +#define _REWRITER_typedef_UIVisualEffect +typedef struct objc_object UIVisualEffect; +typedef struct {} _objc_exc_UIVisualEffect; +#endif + +struct UIVisualEffect_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIBlurEffectStyle; enum { + + + UIBlurEffectStyleExtraLight, + UIBlurEffectStyleLight, + UIBlurEffectStyleDark, + UIBlurEffectStyleExtraDark __attribute__((availability(tvos,introduced=10.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))), + + + + + + + UIBlurEffectStyleRegular __attribute__((availability(ios,introduced=10.0))), + + + UIBlurEffectStyleProminent __attribute__((availability(ios,introduced=10.0))), + + + + + + + UIBlurEffectStyleSystemUltraThinMaterial __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThinMaterial __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemMaterial __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThickMaterial __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemChromeMaterial __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + + + + UIBlurEffectStyleSystemUltraThinMaterialLight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThinMaterialLight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemMaterialLight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThickMaterialLight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemChromeMaterialLight __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + + UIBlurEffectStyleSystemUltraThinMaterialDark __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThinMaterialDark __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemMaterialDark __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemThickMaterialDark __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + UIBlurEffectStyleSystemChromeMaterialDark __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))), + +} __attribute__((availability(ios,introduced=8.0))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIBlurEffect +#define _REWRITER_typedef_UIBlurEffect +typedef struct objc_object UIBlurEffect; +typedef struct {} _objc_exc_UIBlurEffect; +#endif + +struct UIBlurEffect_IMPL { + struct UIVisualEffect_IMPL UIVisualEffect_IVARS; +}; + + +// + (UIBlurEffect *)effectWithStyle:(UIBlurEffectStyle)style; + +/* @end */ + +#pragma clang assume_nonnull end +// @class UIBlurEffect; +#ifndef _REWRITER_typedef_UIBlurEffect +#define _REWRITER_typedef_UIBlurEffect +typedef struct objc_object UIBlurEffect; +typedef struct {} _objc_exc_UIBlurEffect; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIVibrancyEffect +#define _REWRITER_typedef_UIVibrancyEffect +typedef struct objc_object UIVibrancyEffect; +typedef struct {} _objc_exc_UIVibrancyEffect; +#endif + +struct UIVibrancyEffect_IMPL { + struct UIVisualEffect_IMPL UIVisualEffect_IVARS; +}; + + +// + (UIVibrancyEffect *)effectForBlurEffect:(UIBlurEffect *)blurEffect; + +/* @end */ + + + + + + + + +typedef NSInteger UIVibrancyEffectStyle; enum { + + + UIVibrancyEffectStyleLabel, + UIVibrancyEffectStyleSecondaryLabel, + UIVibrancyEffectStyleTertiaryLabel, + UIVibrancyEffectStyleQuaternaryLabel, + + + + UIVibrancyEffectStyleFill, + UIVibrancyEffectStyleSecondaryFill, + UIVibrancyEffectStyleTertiaryFill, + + + + UIVibrancyEffectStyleSeparator, + +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @interface UIVibrancyEffect (AdditionalStyles) + +// + (UIVibrancyEffect *)effectForBlurEffect:(UIBlurEffect *)blurEffect style:(UIVibrancyEffectStyle)style __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIVisualEffectView +#define _REWRITER_typedef_UIVisualEffectView +typedef struct objc_object UIVisualEffectView; +typedef struct {} _objc_exc_UIVisualEffectView; +#endif + +struct UIVisualEffectView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property (nonatomic, strong, readonly) UIView *contentView; + +// @property (nonatomic, copy, nullable) UIVisualEffect *effect; + +// - (instancetype)initWithEffect:(nullable UIVisualEffect *)effect __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))) + +#ifndef _REWRITER_typedef_UIFontMetrics +#define _REWRITER_typedef_UIFontMetrics +typedef struct objc_object UIFontMetrics; +typedef struct {} _objc_exc_UIFontMetrics; +#endif + +struct UIFontMetrics_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (class, readonly, strong) UIFontMetrics *defaultMetrics; + +// + (instancetype)metricsForTextStyle:(UIFontTextStyle)textStyle; + +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initForTextStyle:(UIFontTextStyle)textStyle __attribute__((objc_designated_initializer)); + +// - (UIFont *)scaledFontForFont:(UIFont *)font; +// - (UIFont *)scaledFontForFont:(UIFont *)font maximumPointSize:(CGFloat)maximumPointSize; +// - (UIFont *)scaledFontForFont:(UIFont *)font compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(watchos,unavailable))); +// - (UIFont *)scaledFontForFont:(UIFont *)font maximumPointSize:(CGFloat)maximumPointSize compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(watchos,unavailable))); + +// - (CGFloat)scaledValueForValue:(CGFloat)value; +// - (CGFloat)scaledValueForValue:(CGFloat)value compatibleWithTraitCollection:(nullable UITraitCollection *)traitCollection __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UIFontPickerViewControllerConfiguration +#define _REWRITER_typedef_UIFontPickerViewControllerConfiguration +typedef struct objc_object UIFontPickerViewControllerConfiguration; +typedef struct {} _objc_exc_UIFontPickerViewControllerConfiguration; +#endif + +struct UIFontPickerViewControllerConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic) BOOL includeFaces; + +// @property (nonatomic) BOOL displayUsingSystemFont; + + +// @property (nonatomic) UIFontDescriptorSymbolicTraits filteredTraits; + + +// @property (nullable, copy, nonatomic) NSPredicate *filteredLanguagesPredicate; + + +// + (nullable NSPredicate *)filterPredicateForFilteredLanguages:(NSArray *)filteredLanguages; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIFontPickerViewController; +#ifndef _REWRITER_typedef_UIFontPickerViewController +#define _REWRITER_typedef_UIFontPickerViewController +typedef struct objc_object UIFontPickerViewController; +typedef struct {} _objc_exc_UIFontPickerViewController; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) // @protocol UIFontPickerViewControllerDelegate + +/* @optional */ + +// - (void)fontPickerViewControllerDidCancel:(UIFontPickerViewController *)viewController; + +// - (void)fontPickerViewControllerDidPickFont:(UIFontPickerViewController *)viewController; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UIFontPickerViewController +#define _REWRITER_typedef_UIFontPickerViewController +typedef struct objc_object UIFontPickerViewController; +typedef struct {} _objc_exc_UIFontPickerViewController; +#endif + +struct UIFontPickerViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + + + +// - (instancetype)initWithConfiguration:(UIFontPickerViewControllerConfiguration *)configuration __attribute__((objc_designated_initializer)); + +// @property (readonly, copy, nonatomic) UIFontPickerViewControllerConfiguration *configuration; + +// @property (nullable, weak, nonatomic) id delegate; + +// @property (nullable, strong, nonatomic) UIFontDescriptor *selectedFontDescriptor; + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +extern "C" __attribute__((visibility ("default"))) CGContextRef _Nullable UIGraphicsGetCurrentContext(void) __attribute__((cf_returns_not_retained)); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsPushContext(CGContextRef context); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsPopContext(void); + +extern "C" __attribute__((visibility ("default"))) void UIRectFillUsingBlendMode(CGRect rect, CGBlendMode blendMode); +extern "C" __attribute__((visibility ("default"))) void UIRectFill(CGRect rect); + +extern "C" __attribute__((visibility ("default"))) void UIRectFrameUsingBlendMode(CGRect rect, CGBlendMode blendMode); +extern "C" __attribute__((visibility ("default"))) void UIRectFrame(CGRect rect); + +extern "C" __attribute__((visibility ("default"))) void UIRectClip(CGRect rect); + + + + + +extern "C" __attribute__((visibility ("default"))) void UIGraphicsBeginImageContext(CGSize size); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) __attribute__((availability(ios,introduced=4.0))); +extern "C" __attribute__((visibility ("default"))) UIImage* _Nullable UIGraphicsGetImageFromCurrentImageContext(void); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsEndImageContext(void); + + + +extern "C" __attribute__((visibility ("default"))) BOOL UIGraphicsBeginPDFContextToFile(NSString *path, CGRect bounds, NSDictionary * _Nullable documentInfo) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsBeginPDFContextToData(NSMutableData *data, CGRect bounds, NSDictionary * _Nullable documentInfo) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsEndPDFContext(void) __attribute__((availability(ios,introduced=3.2))); + +extern "C" __attribute__((visibility ("default"))) void UIGraphicsBeginPDFPage(void) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsBeginPDFPageWithInfo(CGRect bounds, NSDictionary * _Nullable pageInfo) __attribute__((availability(ios,introduced=3.2))); + +extern "C" __attribute__((visibility ("default"))) CGRect UIGraphicsGetPDFContextBounds(void) __attribute__((availability(ios,introduced=3.2))); + +extern "C" __attribute__((visibility ("default"))) void UIGraphicsSetPDFContextURLForRect(NSURL *url, CGRect rect) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsAddPDFContextDestinationAtPoint(NSString *name, CGPoint point) __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) void UIGraphicsSetPDFContextDestinationForRect(NSString *name, CGRect rect) __attribute__((availability(ios,introduced=3.2))); +#pragma clang assume_nonnull end + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UIImageConfiguration +#define _REWRITER_typedef_UIImageConfiguration +typedef struct objc_object UIImageConfiguration; +typedef struct {} _objc_exc_UIImageConfiguration; +#endif + +struct UIImageConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + +// @property (nonatomic, nullable, readonly) UITraitCollection *traitCollection; + + +// - (instancetype)configurationWithTraitCollection:(nullable UITraitCollection *)traitCollection; + + + + + + +// - (instancetype)configurationByApplyingConfiguration:(nullable UIImageConfiguration *)otherConfiguration; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + +typedef NSInteger UIImageSymbolScale; enum { + UIImageSymbolScaleDefault = -1, + UIImageSymbolScaleUnspecified = 0, + UIImageSymbolScaleSmall = 1, + UIImageSymbolScaleMedium, + UIImageSymbolScaleLarge, +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + + + +typedef NSInteger UIImageSymbolWeight; enum { + UIImageSymbolWeightUnspecified = 0, + UIImageSymbolWeightUltraLight = 1, + UIImageSymbolWeightThin, + UIImageSymbolWeightLight, + UIImageSymbolWeightRegular, + UIImageSymbolWeightMedium, + UIImageSymbolWeightSemibold, + UIImageSymbolWeightBold, + UIImageSymbolWeightHeavy, + UIImageSymbolWeightBlack +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + +extern "C" __attribute__((visibility ("default"))) UIFontWeight UIFontWeightForImageSymbolWeight(UIImageSymbolWeight symbolWeight) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) UIImageSymbolWeight UIImageSymbolWeightForFontWeight(UIFontWeight fontWeight) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) + +#ifndef _REWRITER_typedef_UIImageSymbolConfiguration +#define _REWRITER_typedef_UIImageSymbolConfiguration +typedef struct objc_object UIImageSymbolConfiguration; +typedef struct {} _objc_exc_UIImageSymbolConfiguration; +#endif + +struct UIImageSymbolConfiguration_IMPL { + struct UIImageConfiguration_IMPL UIImageConfiguration_IVARS; +}; + + + +@property (class, nonatomic, readonly) UIImageSymbolConfiguration *unspecifiedConfiguration; + + +// + (instancetype)configurationWithScale:(UIImageSymbolScale)scale; + + +// + (instancetype)configurationWithPointSize:(CGFloat)pointSize; +// + (instancetype)configurationWithWeight:(UIImageSymbolWeight)weight; +// + (instancetype)configurationWithPointSize:(CGFloat)pointSize weight:(UIImageSymbolWeight)weight; +// + (instancetype)configurationWithPointSize:(CGFloat)pointSize weight:(UIImageSymbolWeight)weight scale:(UIImageSymbolScale)scale; + + +// + (instancetype)configurationWithTextStyle:(UIFontTextStyle)textStyle; +// + (instancetype)configurationWithTextStyle:(UIFontTextStyle)textStyle scale:(UIImageSymbolScale)scale; + + +// + (instancetype)configurationWithFont:(UIFont *)font; +// + (instancetype)configurationWithFont:(UIFont *)font scale:(UIImageSymbolScale)scale; + + +// - (instancetype)configurationWithoutTextStyle; +// - (instancetype)configurationWithoutScale; +// - (instancetype)configurationWithoutWeight; +// - (instancetype)configurationWithoutPointSizeAndWeight; + + + + +// - (BOOL)isEqualToConfiguration:(nullable UIImageSymbolConfiguration *)otherConfiguration; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsRendererFormat +#define _REWRITER_typedef_UIGraphicsRendererFormat +typedef struct objc_object UIGraphicsRendererFormat; +typedef struct {} _objc_exc_UIGraphicsRendererFormat; +#endif + +struct UIGraphicsRendererFormat_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (instancetype)defaultFormat __attribute__((availability(tvos,introduced=10.0,deprecated=11.0,replacement="preferredFormat"))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))); + + +// + (instancetype)preferredFormat __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(watchos,introduced=4.0))); + + +// @property (nonatomic, readonly) CGRect bounds; +/* @end */ + + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsRendererContext +#define _REWRITER_typedef_UIGraphicsRendererContext +typedef struct objc_object UIGraphicsRendererContext; +typedef struct {} _objc_exc_UIGraphicsRendererContext; +#endif + +struct UIGraphicsRendererContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// @property (nonatomic, readonly) CGContextRef CGContext; +// @property (nonatomic, readonly) __kindof UIGraphicsRendererFormat *format; + +// - (void)fillRect:(CGRect)rect; +// - (void)fillRect:(CGRect)rect blendMode:(CGBlendMode)blendMode; + +// - (void)strokeRect:(CGRect)rect; +// - (void)strokeRect:(CGRect)rect blendMode:(CGBlendMode)blendMode; + +// - (void)clipToRect:(CGRect)rect; +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsRenderer +#define _REWRITER_typedef_UIGraphicsRenderer +typedef struct objc_object UIGraphicsRenderer; +typedef struct {} _objc_exc_UIGraphicsRenderer; +#endif + +struct UIGraphicsRenderer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithBounds:(CGRect)bounds; +// - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsRendererFormat *)format __attribute__((objc_designated_initializer)); + +// @property (nonatomic, readonly) __kindof UIGraphicsRendererFormat *format; +// @property (nonatomic, readonly) BOOL allowsImageOutput; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIGraphicsImageRendererContext; +#ifndef _REWRITER_typedef_UIGraphicsImageRendererContext +#define _REWRITER_typedef_UIGraphicsImageRendererContext +typedef struct objc_object UIGraphicsImageRendererContext; +typedef struct {} _objc_exc_UIGraphicsImageRendererContext; +#endif + + +typedef void (*UIGraphicsImageDrawingActions)(UIGraphicsImageRendererContext *rendererContext) __attribute__((availability(ios,introduced=10.0))); + +typedef NSInteger UIGraphicsImageRendererFormatRange; enum { + UIGraphicsImageRendererFormatRangeUnspecified = -1, + UIGraphicsImageRendererFormatRangeAutomatic = 0, + UIGraphicsImageRendererFormatRangeExtended, + UIGraphicsImageRendererFormatRangeStandard +} __attribute__((availability(ios,introduced=12.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsImageRendererFormat +#define _REWRITER_typedef_UIGraphicsImageRendererFormat +typedef struct objc_object UIGraphicsImageRendererFormat; +typedef struct {} _objc_exc_UIGraphicsImageRendererFormat; +#endif + +struct UIGraphicsImageRendererFormat_IMPL { + struct UIGraphicsRendererFormat_IMPL UIGraphicsRendererFormat_IVARS; +}; + + +// @property (nonatomic) CGFloat scale; +// @property (nonatomic) BOOL opaque; +// @property (nonatomic) BOOL prefersExtendedRange __attribute__((availability(ios,introduced=10.0,deprecated=12.0,message="Use the preferredRange property instead"))); + +// @property (nonatomic) UIGraphicsImageRendererFormatRange preferredRange __attribute__((availability(ios,introduced=12.0))); + + + +// + (instancetype)formatForTraitCollection:(UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=11.0))); +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsImageRendererContext +#define _REWRITER_typedef_UIGraphicsImageRendererContext +typedef struct objc_object UIGraphicsImageRendererContext; +typedef struct {} _objc_exc_UIGraphicsImageRendererContext; +#endif + +struct UIGraphicsImageRendererContext_IMPL { + struct UIGraphicsRendererContext_IMPL UIGraphicsRendererContext_IVARS; +}; + +// @property (nonatomic, readonly) UIImage *currentImage; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsImageRenderer +#define _REWRITER_typedef_UIGraphicsImageRenderer +typedef struct objc_object UIGraphicsImageRenderer; +typedef struct {} _objc_exc_UIGraphicsImageRenderer; +#endif + +struct UIGraphicsImageRenderer_IMPL { + struct UIGraphicsRenderer_IMPL UIGraphicsRenderer_IVARS; +}; + +// - (instancetype)initWithSize:(CGSize)size; +// - (instancetype)initWithSize:(CGSize)size format:(UIGraphicsImageRendererFormat *)format __attribute__((objc_designated_initializer)); +// - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsImageRendererFormat *)format __attribute__((objc_designated_initializer)); + + + +// - (UIImage *)imageWithActions:(__attribute__((noescape)) UIGraphicsImageDrawingActions)actions; + + +// - (NSData *)PNGDataWithActions:(__attribute__((noescape)) UIGraphicsImageDrawingActions)actions; +// - (NSData *)JPEGDataWithCompressionQuality:(CGFloat)compressionQuality actions:(__attribute__((noescape)) UIGraphicsImageDrawingActions)actions; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIGraphicsPDFRendererContext; +#ifndef _REWRITER_typedef_UIGraphicsPDFRendererContext +#define _REWRITER_typedef_UIGraphicsPDFRendererContext +typedef struct objc_object UIGraphicsPDFRendererContext; +typedef struct {} _objc_exc_UIGraphicsPDFRendererContext; +#endif + + +typedef void (*UIGraphicsPDFDrawingActions)(UIGraphicsPDFRendererContext *rendererContext) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsPDFRendererFormat +#define _REWRITER_typedef_UIGraphicsPDFRendererFormat +typedef struct objc_object UIGraphicsPDFRendererFormat; +typedef struct {} _objc_exc_UIGraphicsPDFRendererFormat; +#endif + +struct UIGraphicsPDFRendererFormat_IMPL { + struct UIGraphicsRendererFormat_IMPL UIGraphicsRendererFormat_IVARS; +}; + +// @property (nonatomic, copy) NSDictionary *documentInfo; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsPDFRendererContext +#define _REWRITER_typedef_UIGraphicsPDFRendererContext +typedef struct objc_object UIGraphicsPDFRendererContext; +typedef struct {} _objc_exc_UIGraphicsPDFRendererContext; +#endif + +struct UIGraphicsPDFRendererContext_IMPL { + struct UIGraphicsRendererContext_IMPL UIGraphicsRendererContext_IVARS; +}; + +// @property (nonatomic, readonly) CGRect pdfContextBounds; + +// - (void)beginPage; +// - (void)beginPageWithBounds:(CGRect)bounds pageInfo:(NSDictionary *)pageInfo; + +// - (void)setURL:(NSURL *)url forRect:(CGRect)rect; +// - (void)addDestinationWithName:(NSString *)name atPoint:(CGPoint)point; +// - (void)setDestinationWithName:(NSString *)name forRect:(CGRect)rect; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIGraphicsPDFRenderer +#define _REWRITER_typedef_UIGraphicsPDFRenderer +typedef struct objc_object UIGraphicsPDFRenderer; +typedef struct {} _objc_exc_UIGraphicsPDFRenderer; +#endif + +struct UIGraphicsPDFRenderer_IMPL { + struct UIGraphicsRenderer_IMPL UIGraphicsRenderer_IVARS; +}; + +// - (instancetype)initWithBounds:(CGRect)bounds format:(UIGraphicsPDFRendererFormat *)format __attribute__((objc_designated_initializer)); + +// - (BOOL)writePDFToURL:(NSURL *)url withActions:(__attribute__((noescape)) UIGraphicsPDFDrawingActions)actions error:(NSError **)error; +// - (NSData *)PDFDataWithActions:(__attribute__((noescape)) UIGraphicsPDFDrawingActions)actions; +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + + + +typedef NSString * NSDataAssetName __attribute__((swift_bridged_typedef)) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))); + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(tvos,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) +#ifndef _REWRITER_typedef_NSDataAsset +#define _REWRITER_typedef_NSDataAsset +typedef struct objc_object NSDataAsset; +typedef struct {} _objc_exc_NSDataAsset; +#endif + +struct NSDataAsset_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); + + +// - (nullable instancetype)initWithName:(NSDataAssetName)name; + +// - (nullable instancetype)initWithName:(NSDataAssetName)name bundle:(NSBundle *)bundle __attribute__((objc_designated_initializer)); + + +// @property (nonatomic, readonly, copy) NSDataAssetName name; + +// @property (nonatomic, readonly, copy) NSData *data; + +// @property (nonatomic, readonly, copy) NSString *typeIdentifier; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UITraitCollection; +#ifndef _REWRITER_typedef_UITraitCollection +#define _REWRITER_typedef_UITraitCollection +typedef struct objc_object UITraitCollection; +typedef struct {} _objc_exc_UITraitCollection; +#endif + +// @protocol UIImageConfiguration; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIImageAsset +#define _REWRITER_typedef_UIImageAsset +typedef struct objc_object UIImageAsset; +typedef struct {} _objc_exc_UIImageAsset; +#endif + +struct UIImageAsset_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (UIImage *)imageWithConfiguration:(UIImageConfiguration *)configuration; +// - (void)registerImage:(UIImage *)image withConfiguration:(UIImageConfiguration *)configuration; +// - (void)unregisterImageWithConfiguration:(UIImageConfiguration *)configuration; + +// - (UIImage *)imageWithTraitCollection:(UITraitCollection *)traitCollection; +// - (void)registerImage:(UIImage *)image withTraitCollection:(UITraitCollection *)traitCollection; +// - (void)unregisterImageWithTraitCollection:(UITraitCollection *)traitCollection; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSUInteger UIScrollType; enum { + UIScrollTypeDiscrete, + UIScrollTypeContinuous, +} __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +typedef NSInteger UIScrollTypeMask; enum { + UIScrollTypeMaskDiscrete = 1 << UIScrollTypeDiscrete, + UIScrollTypeMaskContinuous = 1 << UIScrollTypeContinuous, + UIScrollTypeMaskAll = UIScrollTypeMaskDiscrete | UIScrollTypeMaskContinuous, +} __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UIPanGestureRecognizer +#define _REWRITER_typedef_UIPanGestureRecognizer +typedef struct objc_object UIPanGestureRecognizer; +typedef struct {} _objc_exc_UIPanGestureRecognizer; +#endif + +struct UIPanGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property (nonatomic) NSUInteger minimumNumberOfTouches __attribute__((availability(tvos,unavailable))); +// @property (nonatomic) NSUInteger maximumNumberOfTouches __attribute__((availability(tvos,unavailable))); + +// - (CGPoint)translationInView:(nullable UIView *)view; +// - (void)setTranslation:(CGPoint)translation inView:(nullable UIView *)view; + +// - (CGPoint)velocityInView:(nullable UIView *)view; + +// @property(nonatomic) UIScrollTypeMask allowedScrollTypesMask __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UITapGestureRecognizer +#define _REWRITER_typedef_UITapGestureRecognizer +typedef struct objc_object UITapGestureRecognizer; +typedef struct {} _objc_exc_UITapGestureRecognizer; +#endif + +struct UITapGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property (nonatomic) NSUInteger numberOfTapsRequired; +// @property (nonatomic) NSUInteger numberOfTouchesRequired __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic) UIEventButtonMask buttonMaskRequired __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UINavigationControllerOperation; enum { + UINavigationControllerOperationNone, + UINavigationControllerOperationPush, + UINavigationControllerOperationPop, +}; + +extern "C" __attribute__((visibility ("default"))) const CGFloat UINavigationControllerHideShowBarDuration; + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UINavigationBar +#define _REWRITER_typedef_UINavigationBar +typedef struct objc_object UINavigationBar; +typedef struct {} _objc_exc_UINavigationBar; +#endif + +#ifndef _REWRITER_typedef_UINavigationItem +#define _REWRITER_typedef_UINavigationItem +typedef struct objc_object UINavigationItem; +typedef struct {} _objc_exc_UINavigationItem; +#endif + +#ifndef _REWRITER_typedef_UIToolbar +#define _REWRITER_typedef_UIToolbar +typedef struct objc_object UIToolbar; +typedef struct {} _objc_exc_UIToolbar; +#endif + +// @protocol UINavigationControllerDelegate; + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UINavigationController +#define _REWRITER_typedef_UINavigationController +typedef struct objc_object UINavigationController; +typedef struct {} _objc_exc_UINavigationController; +#endif + +struct UINavigationController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + + + + + +// - (instancetype)initWithNavigationBarClass:(nullable Class)navigationBarClass toolbarClass:(nullable Class)toolbarClass __attribute__((objc_designated_initializer)) __attribute__((availability(ios,introduced=5.0))); + +// - (instancetype)initWithRootViewController:(UIViewController *)rootViewController __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder __attribute__((objc_designated_initializer)); + +// - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; + +// - (nullable UIViewController *)popViewControllerAnimated:(BOOL)animated; +// - (nullable NSArray<__kindof UIViewController *> *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated; +// - (nullable NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated; + +// @property(nullable, nonatomic,readonly,strong) UIViewController *topViewController; +// @property(nullable, nonatomic,readonly,strong) UIViewController *visibleViewController; + +// @property(nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers; + +// - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))); + +// @property(nonatomic,getter=isNavigationBarHidden) BOOL navigationBarHidden; +// - (void)setNavigationBarHidden:(BOOL)hidden animated:(BOOL)animated; +// @property(nonatomic,readonly) UINavigationBar *navigationBar; + +// @property(nonatomic,getter=isToolbarHidden) BOOL toolbarHidden __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// - (void)setToolbarHidden:(BOOL)hidden animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// @property(null_resettable,nonatomic,readonly) UIToolbar *toolbar __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nullable, nonatomic, weak) id delegate; +// @property(nullable, nonatomic, readonly) UIGestureRecognizer *interactivePopGestureRecognizer __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + +// - (void)showViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, readwrite, assign) BOOL hidesBarsWhenKeyboardAppears __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, readonly, strong) UIPanGestureRecognizer *barHideOnSwipeGestureRecognizer __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, readwrite, assign) BOOL hidesBarsWhenVerticallyCompact __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, readwrite, assign) BOOL hidesBarsOnTap __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic, readonly, assign) UITapGestureRecognizer *barHideOnTapGestureRecognizer __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @protocol UIViewControllerInteractiveTransitioning; +// @protocol UIViewControllerAnimatedTransitioning; + +// @protocol UINavigationControllerDelegate + +/* @optional */ + + +// - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; +// - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated; + +// - (UIInterfaceOrientationMask)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// - (UIInterfaceOrientation)navigationControllerPreferredInterfaceOrientationForPresentation:(UINavigationController *)navigationController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + +#if 0 +- (nullable id )navigationController:(UINavigationController *)navigationController + interactionControllerForAnimationController:(id ) animationController __attribute__((availability(ios,introduced=7.0))); +#endif + + +#if 0 +- (nullable id )navigationController:(UINavigationController *)navigationController + animationControllerForOperation:(UINavigationControllerOperation)operation + fromViewController:(UIViewController *)fromVC + toViewController:(UIViewController *)toVC __attribute__((availability(ios,introduced=7.0))); +#endif + + +/* @end */ + + +// @interface UIViewController (UINavigationControllerItem) + +// @property(nonatomic,readonly,strong) UINavigationItem *navigationItem; +// @property(nonatomic) BOOL hidesBottomBarWhenPushed __attribute__((availability(tvos,unavailable))); +// @property(nullable, nonatomic,readonly,strong) UINavigationController *navigationController; + +/* @end */ + + +// @interface UIViewController (UINavigationControllerContextualToolbarItems) + +// @property (nullable, nonatomic, strong) NSArray<__kindof UIBarButtonItem *> *toolbarItems __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// - (void)setToolbarItems:(nullable NSArray *)toolbarItems animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +// @protocol UIImagePickerControllerDelegate; + +typedef NSInteger UIImagePickerControllerSourceType; enum { + UIImagePickerControllerSourceTypePhotoLibrary, + UIImagePickerControllerSourceTypeCamera, + UIImagePickerControllerSourceTypeSavedPhotosAlbum +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIImagePickerControllerQualityType; enum { + UIImagePickerControllerQualityTypeHigh = 0, + UIImagePickerControllerQualityTypeMedium = 1, + UIImagePickerControllerQualityTypeLow = 2, + UIImagePickerControllerQualityType640x480 __attribute__((availability(ios,introduced=4.0))) = 3, + UIImagePickerControllerQualityTypeIFrame1280x720 __attribute__((availability(ios,introduced=5.0))) = 4, + UIImagePickerControllerQualityTypeIFrame960x540 __attribute__((availability(ios,introduced=5.0))) = 5, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIImagePickerControllerCameraCaptureMode; enum { + UIImagePickerControllerCameraCaptureModePhoto, + UIImagePickerControllerCameraCaptureModeVideo +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIImagePickerControllerCameraDevice; enum { + UIImagePickerControllerCameraDeviceRear, + UIImagePickerControllerCameraDeviceFront +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIImagePickerControllerCameraFlashMode; enum { + UIImagePickerControllerCameraFlashModeOff = -1, + UIImagePickerControllerCameraFlashModeAuto = 0, + UIImagePickerControllerCameraFlashModeOn = 1 +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIImagePickerControllerImageURLExportPreset; enum { + UIImagePickerControllerImageURLExportPresetCompatible = 0, + UIImagePickerControllerImageURLExportPresetCurrent +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + +typedef NSString * UIImagePickerControllerInfoKey __attribute__((swift_wrapper(enum))); + + +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerMediaType __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerOriginalImage __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerEditedImage __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerCropRect __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerMediaURL __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerReferenceURL __attribute__((availability(ios,introduced=4.1,deprecated=11.0,replacement="UIImagePickerControllerPHAsset"))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerMediaMetadata __attribute__((availability(ios,introduced=4.1))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerLivePhoto __attribute__((availability(ios,introduced=9.1))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerPHAsset __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIImagePickerControllerInfoKey const UIImagePickerControllerImageURL __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIImagePickerController +#define _REWRITER_typedef_UIImagePickerController +typedef struct objc_object UIImagePickerController; +typedef struct {} _objc_exc_UIImagePickerController; +#endif + +struct UIImagePickerController_IMPL { + struct UINavigationController_IMPL UINavigationController_IVARS; +}; + + +// + (BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType; +// + (nullable NSArray *)availableMediaTypesForSourceType:(UIImagePickerControllerSourceType)sourceType; + +// + (BOOL)isCameraDeviceAvailable:(UIImagePickerControllerCameraDevice)cameraDevice __attribute__((availability(ios,introduced=4.0))); +// + (BOOL)isFlashAvailableForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice __attribute__((availability(ios,introduced=4.0))); +// + (nullable NSArray *)availableCaptureModesForCameraDevice:(UIImagePickerControllerCameraDevice)cameraDevice __attribute__((availability(ios,introduced=4.0))); + +// @property(nullable,nonatomic,weak) id delegate; + +// @property(nonatomic) UIImagePickerControllerSourceType sourceType; +// @property(nonatomic,copy) NSArray *mediaTypes; + +// @property(nonatomic) BOOL allowsEditing __attribute__((availability(ios,introduced=3.1))); +// @property(nonatomic) BOOL allowsImageEditing __attribute__((availability(ios,introduced=2.0,deprecated=3.1,message=""))); +// @property(nonatomic) UIImagePickerControllerImageURLExportPreset imageExportPreset __attribute__((availability(ios,introduced=11.0))); + + +// @property(nonatomic) NSTimeInterval videoMaximumDuration __attribute__((availability(ios,introduced=3.1))); +// @property(nonatomic) UIImagePickerControllerQualityType videoQuality __attribute__((availability(ios,introduced=3.1))); +// @property(nonatomic, copy) NSString *videoExportPreset __attribute__((availability(ios,introduced=11.0))); + + + +// @property(nonatomic) BOOL showsCameraControls __attribute__((availability(ios,introduced=3.1))); +// @property(nullable, nonatomic,strong) __kindof UIView *cameraOverlayView __attribute__((availability(ios,introduced=3.1))); +// @property(nonatomic) CGAffineTransform cameraViewTransform __attribute__((availability(ios,introduced=3.1))); + +// - (void)takePicture __attribute__((availability(ios,introduced=3.1))); + + + +// - (BOOL)startVideoCapture __attribute__((availability(ios,introduced=4.0))); +// - (void)stopVideoCapture __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic) UIImagePickerControllerCameraCaptureMode cameraCaptureMode __attribute__((availability(ios,introduced=4.0))); +// @property(nonatomic) UIImagePickerControllerCameraDevice cameraDevice __attribute__((availability(ios,introduced=4.0))); +// @property(nonatomic) UIImagePickerControllerCameraFlashMode cameraFlashMode __attribute__((availability(ios,introduced=4.0))); + + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) // @protocol UIImagePickerControllerDelegate +/* @optional */ + + + +// - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(nullable NSDictionary *)editingInfo __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))); +// - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info; +// - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker; + +/* @end */ + + + + + +extern "C" __attribute__((visibility ("default"))) void UIImageWriteToSavedPhotosAlbum(UIImage *image, _Nullable id completionTarget, _Nullable SEL completionSelector, void * _Nullable contextInfo) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) BOOL UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(NSString *videoPath) __attribute__((availability(ios,introduced=3.1))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) void UISaveVideoAtPathToSavedPhotosAlbum(NSString *videoPath, _Nullable id completionTarget, _Nullable SEL completionSelector, void * _Nullable contextInfo) __attribute__((availability(ios,introduced=3.1))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSInteger UIInputViewStyle; enum { + UIInputViewStyleDefault, + UIInputViewStyleKeyboard, +} __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIInputView +#define _REWRITER_typedef_UIInputView +typedef struct objc_object UIInputView; +typedef struct {} _objc_exc_UIInputView; +#endif + +struct UIInputView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property (nonatomic, readonly) UIInputViewStyle inputViewStyle; + +// @property (nonatomic, assign) BOOL allowsSelfSizing __attribute__((availability(ios,introduced=9.0))); + +// - (instancetype)initWithFrame:(CGRect)frame inputViewStyle:(UIInputViewStyle)inputViewStyle __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UILexicon; +#ifndef _REWRITER_typedef_UILexicon +#define _REWRITER_typedef_UILexicon +typedef struct objc_object UILexicon; +typedef struct {} _objc_exc_UILexicon; +#endif + + +// @protocol UITextDocumentProxy + +// @property (nullable, nonatomic, readonly) NSString *documentContextBeforeInput; +// @property (nullable, nonatomic, readonly) NSString *documentContextAfterInput; +// @property (nullable, nonatomic, readonly) NSString *selectedText __attribute__((availability(ios,introduced=11.0))); + + + +// @property (nullable, nonatomic, readonly) UITextInputMode *documentInputMode __attribute__((availability(ios,introduced=10.0))); + +// @property (nonatomic, readonly, copy) NSUUID *documentIdentifier __attribute__((availability(ios,introduced=11.0))); + +// - (void)adjustTextPositionByCharacterOffset:(NSInteger)offset; + + +// - (void)setMarkedText:(NSString *)markedText selectedRange:(NSRange)selectedRange __attribute__((availability(ios,introduced=13.0))); + + +// - (void)unmarkText __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIInputViewController +#define _REWRITER_typedef_UIInputViewController +typedef struct objc_object UIInputViewController; +typedef struct {} _objc_exc_UIInputViewController; +#endif + +struct UIInputViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// @property (nullable, nonatomic, strong) UIInputView *inputView; + +// @property (nonatomic, readonly) id textDocumentProxy; + + + +// @property (nullable, nonatomic, copy) NSString *primaryLanguage; + + +// @property (nonatomic) BOOL hasDictationKey; + +// @property (nonatomic, readonly) BOOL hasFullAccess __attribute__((availability(ios,introduced=11.0))); +// @property (nonatomic, readonly) BOOL needsInputModeSwitchKey __attribute__((availability(ios,introduced=11.0))); + +// - (void)dismissKeyboard; +// - (void)advanceToNextInputMode; + + + + +// - (void)handleInputModeListFromView:(nonnull UIView *)view withEvent:(nonnull UIEvent *)event __attribute__((availability(ios,introduced=10.0))); + + + +// - (void)requestSupplementaryLexiconWithCompletion:(void (^)(UILexicon *))completionHandler; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIColor; +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +struct UILabel_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nullable, nonatomic,copy) NSString *text; +// @property(null_resettable, nonatomic,strong) UIFont *font __attribute__((annotate("ui_appearance_selector"))); +// @property(null_resettable, nonatomic,strong) UIColor *textColor __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic,strong) UIColor *shadowColor __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic) CGSize shadowOffset __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic) NSTextAlignment textAlignment; +// @property(nonatomic) NSLineBreakMode lineBreakMode; + + +// @property(nullable, nonatomic,copy) NSAttributedString *attributedText __attribute__((availability(ios,introduced=6.0))); + + + +// @property(nullable, nonatomic,strong) UIColor *highlightedTextColor __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic,getter=isHighlighted) BOOL highlighted; + +// @property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; +// @property(nonatomic,getter=isEnabled) BOOL enabled; + + + + + +// @property(nonatomic) NSInteger numberOfLines; + + + + +// @property(nonatomic) BOOL adjustsFontSizeToFitWidth; +// @property(nonatomic) UIBaselineAdjustment baselineAdjustment; +// @property(nonatomic) CGFloat minimumScaleFactor __attribute__((availability(ios,introduced=6.0))); + + + + +// @property(nonatomic) BOOL allowsDefaultTighteningForTruncation __attribute__((availability(ios,introduced=9.0))); + + + + +// - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines; +// - (void)drawTextInRect:(CGRect)rect; + + + + +// @property(nonatomic) CGFloat preferredMaxLayoutWidth __attribute__((availability(ios,introduced=6.0))); + + + +// @property (nonatomic) BOOL enablesMarqueeWhenAncestorFocused __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + +// @property(nonatomic) CGFloat minimumFontSize __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=""))) __attribute__((availability(tvos,unavailable))); + + +// @property(nonatomic) BOOL adjustsLetterSpacingToFitWidth __attribute__((availability(ios,introduced=6.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UILexiconEntry +#define _REWRITER_typedef_UILexiconEntry +typedef struct objc_object UILexiconEntry; +typedef struct {} _objc_exc_UILexiconEntry; +#endif + +struct UILexiconEntry_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// @property (nonatomic, readonly) NSString *documentText; +// @property (nonatomic, readonly) NSString *userInput; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UILexicon +#define _REWRITER_typedef_UILexicon +typedef struct objc_object UILexicon; +typedef struct {} _objc_exc_UILexicon; +#endif + +struct UILexicon_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// @property (nonatomic, readonly) NSArray *entries; +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +// @protocol UILargeContentViewerInteractionDelegate; + + + + + + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UILargeContentViewerItem + + + + +// @property (nonatomic, assign, readonly) BOOL showsLargeContentViewer; + + +// @property (nullable, nonatomic, copy, readonly) NSString *largeContentTitle; + + +// @property (nullable, nonatomic, strong, readonly) UIImage *largeContentImage; + + + + +// @property (nonatomic, assign, readonly) BOOL scalesLargeContentImage; + + +// @property (nonatomic, assign, readonly) UIEdgeInsets largeContentImageInsets; + +/* @end */ + + +// @interface UIView (UILargeContentViewer) + + +// @property (nonatomic, assign, readwrite) BOOL showsLargeContentViewer __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, copy, readwrite) NSString *largeContentTitle __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, strong, readwrite) UIImage *largeContentImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readwrite) BOOL scalesLargeContentImage __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readwrite) UIEdgeInsets largeContentImageInsets __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UILargeContentViewerInteraction +#define _REWRITER_typedef_UILargeContentViewerInteraction +typedef struct objc_object UILargeContentViewerInteraction; +typedef struct {} _objc_exc_UILargeContentViewerInteraction; +#endif + +struct UILargeContentViewerInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithDelegate:(nullable id)delegate __attribute__((objc_designated_initializer)); + +// @property (nonatomic, nullable, weak, readonly) id delegate; + + +// @property (nonatomic, strong, readonly) UIGestureRecognizer *gestureRecognizerForExclusionRelationship; + + + + + + +@property (class, nonatomic, readonly, getter=isEnabled) BOOL enabled; + +/* @end */ + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UILargeContentViewerInteractionDelegate + +/* @optional */ + + + + + + +// - (void)largeContentViewerInteraction:(UILargeContentViewerInteraction *)interaction didEndOnItem:(nullable id)item atPoint:(CGPoint)point; + + + +// - (nullable id)largeContentViewerInteraction:(UILargeContentViewerInteraction *)interaction itemAtPoint:(CGPoint)point; + + + +// - (UIViewController *)viewControllerForLargeContentViewerInteraction:(UILargeContentViewerInteraction *)interaction; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UILargeContentViewerInteractionEnabledStatusDidChangeNotification __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class CLRegion; +#ifndef _REWRITER_typedef_CLRegion +#define _REWRITER_typedef_CLRegion +typedef struct objc_object CLRegion; +typedef struct {} _objc_exc_CLRegion; +#endif + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationRequest"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UILocalNotification +#define _REWRITER_typedef_UILocalNotification +typedef struct objc_object UILocalNotification; +typedef struct {} _objc_exc_UILocalNotification; +#endif + +struct UILocalNotification_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property(nullable, nonatomic,copy) NSDate *fireDate; + + +// @property(nullable, nonatomic,copy) NSTimeZone *timeZone; + +// @property(nonatomic) NSCalendarUnit repeatInterval; +// @property(nullable, nonatomic,copy) NSCalendar *repeatCalendar; + + + + +// @property(nullable, nonatomic,copy) CLRegion *region __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic,assign) BOOL regionTriggersOnce __attribute__((availability(ios,introduced=8.0))); + + +// @property(nullable, nonatomic,copy) NSString *alertBody; +// @property(nonatomic) BOOL hasAction; +// @property(nullable, nonatomic,copy) NSString *alertAction; +// @property(nullable, nonatomic,copy) NSString *alertLaunchImage; +// @property(nullable, nonatomic,copy) NSString *alertTitle __attribute__((availability(ios,introduced=8.2))); + + +// @property(nullable, nonatomic,copy) NSString *soundName; + + +// @property(nonatomic) NSInteger applicationIconBadgeNumber; + + +// @property(nullable, nonatomic,copy) NSDictionary *userInfo; + + +// @property (nullable, nonatomic, copy) NSString *category __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSString *const UILocalNotificationDefaultSoundName __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message="Use UserNotifications Framework's +[UNNotificationSound defaultSound]"))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +typedef NSInteger UIApplicationShortcutIconType; enum { + UIApplicationShortcutIconTypeCompose, + UIApplicationShortcutIconTypePlay, + UIApplicationShortcutIconTypePause, + UIApplicationShortcutIconTypeAdd, + UIApplicationShortcutIconTypeLocation, + UIApplicationShortcutIconTypeSearch, + UIApplicationShortcutIconTypeShare, + UIApplicationShortcutIconTypeProhibit __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeContact __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeHome __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeMarkLocation __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeFavorite __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeLove __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeCloud __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeInvitation __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeConfirmation __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeMail __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeMessage __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeDate __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeTime __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeCapturePhoto __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeCaptureVideo __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeTask __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeTaskCompleted __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeAlarm __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeBookmark __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeShuffle __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeAudio __attribute__((availability(ios,introduced=9.1))), + UIApplicationShortcutIconTypeUpdate __attribute__((availability(ios,introduced=9.1))) +} __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIApplicationShortcutIcon +#define _REWRITER_typedef_UIApplicationShortcutIcon +typedef struct objc_object UIApplicationShortcutIcon; +typedef struct {} _objc_exc_UIApplicationShortcutIcon; +#endif + +struct UIApplicationShortcutIcon_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (instancetype)iconWithType:(UIApplicationShortcutIconType)type; + + + + +// + (instancetype)iconWithTemplateImageName:(NSString *)templateImageName; + + + +// + (instancetype)iconWithSystemImageName:(NSString *)systemImageName; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIApplicationShortcutItem +#define _REWRITER_typedef_UIApplicationShortcutItem +typedef struct objc_object UIApplicationShortcutItem; +typedef struct {} _objc_exc_UIApplicationShortcutItem; +#endif + +struct UIApplicationShortcutItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle localizedSubtitle:(nullable NSString *)localizedSubtitle icon:(nullable UIApplicationShortcutIcon *)icon userInfo:(nullable NSDictionary> *)userInfo __attribute__((objc_designated_initializer)); +// - (instancetype)initWithType:(NSString *)type localizedTitle:(NSString *)localizedTitle; + + +// @property (nonatomic, copy, readonly) NSString *type; + + +// @property (nonatomic, copy, readonly) NSString *localizedTitle; +// @property (nullable, nonatomic, copy, readonly) NSString *localizedSubtitle; +// @property (nullable, nonatomic, copy, readonly) UIApplicationShortcutIcon *icon; + + + +// @property (nullable, nonatomic, copy, readonly) NSDictionary> *userInfo; + + +// @property (nullable, nonatomic, copy, readonly) id targetContentIdentifier; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIMutableApplicationShortcutItem +#define _REWRITER_typedef_UIMutableApplicationShortcutItem +typedef struct objc_object UIMutableApplicationShortcutItem; +typedef struct {} _objc_exc_UIMutableApplicationShortcutItem; +#endif + +struct UIMutableApplicationShortcutItem_IMPL { + struct UIApplicationShortcutItem_IMPL UIApplicationShortcutItem_IVARS; +}; + + + +// @property (nonatomic, copy) NSString *type; + + +// @property (nonatomic, copy) NSString *localizedTitle; +// @property (nullable, nonatomic, copy) NSString *localizedSubtitle; +// @property (nullable, nonatomic, copy) UIApplicationShortcutIcon *icon; + + + +// @property (nullable, nonatomic, copy) NSDictionary> *userInfo; + + +// @property (nullable, nonatomic, copy) id targetContentIdentifier; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIUserNotificationCategory; +#ifndef _REWRITER_typedef_UIUserNotificationCategory +#define _REWRITER_typedef_UIUserNotificationCategory +typedef struct objc_object UIUserNotificationCategory; +typedef struct {} _objc_exc_UIUserNotificationCategory; +#endif + +// @class UIUserNotificationAction; +#ifndef _REWRITER_typedef_UIUserNotificationAction +#define _REWRITER_typedef_UIUserNotificationAction +typedef struct objc_object UIUserNotificationAction; +typedef struct {} _objc_exc_UIUserNotificationAction; +#endif + + +typedef NSUInteger UIUserNotificationType; enum { + UIUserNotificationTypeNone = 0, + UIUserNotificationTypeBadge = 1 << 0, + UIUserNotificationTypeSound = 1 << 1, + UIUserNotificationTypeAlert = 1 << 2, +} __attribute__((availability(ios,introduced=8_0,deprecated=10_0,message="" "Use UserNotifications Framework's UNAuthorizationOptions"))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIUserNotificationActionBehavior; enum { + UIUserNotificationActionBehaviorDefault, + UIUserNotificationActionBehaviorTextInput +} __attribute__((availability(ios,introduced=9_0,deprecated=10_0,message="" "Use UserNotifications Framework's UNNotificationAction or UNTextInputNotificationAction"))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIUserNotificationActivationMode; enum { + UIUserNotificationActivationModeForeground, + UIUserNotificationActivationModeBackground +} __attribute__((availability(ios,introduced=8_0,deprecated=10_0,message="" "Use UserNotifications Framework's UNNotificationActionOptions"))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIUserNotificationActionContext; enum { + UIUserNotificationActionContextDefault, + UIUserNotificationActionContextMinimal +} __attribute__((availability(ios,introduced=8_0,deprecated=10_0,message="" "Use UserNotifications Framework's -[UNNotificationCategory actions] or -[UNNotificationCategory minimalActions]"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UIUserNotificationTextInputActionButtonTitleKey __attribute__((availability(ios,introduced=9.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNTextInputNotificationAction textInputButtonTitle]"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UIUserNotificationActionResponseTypedTextKey __attribute__((availability(ios,introduced=9.0,deprecated=10.0,message="Use UserNotifications Framework's -[UNTextInputNotificationResponse userText]"))) __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationSettings"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIUserNotificationSettings +#define _REWRITER_typedef_UIUserNotificationSettings +typedef struct objc_object UIUserNotificationSettings; +typedef struct {} _objc_exc_UIUserNotificationSettings; +#endif + +struct UIUserNotificationSettings_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +#if 0 ++ (instancetype)settingsForTypes:(UIUserNotificationType)types + categories:(nullable NSSet *)categories; +#endif + + +// @property (nonatomic, readonly) UIUserNotificationType types; + + +// @property (nullable, nonatomic, copy, readonly) NSSet *categories; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationCategory"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIUserNotificationCategory +#define _REWRITER_typedef_UIUserNotificationCategory +typedef struct objc_object UIUserNotificationCategory; +typedef struct {} _objc_exc_UIUserNotificationCategory; +#endif + +struct UIUserNotificationCategory_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, copy, readonly) NSString *identifier __attribute__((availability(tvos,unavailable))); + + +// - (nullable NSArray *)actionsForContext:(UIUserNotificationActionContext)context __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationCategory"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIMutableUserNotificationCategory +#define _REWRITER_typedef_UIMutableUserNotificationCategory +typedef struct objc_object UIMutableUserNotificationCategory; +typedef struct {} _objc_exc_UIMutableUserNotificationCategory; +#endif + +struct UIMutableUserNotificationCategory_IMPL { + struct UIUserNotificationCategory_IMPL UIUserNotificationCategory_IVARS; +}; + + + +// @property (nullable, nonatomic, copy) NSString *identifier; + + +// - (void)setActions:(nullable NSArray *)actions forContext:(UIUserNotificationActionContext)context; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationAction"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIUserNotificationAction +#define _REWRITER_typedef_UIUserNotificationAction +typedef struct objc_object UIUserNotificationAction; +typedef struct {} _objc_exc_UIUserNotificationAction; +#endif + +struct UIUserNotificationAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, copy, readonly) NSString *identifier __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, copy, readonly) NSString *title __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readonly) UIUserNotificationActionBehavior behavior __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, copy, readonly) NSDictionary *parameters __attribute__((availability(ios,introduced=9.0)))__attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readonly) UIUserNotificationActivationMode activationMode __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readonly, getter=isAuthenticationRequired) BOOL authenticationRequired __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, assign, readonly, getter=isDestructive) BOOL destructive __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message="Use UserNotifications Framework's UNNotificationAction"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIMutableUserNotificationAction +#define _REWRITER_typedef_UIMutableUserNotificationAction +typedef struct objc_object UIMutableUserNotificationAction; +typedef struct {} _objc_exc_UIMutableUserNotificationAction; +#endif + +struct UIMutableUserNotificationAction_IMPL { + struct UIUserNotificationAction_IMPL UIUserNotificationAction_IVARS; +}; + + + +// @property (nullable, nonatomic, copy) NSString *identifier; + + +// @property (nullable, nonatomic, copy) NSString *title; + + +// @property (nonatomic, assign) UIUserNotificationActionBehavior behavior __attribute__((availability(ios,introduced=9.0))); + + +// @property (nonatomic, copy) NSDictionary *parameters __attribute__((availability(ios,introduced=9.0))); + + +// @property (nonatomic, assign) UIUserNotificationActivationMode activationMode; + + +// @property (nonatomic, assign, getter=isAuthenticationRequired) BOOL authenticationRequired; + + +// @property (nonatomic, assign, getter=isDestructive) BOOL destructive; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) +#ifndef _REWRITER_typedef_UIFocusSystem +#define _REWRITER_typedef_UIFocusSystem +typedef struct objc_object UIFocusSystem; +typedef struct {} _objc_exc_UIFocusSystem; +#endif + +struct UIFocusSystem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, weak, readonly, nullable) id focusedItem __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + + +// + (nullable UIFocusSystem *)focusSystemForEnvironment:(id)environment __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + + + +// - (void)requestFocusUpdateToEnvironment:(id)environment __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + + +// - (void)updateFocusIfNeeded __attribute__((availability(tvos,introduced=12.0))) __attribute__((availability(ios,introduced=12.0))); + + +// + (BOOL)environment:(id)environment containsEnvironment:(id)otherEnvironment; + + +// + (void)registerURL:(NSURL *)soundFileURL forSoundIdentifier:(UIFocusSoundIdentifier)identifier __attribute__((availability(tvos,introduced=11.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + +// @protocol UIFocusDebuggerOutput, UIFocusEnvironment, UIFocusItem; + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) +#ifndef _REWRITER_typedef_UIFocusDebugger +#define _REWRITER_typedef_UIFocusDebugger +typedef struct objc_object UIFocusDebugger; +typedef struct {} _objc_exc_UIFocusDebugger; +#endif + +struct UIFocusDebugger_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// + (id)help; + + + + +// + (id)status; + + + + +// + (id)checkFocusabilityForItem:(id)item; + + + + +// + (id)simulateFocusUpdateRequestFromEnvironment:(id)environment; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) // @protocol UIFocusDebuggerOutput +/* @end */ + +#pragma clang assume_nonnull end +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=12.0))) +#ifndef _REWRITER_typedef_UIFocusMovementHint +#define _REWRITER_typedef_UIFocusMovementHint +typedef struct objc_object UIFocusMovementHint; +typedef struct {} _objc_exc_UIFocusMovementHint; +#endif + +struct UIFocusMovementHint_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readonly) CGVector movementDirection; + + +// @property (nonatomic, readonly) CATransform3D perspectiveTransform; + + +// @property (nonatomic, readonly) CGVector rotation; + + +// @property (nonatomic, readonly) CGVector translation; + + +// @property (nonatomic, readonly) CATransform3D interactionTransform; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIHoverGestureRecognizer +#define _REWRITER_typedef_UIHoverGestureRecognizer +typedef struct objc_object UIHoverGestureRecognizer; +typedef struct {} _objc_exc_UIHoverGestureRecognizer; +#endif + +struct UIHoverGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + +/* @end */ + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.0))) +#ifndef _REWRITER_typedef_UILocalizedIndexedCollation +#define _REWRITER_typedef_UILocalizedIndexedCollation +typedef struct objc_object UILocalizedIndexedCollation; +typedef struct {} _objc_exc_UILocalizedIndexedCollation; +#endif + +struct UILocalizedIndexedCollation_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)currentCollation; + + +// @property(nonatomic, readonly) NSArray * sectionTitles; + + +// @property(nonatomic, readonly) NSArray *sectionIndexTitles; + + + + +// - (NSInteger)sectionForSectionIndexTitleAtIndex:(NSInteger)indexTitleIndex; + + + +// - (NSInteger)sectionForObject:(id)object collationStringSelector:(SEL)selector; + + + + + +// - (NSArray *)sortedArrayFromArray:(NSArray *)array collationStringSelector:(SEL)selector; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UILongPressGestureRecognizer +#define _REWRITER_typedef_UILongPressGestureRecognizer +typedef struct objc_object UILongPressGestureRecognizer; +typedef struct {} _objc_exc_UILongPressGestureRecognizer; +#endif + +struct UILongPressGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property (nonatomic) NSUInteger numberOfTapsRequired; +// @property (nonatomic) NSUInteger numberOfTouchesRequired __attribute__((availability(tvos,unavailable))); + +// @property (nonatomic) NSTimeInterval minimumPressDuration; +// @property (nonatomic) CGFloat allowableMovement; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class NSManagedObjectModel; +#ifndef _REWRITER_typedef_NSManagedObjectModel +#define _REWRITER_typedef_NSManagedObjectModel +typedef struct objc_object NSManagedObjectModel; +typedef struct {} _objc_exc_NSManagedObjectModel; +#endif + +// @class NSManagedObjectContext; +#ifndef _REWRITER_typedef_NSManagedObjectContext +#define _REWRITER_typedef_NSManagedObjectContext +typedef struct objc_object NSManagedObjectContext; +typedef struct {} _objc_exc_NSManagedObjectContext; +#endif + +// @class NSPersistentStoreCoordinator; +#ifndef _REWRITER_typedef_NSPersistentStoreCoordinator +#define _REWRITER_typedef_NSPersistentStoreCoordinator +typedef struct objc_object NSPersistentStoreCoordinator; +typedef struct {} _objc_exc_NSPersistentStoreCoordinator; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIManagedDocument +#define _REWRITER_typedef_UIManagedDocument +typedef struct objc_object UIManagedDocument; +typedef struct {} _objc_exc_UIManagedDocument; +#endif + +struct UIManagedDocument_IMPL { + struct UIDocument_IMPL UIDocument_IVARS; +}; + + + + +@property(class, nonatomic, readonly) NSString *persistentStoreName; + + + +// @property (nonatomic, strong, readonly) NSManagedObjectContext *managedObjectContext; + + + +// @property (nonatomic, strong, readonly) NSManagedObjectModel* managedObjectModel; + + + +// @property (nullable, nonatomic, copy) NSDictionary *persistentStoreOptions; + + + +// @property (nullable, nonatomic, copy) NSString *modelConfiguration; + + + +// - (BOOL)configurePersistentStoreCoordinatorForURL:(NSURL *)storeURL ofType:(NSString *)fileType modelConfiguration:(nullable NSString *)configuration storeOptions:(nullable NSDictionary *)storeOptions error:(NSError **)error; + + + +// - (NSString *)persistentStoreTypeForFileType:(NSString *)fileType; + + + +// - (BOOL)readAdditionalContentFromURL:(NSURL *)absoluteURL error:(NSError **)error; + + + +// - (nullable id)additionalContentForURL:(NSURL *)absoluteURL error:(NSError **)error; + + + +// - (BOOL)writeAdditionalContent:(id)content toURL:(NSURL *)absoluteURL originalContentsURL:(nullable NSURL *)absoluteOriginalContentsURL error:(NSError **)error; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIMenuControllerArrowDirection; enum { + UIMenuControllerArrowDefault, + UIMenuControllerArrowUp __attribute__((availability(ios,introduced=3.2))), + UIMenuControllerArrowDown __attribute__((availability(ios,introduced=3.2))), + UIMenuControllerArrowLeft __attribute__((availability(ios,introduced=3.2))), + UIMenuControllerArrowRight __attribute__((availability(ios,introduced=3.2))), +} __attribute__((availability(tvos,unavailable))); + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIMenuItem +#define _REWRITER_typedef_UIMenuItem +typedef struct objc_object UIMenuItem; +typedef struct {} _objc_exc_UIMenuItem; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIMenuController +#define _REWRITER_typedef_UIMenuController +typedef struct objc_object UIMenuController; +typedef struct {} _objc_exc_UIMenuController; +#endif + +struct UIMenuController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property(class, nonatomic, readonly) UIMenuController *sharedMenuController; + +// @property(nonatomic,getter=isMenuVisible) BOOL menuVisible; + +// - (void)setMenuVisible:(BOOL)menuVisible __attribute__((availability(ios,introduced=3.0,deprecated=13.0,message="Use showMenuFromView:rect: or hideMenuFromView: instead."))); +// - (void)setMenuVisible:(BOOL)menuVisible animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0,deprecated=13.0,message="Use showMenuFromView:rect: or hideMenuFromView: instead."))); + +// - (void)setTargetRect:(CGRect)targetRect inView:(UIView *)targetView __attribute__((availability(ios,introduced=3.0,deprecated=13.0,message="Use showMenuFromView:rect: instead."))); + +// - (void)showMenuFromView:(UIView *)targetView rect:(CGRect)targetRect __attribute__((availability(ios,introduced=13.0))); +// - (void)hideMenuFromView:(UIView *)targetView __attribute__((availability(ios,introduced=13.0))); +// - (void)hideMenu __attribute__((availability(ios,introduced=13.0))); + +// @property(nonatomic) UIMenuControllerArrowDirection arrowDirection __attribute__((availability(ios,introduced=3.2))); + +// @property(nullable, nonatomic,copy) NSArray *menuItems __attribute__((availability(ios,introduced=3.2))); + +// - (void)update; + +// @property(nonatomic,readonly) CGRect menuFrame; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIMenuControllerWillShowMenuNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIMenuControllerDidShowMenuNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIMenuControllerWillHideMenuNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIMenuControllerDidHideMenuNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIMenuControllerMenuFrameDidChangeNotification __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIMenuItem +#define _REWRITER_typedef_UIMenuItem +typedef struct objc_object UIMenuItem; +typedef struct {} _objc_exc_UIMenuItem; +#endif + +struct UIMenuItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithTitle:(NSString *)title action:(SEL)action __attribute__((objc_designated_initializer)); + +// @property(nonatomic,copy) NSString *title; +// @property(nonatomic) SEL action; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIMotionEffect +#define _REWRITER_typedef_UIMotionEffect +typedef struct objc_object UIMotionEffect; +typedef struct {} _objc_exc_UIMotionEffect; +#endif + +struct UIMotionEffect_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (nullable NSDictionary *)keyPathsAndRelativeValuesForViewerOffset:(UIOffset)viewerOffset; + +/* @end */ + + + + +typedef NSInteger UIInterpolatingMotionEffectType; enum { + + + + UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis, + + + + + UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis +}; + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIInterpolatingMotionEffect +#define _REWRITER_typedef_UIInterpolatingMotionEffect +typedef struct objc_object UIInterpolatingMotionEffect; +typedef struct {} _objc_exc_UIInterpolatingMotionEffect; +#endif + +struct UIInterpolatingMotionEffect_IMPL { + struct UIMotionEffect_IMPL UIMotionEffect_IVARS; +}; + + +// - (instancetype)initWithKeyPath:(NSString *)keyPath type:(UIInterpolatingMotionEffectType)type __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// @property (readonly, nonatomic) NSString *keyPath; +// @property (readonly, nonatomic) UIInterpolatingMotionEffectType type; + +// @property (nullable, strong, nonatomic) id minimumRelativeValue; +// @property (nullable, strong, nonatomic) id maximumRelativeValue; + +/* @end */ + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIMotionEffectGroup +#define _REWRITER_typedef_UIMotionEffectGroup +typedef struct objc_object UIMotionEffectGroup; +typedef struct {} _objc_exc_UIMotionEffectGroup; +#endif + +struct UIMotionEffectGroup_IMPL { + struct UIMotionEffect_IMPL UIMotionEffect_IVARS; +}; + +// @property (nullable, copy, nonatomic) NSArray<__kindof UIMotionEffect *> *motionEffects; +/* @end */ + +#pragma clang assume_nonnull end +// @class UISearchController; +#ifndef _REWRITER_typedef_UISearchController +#define _REWRITER_typedef_UISearchController +typedef struct objc_object UISearchController; +typedef struct {} _objc_exc_UISearchController; +#endif + +#ifndef _REWRITER_typedef_UINavigationBarAppearance +#define _REWRITER_typedef_UINavigationBarAppearance +typedef struct objc_object UINavigationBarAppearance; +typedef struct {} _objc_exc_UINavigationBarAppearance; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSInteger UINavigationItemLargeTitleDisplayMode; enum { + + UINavigationItemLargeTitleDisplayModeAutomatic, + + UINavigationItemLargeTitleDisplayModeAlways, + + UINavigationItemLargeTitleDisplayModeNever, +} __attribute__((swift_name("UINavigationItem.LargeTitleDisplayMode"))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UINavigationItem +#define _REWRITER_typedef_UINavigationItem +typedef struct objc_object UINavigationItem; +typedef struct {} _objc_exc_UINavigationItem; +#endif + +struct UINavigationItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithTitle:(NSString *)title __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property(nullable, nonatomic,copy) NSString *title; +// @property(nullable, nonatomic,strong) UIView *titleView; + +// @property(nullable,nonatomic,copy) NSString *prompt __attribute__((availability(tvos,unavailable))); +// @property(nullable,nonatomic,strong) UIBarButtonItem *backBarButtonItem __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,assign) BOOL hidesBackButton __attribute__((availability(tvos,unavailable))); +// - (void)setHidesBackButton:(BOOL)hidesBackButton animated:(BOOL)animated __attribute__((availability(tvos,unavailable))); +// @property(nullable,nonatomic,copy) NSArray *leftBarButtonItems __attribute__((availability(ios,introduced=5.0))); +// @property(nullable,nonatomic,copy) NSArray *rightBarButtonItems __attribute__((availability(ios,introduced=5.0))); +// - (void)setLeftBarButtonItems:(nullable NSArray *)items animated:(BOOL)animated __attribute__((availability(ios,introduced=5.0))); +// - (void)setRightBarButtonItems:(nullable NSArray *)items animated:(BOOL)animated __attribute__((availability(ios,introduced=5.0))); + + + + + + +// @property(nonatomic) BOOL leftItemsSupplementBackButton __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + + + +// @property(nullable, nonatomic,strong) UIBarButtonItem *leftBarButtonItem; +// @property(nullable, nonatomic,strong) UIBarButtonItem *rightBarButtonItem; +// - (void)setLeftBarButtonItem:(nullable UIBarButtonItem *)item animated:(BOOL)animated; +// - (void)setRightBarButtonItem:(nullable UIBarButtonItem *)item animated:(BOOL)animated; + + +// @property (nonatomic, readwrite, assign) UINavigationItemLargeTitleDisplayMode largeTitleDisplayMode __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, retain, nullable) UISearchController *searchController __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic) BOOL hidesSearchBarWhenScrolling __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + + +// @property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *standardAppearance __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *compactAppearance __attribute__((availability(ios,introduced=13.0))); + +// @property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *scrollEdgeAppearance __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UINavigationItem; +#ifndef _REWRITER_typedef_UINavigationItem +#define _REWRITER_typedef_UINavigationItem +typedef struct objc_object UINavigationItem; +typedef struct {} _objc_exc_UINavigationItem; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UINavigationBarAppearance +#define _REWRITER_typedef_UINavigationBarAppearance +typedef struct objc_object UINavigationBarAppearance; +typedef struct {} _objc_exc_UINavigationBarAppearance; +#endif + +// @protocol UINavigationBarDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UINavigationBar +#define _REWRITER_typedef_UINavigationBar +typedef struct objc_object UINavigationBar; +typedef struct {} _objc_exc_UINavigationBar; +#endif + +struct UINavigationBar_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nonatomic,assign) UIBarStyle barStyle __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic,assign,getter=isTranslucent) BOOL translucent __attribute__((availability(ios,introduced=3.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated; +// - (nullable UINavigationItem *)popNavigationItemAnimated:(BOOL)animated; + +// @property(nullable, nonatomic,readonly,strong) UINavigationItem *topItem; +// @property(nullable, nonatomic,readonly,strong) UINavigationItem *backItem; + +// @property(nullable,nonatomic,copy) NSArray *items; +// - (void)setItems:(nullable NSArray *)items animated:(BOOL)animated; + + +// @property (nonatomic, readwrite, assign) BOOL prefersLargeTitles __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property(null_resettable, nonatomic,strong) UIColor *tintColor; +// @property(nullable, nonatomic,strong) UIColor *barTintColor __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nullable, nonatomic,strong) UIImage *shadowImage __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nullable,nonatomic,copy) NSDictionary *titleTextAttributes __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nullable, nonatomic, copy) NSDictionary *largeTitleTextAttributes __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + +// - (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + +// @property(nullable,nonatomic,strong) UIImage *backIndicatorImage __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property(nullable,nonatomic,strong) UIImage *backIndicatorTransitionMaskImage __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, readwrite, copy) UINavigationBarAppearance *standardAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +// @property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *compactAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))); + +// @property (nonatomic, readwrite, copy, nullable) UINavigationBarAppearance *scrollEdgeAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +// @protocol UINavigationBarDelegate + +/* @optional */ + +// - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item; +// - (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item; +// - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item; +// - (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSString * UINibOptionsKey __attribute__((swift_wrapper(enum))); + +extern "C" __attribute__((visibility ("default"))) UINibOptionsKey const UINibExternalObjects __attribute__((availability(ios,introduced=3.0))); + +// @interface NSBundle(UINibLoadingAdditions) +// - (nullable NSArray *)loadNibNamed:(NSString *)name owner:(nullable id)owner options:(nullable NSDictionary *)options; +/* @end */ + + +// @interface NSObject(UINibLoadingAdditions) +// - (void)awakeFromNib __attribute__((objc_requires_super)); +// - (void)prepareForInterfaceBuilder __attribute__((availability(ios,introduced=8.0))); +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) NSString * const UINibProxiedObjectsKey __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.0))) +#ifndef _REWRITER_typedef_UINib +#define _REWRITER_typedef_UINib +typedef struct objc_object UINib; +typedef struct {} _objc_exc_UINib; +#endif + +struct UINib_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// + (UINib *)nibWithNibName:(NSString *)name bundle:(nullable NSBundle *)bundleOrNil; + + +// + (UINib *)nibWithData:(NSData *)data bundle:(nullable NSBundle *)bundleOrNil; + + + + + +// - (NSArray *)instantiateWithOwner:(nullable id)ownerOrNil options:(nullable NSDictionary *)optionsOrNil; +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIPageControl +#define _REWRITER_typedef_UIPageControl +typedef struct objc_object UIPageControl; +typedef struct {} _objc_exc_UIPageControl; +#endif + +struct UIPageControl_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// @property(nonatomic) NSInteger numberOfPages; +// @property(nonatomic) NSInteger currentPage; + +// @property(nonatomic) BOOL hidesForSinglePage; + +// @property(nonatomic) BOOL defersCurrentPageDisplay; +// - (void)updateCurrentPageDisplay; + +// - (CGSize)sizeForNumberOfPages:(NSInteger)pageCount; + +// @property(nullable, nonatomic,strong) UIColor *pageIndicatorTintColor __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic,strong) UIColor *currentPageIndicatorTintColor __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIPageViewControllerNavigationOrientation; enum { + UIPageViewControllerNavigationOrientationHorizontal = 0, + UIPageViewControllerNavigationOrientationVertical = 1 +}; + +typedef NSInteger UIPageViewControllerSpineLocation; enum { + UIPageViewControllerSpineLocationNone = 0, + UIPageViewControllerSpineLocationMin = 1, + UIPageViewControllerSpineLocationMid = 2, + UIPageViewControllerSpineLocationMax = 3 +}; + +typedef NSInteger UIPageViewControllerNavigationDirection; enum { + UIPageViewControllerNavigationDirectionForward, + UIPageViewControllerNavigationDirectionReverse +}; + +typedef NSInteger UIPageViewControllerTransitionStyle; enum { + UIPageViewControllerTransitionStylePageCurl = 0, + UIPageViewControllerTransitionStyleScroll = 1 +}; + +typedef NSString * UIPageViewControllerOptionsKey __attribute__((swift_wrapper(enum))); + + + + +extern "C" __attribute__((visibility ("default"))) UIPageViewControllerOptionsKey const UIPageViewControllerOptionSpineLocationKey; + + + + +extern "C" __attribute__((visibility ("default"))) UIPageViewControllerOptionsKey const UIPageViewControllerOptionInterPageSpacingKey __attribute__((availability(ios,introduced=6.0))); + +// @protocol UIPageViewControllerDelegate, UIPageViewControllerDataSource; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) +#ifndef _REWRITER_typedef_UIPageViewController +#define _REWRITER_typedef_UIPageViewController +typedef struct objc_object UIPageViewController; +typedef struct {} _objc_exc_UIPageViewController; +#endif + +struct UIPageViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)initWithTransitionStyle:(UIPageViewControllerTransitionStyle)style navigationOrientation:(UIPageViewControllerNavigationOrientation)navigationOrientation options:(nullable NSDictionary *)options __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nullable, nonatomic, weak) id delegate; +// @property (nullable, nonatomic, weak) id dataSource; +// @property (nonatomic, readonly) UIPageViewControllerTransitionStyle transitionStyle; +// @property (nonatomic, readonly) UIPageViewControllerNavigationOrientation navigationOrientation; +// @property (nonatomic, readonly) UIPageViewControllerSpineLocation spineLocation; + + + +// @property (nonatomic, getter=isDoubleSided) BOOL doubleSided; + + + + +// @property(nonatomic, readonly) NSArray<__kindof UIGestureRecognizer *> *gestureRecognizers; +// @property (nullable, nonatomic, readonly) NSArray<__kindof UIViewController *> *viewControllers; + + + +// - (void)setViewControllers:(nullable NSArray *)viewControllers direction:(UIPageViewControllerNavigationDirection)direction animated:(BOOL)animated completion:(void (^ _Nullable)(BOOL finished))completion; + +/* @end */ + + +// @protocol UIPageViewControllerDelegate + +/* @optional */ + + +// - (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers __attribute__((availability(ios,introduced=6.0))); + + +// - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed; + + + +// - (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation __attribute__((availability(tvos,unavailable))); + +// - (UIInterfaceOrientationMask)pageViewControllerSupportedInterfaceOrientations:(UIPageViewController *)pageViewController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// - (UIInterfaceOrientation)pageViewControllerPreferredInterfaceOrientationForPresentation:(UIPageViewController *)pageViewController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @protocol UIPageViewControllerDataSource + +/* @required */ + + + + +// - (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController; +// - (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController; + +/* @optional */ + + + +// - (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController __attribute__((availability(ios,introduced=6.0))); +// - (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController __attribute__((availability(ios,introduced=6.0))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSString * UIPasteboardName __attribute__((swift_wrapper(struct))); + +extern "C" __attribute__((visibility ("default"))) UIPasteboardName const UIPasteboardNameGeneral __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIPasteboardNameFind __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=3.0,deprecated=10.0,message="The Find pasteboard is no longer available."))); + +// @class UIColor; +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UIPasteboard +#define _REWRITER_typedef_UIPasteboard +typedef struct objc_object UIPasteboard; +typedef struct {} _objc_exc_UIPasteboard; +#endif + +struct UIPasteboard_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property(class, nonatomic, readonly) UIPasteboard *generalPasteboard; + +// + (nullable UIPasteboard *)pasteboardWithName:(UIPasteboardName)pasteboardName create:(BOOL)create; +// + (UIPasteboard *)pasteboardWithUniqueName; + +// @property(readonly,nonatomic) UIPasteboardName name; + +// + (void)removePasteboardWithName:(UIPasteboardName)pasteboardName; + +// @property(readonly,getter=isPersistent,nonatomic) BOOL persistent; +// - (void)setPersistent:(BOOL)persistent __attribute__((availability(ios,introduced=3.0,deprecated=10.0,message="Do not set persistence on pasteboards. This property is set automatically."))); +// @property(readonly,nonatomic) NSInteger changeCount; + + + +// @property (nonatomic, copy) NSArray<__kindof NSItemProvider *> *itemProviders __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// - (void)setItemProviders:(NSArray *)itemProviders localOnly:(BOOL)localOnly expirationDate:(NSDate * _Nullable)expirationDate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (void)setObjects:(NSArray> *)objects __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)setObjects:(NSArray> *)objects localOnly:(BOOL)localOnly expirationDate:(NSDate * _Nullable)expirationDate __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// @property(nonatomic, readonly) NSArray * pasteboardTypes; +// - (BOOL)containsPasteboardTypes:(NSArray *)pasteboardTypes; +// - (nullable NSData *)dataForPasteboardType:(NSString *)pasteboardType; + +// - (nullable id)valueForPasteboardType:(NSString *)pasteboardType; + +// - (void)setValue:(id)value forPasteboardType:(NSString *)pasteboardType; +// - (void)setData:(NSData *)data forPasteboardType:(NSString *)pasteboardType; + + + +// @property(readonly,nonatomic) NSInteger numberOfItems; +// - (nullable NSArray *> *)pasteboardTypesForItemSet:(nullable NSIndexSet*)itemSet; + +// - (BOOL)containsPasteboardTypes:(NSArray *)pasteboardTypes inItemSet:(nullable NSIndexSet *)itemSet; +// - (nullable NSIndexSet *)itemSetWithPasteboardTypes:(NSArray *)pasteboardTypes; +// - (nullable NSArray *)valuesForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet; +// - (nullable NSArray *)dataForPasteboardType:(NSString *)pasteboardType inItemSet:(nullable NSIndexSet *)itemSet; + + + +// @property(nonatomic,copy) NSArray *> *items; +// - (void)addItems:(NSArray *> *)items; + +typedef NSString * UIPasteboardOption __attribute__((swift_wrapper(enum))) __attribute__((availability(ios,introduced=10.0))); + +extern "C" __attribute__((visibility ("default"))) UIPasteboardOption const UIPasteboardOptionExpirationDate __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))) __attribute__((swift_name("UIPasteboardOption.expirationDate"))); +extern "C" __attribute__((visibility ("default"))) UIPasteboardOption const UIPasteboardOptionLocalOnly __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))) __attribute__((swift_name("UIPasteboardOption.localOnly"))); + +// - (void)setItems:(NSArray *> *)items options:(NSDictionary *)options __attribute__((availability(ios,introduced=10.0))); + +// @property(nullable,nonatomic,copy) NSString *string __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property(nullable,nonatomic,copy) NSArray *strings __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property(nullable,nonatomic,copy) NSURL *URL __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property(nullable,nonatomic,copy) NSArray *URLs __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property(nullable,nonatomic,copy) UIImage *image __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property(nullable,nonatomic,copy) NSArray *images __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +// @property(nullable,nonatomic,copy) UIColor *color __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +// @property(nullable,nonatomic,copy) NSArray *colors __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @property (nonatomic, readonly) BOOL hasStrings __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, readonly) BOOL hasURLs __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, readonly) BOOL hasImages __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))); +// @property (nonatomic, readonly) BOOL hasColors __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIPasteboardChangedNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIPasteboardChangedTypesAddedKey __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIPasteboardChangedTypesRemovedKey __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIPasteboardRemovedNotification __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) NSArray *UIPasteboardTypeListString __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSArray *UIPasteboardTypeListURL __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSArray *UIPasteboardTypeListImage __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSArray *UIPasteboardTypeListColor __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) NSString * const UIPasteboardTypeAutomatic __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(ios,introduced=10.0))); +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPinchGestureRecognizer +#define _REWRITER_typedef_UIPinchGestureRecognizer +typedef struct objc_object UIPinchGestureRecognizer; +typedef struct {} _objc_exc_UIPinchGestureRecognizer; +#endif + +struct UIPinchGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property (nonatomic) CGFloat scale; +// @property (nonatomic,readonly) CGFloat velocity; + +/* @end */ + +#pragma clang assume_nonnull end +typedef NSUInteger UIPopoverArrowDirection; enum { + UIPopoverArrowDirectionUp = 1UL << 0, + UIPopoverArrowDirectionDown = 1UL << 1, + UIPopoverArrowDirectionLeft = 1UL << 2, + UIPopoverArrowDirectionRight = 1UL << 3, + UIPopoverArrowDirectionAny = UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown | UIPopoverArrowDirectionLeft | UIPopoverArrowDirectionRight, + UIPopoverArrowDirectionUnknown = (9223372036854775807L *2UL+1UL) +}; + +// @interface UIViewController (UIPopoverController) + + + +// @property (nonatomic,readwrite,getter=isModalInPopover) BOOL modalInPopover __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="modalInPresentation"))); + + + +// @property (nonatomic,readwrite) CGSize contentSizeForViewInPopover __attribute__((availability(ios,introduced=3.2,deprecated=7.0,replacement="preferredContentSize."))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +#pragma clang assume_nonnull begin + +// @class UIBarButtonItem; +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +// @protocol UIPopoverControllerDelegate; + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message="UIPopoverController is deprecated. Popovers are now implemented as UIViewController presentations. Use a modal presentation style of UIModalPresentationPopover and UIPopoverPresentationController."))) + +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + +struct UIPopoverController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithContentViewController:(UIViewController *)viewController; + +// @property (nullable, nonatomic, weak) id delegate; + + + +// @property (nonatomic, strong) UIViewController *contentViewController; +// - (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated; + + + +// @property (nonatomic) CGSize popoverContentSize; +// - (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated; + + + +// @property (nonatomic, readonly, getter=isPopoverVisible) BOOL popoverVisible; + + + +// @property (nonatomic, readonly) UIPopoverArrowDirection popoverArrowDirection; + + + +// @property (nullable, nonatomic, copy) NSArray<__kindof UIView *> *passthroughViews; + + + +// - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated; + + + +// - (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated; + + + +// - (void)dismissPopoverAnimated:(BOOL)animated; + + + +// @property (nullable, nonatomic, copy) UIColor *backgroundColor __attribute__((availability(ios,introduced=7.0))); + + + +// @property (nonatomic, readwrite) UIEdgeInsets popoverLayoutMargins __attribute__((availability(ios,introduced=5.0))); + + + +// @property (nullable, nonatomic, readwrite, strong) Class popoverBackgroundViewClass __attribute__((availability(ios,introduced=5.0))); + +/* @end */ + + +// @protocol UIPopoverControllerDelegate +/* @optional */ + + + +// - (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message=""))); + + + +// - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message=""))); + + + +// - (void)popoverController:(UIPopoverController *)popoverController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView * _Nonnull * _Nonnull)view __attribute__((availability(ios,introduced=7.0,deprecated=9.0,message=""))); + +/* @end */ + +#pragma clang assume_nonnull end +// @protocol UIPopoverBackgroundViewMethods + + +// + (CGFloat)arrowBase; + + + +// + (UIEdgeInsets)contentViewInsets; + +// + (CGFloat)arrowHeight; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) + +#ifndef _REWRITER_typedef_UIPopoverBackgroundView +#define _REWRITER_typedef_UIPopoverBackgroundView +typedef struct objc_object UIPopoverBackgroundView; +typedef struct {} _objc_exc_UIPopoverBackgroundView; +#endif + +struct UIPopoverBackgroundView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + + + + + +// @property (nonatomic, readwrite) CGFloat arrowOffset; + + + +// @property (nonatomic, readwrite) UIPopoverArrowDirection arrowDirection; + + + +@property(class, nonatomic, readonly) BOOL wantsDefaultContentAppearance __attribute__((availability(ios,introduced=6.0,deprecated=13.0,message="No longer supported"))); + +/* @end */ + +// @class UIGestureRecognizer; +#ifndef _REWRITER_typedef_UIGestureRecognizer +#define _REWRITER_typedef_UIGestureRecognizer +typedef struct objc_object UIGestureRecognizer; +typedef struct {} _objc_exc_UIGestureRecognizer; +#endif + +// @class UIResponder; +#ifndef _REWRITER_typedef_UIResponder +#define _REWRITER_typedef_UIResponder +typedef struct objc_object UIResponder; +typedef struct {} _objc_exc_UIResponder; +#endif + +// @class UIWindow; +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + + +__attribute__((availability(ios,introduced=9.0))) typedef NSInteger UIPressPhase; enum { + UIPressPhaseBegan, + UIPressPhaseChanged, + UIPressPhaseStationary, + UIPressPhaseEnded, + UIPressPhaseCancelled, +}; + +__attribute__((availability(ios,introduced=9.0))) typedef NSInteger UIPressType; enum { + UIPressTypeUpArrow, + UIPressTypeDownArrow, + UIPressTypeLeftArrow, + UIPressTypeRightArrow, + + UIPressTypeSelect, + UIPressTypeMenu, + UIPressTypePlayPause, +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIPress +#define _REWRITER_typedef_UIPress +typedef struct objc_object UIPress; +typedef struct {} _objc_exc_UIPress; +#endif + +struct UIPress_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) NSTimeInterval timestamp; +// @property (nonatomic, readonly) UIPressPhase phase; +// @property (nonatomic, readonly) UIPressType type; + +// @property (nullable, nonatomic, readonly, strong) UIWindow *window; +// @property (nullable, nonatomic, readonly, strong) UIResponder *responder; +// @property (nullable, nonatomic, readonly, copy) NSArray *gestureRecognizers; + + +// @property (nonatomic, readonly) CGFloat force; + + + +// @property (nonatomic, nullable, readonly) UIKey *key; + +/* @end */ + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIPressesEvent +#define _REWRITER_typedef_UIPressesEvent +typedef struct objc_object UIPressesEvent; +typedef struct {} _objc_exc_UIPressesEvent; +#endif + +struct UIPressesEvent_IMPL { + struct UIEvent_IMPL UIEvent_IVARS; +}; + + +// @property(nonatomic, readonly) NSSet *allPresses; +// - (NSSet *)pressesForGestureRecognizer:(UIGestureRecognizer *)gesture; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrinter +#define _REWRITER_typedef_UIPrinter +typedef struct objc_object UIPrinter; +typedef struct {} _objc_exc_UIPrinter; +#endif + +struct UIPrinter_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +typedef NSInteger UIPrinterJobTypes; enum { + UIPrinterJobTypeUnknown = 0, + UIPrinterJobTypeDocument = 1 << 0, + UIPrinterJobTypeEnvelope = 1 << 1, + UIPrinterJobTypeLabel = 1 << 2, + UIPrinterJobTypePhoto = 1 << 3, + UIPrinterJobTypeReceipt = 1 << 4, + UIPrinterJobTypeRoll = 1 << 5, + UIPrinterJobTypeLargeFormat = 1 << 6, + UIPrinterJobTypePostcard = 1 << 7 +} __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))); +// + (UIPrinter *)printerWithURL:(NSURL *)url; + + + + + + + +// @property (readonly,copy) NSURL *URL; + + + + + +// @property (readonly,copy) NSString *displayName; +// @property (nullable,readonly,copy) NSString *displayLocation; +// @property (readonly) UIPrinterJobTypes supportedJobTypes; +// @property (nullable, readonly,copy) NSString *makeAndModel; +// @property (readonly) BOOL supportsColor; +// @property (readonly) BOOL supportsDuplex; +// - (void)contactPrinter:(void(^ _Nullable)(BOOL available))completionHandler; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPrinterPickerController; +#ifndef _REWRITER_typedef_UIPrinterPickerController +#define _REWRITER_typedef_UIPrinterPickerController +typedef struct objc_object UIPrinterPickerController; +typedef struct {} _objc_exc_UIPrinterPickerController; +#endif + +#ifndef _REWRITER_typedef_UIPrinter +#define _REWRITER_typedef_UIPrinter +typedef struct objc_object UIPrinter; +typedef struct {} _objc_exc_UIPrinter; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + + +typedef void (*UIPrinterPickerCompletionHandler)(UIPrinterPickerController *printerPickerController, BOOL userDidSelect, NSError * _Nullable error); + +__attribute__((availability(tvos,unavailable))) +// @protocol UIPrinterPickerControllerDelegate +/* @optional */ + +// - (nullable UIViewController *)printerPickerControllerParentViewController:(UIPrinterPickerController *)printerPickerController; +// - (BOOL)printerPickerController:(UIPrinterPickerController *)printerPickerController shouldShowPrinter:(UIPrinter *)printer; + +// - (void)printerPickerControllerWillPresent:(UIPrinterPickerController *)printerPickerController; +// - (void)printerPickerControllerDidPresent:(UIPrinterPickerController *)printerPickerController; +// - (void)printerPickerControllerWillDismiss:(UIPrinterPickerController *)printerPickerController; +// - (void)printerPickerControllerDidDismiss:(UIPrinterPickerController *)printerPickerController; + +// - (void)printerPickerControllerDidSelectPrinter:(UIPrinterPickerController *)printerPickerController; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrinterPickerController +#define _REWRITER_typedef_UIPrinterPickerController +typedef struct objc_object UIPrinterPickerController; +typedef struct {} _objc_exc_UIPrinterPickerController; +#endif + +struct UIPrinterPickerController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (UIPrinterPickerController *)printerPickerControllerWithInitiallySelectedPrinter:(nullable UIPrinter *)printer; + + + + + +// @property(nullable,nonatomic,readonly) UIPrinter *selectedPrinter; + +// @property(nullable,nonatomic,weak) id delegate; + +// - (BOOL)presentAnimated:(BOOL)animated completionHandler:(nullable UIPrinterPickerCompletionHandler)completion; +// - (BOOL)presentFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated completionHandler:(nullable UIPrinterPickerCompletionHandler)completion; +// - (BOOL)presentFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated completionHandler:(nullable UIPrinterPickerCompletionHandler)completion; +// - (void)dismissAnimated:(BOOL)animated; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) NSErrorDomain const UIPrintErrorDomain __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIPrintErrorCode; enum { + UIPrintingNotAvailableError = 1, + UIPrintNoContentError, + UIPrintUnknownImageFormatError, + UIPrintJobFailedError, +} __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPrintPageRenderer; +#ifndef _REWRITER_typedef_UIPrintPageRenderer +#define _REWRITER_typedef_UIPrintPageRenderer +typedef struct objc_object UIPrintPageRenderer; +typedef struct {} _objc_exc_UIPrintPageRenderer; +#endif + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrintFormatter +#define _REWRITER_typedef_UIPrintFormatter +typedef struct objc_object UIPrintFormatter; +typedef struct {} _objc_exc_UIPrintFormatter; +#endif + +struct UIPrintFormatter_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nullable,nonatomic,readonly,weak) UIPrintPageRenderer *printPageRenderer __attribute__((availability(tvos,unavailable))); +// - (void)removeFromPrintPageRenderer __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic) CGFloat maximumContentHeight __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) CGFloat maximumContentWidth __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) UIEdgeInsets contentInsets __attribute__((availability(ios,introduced=4.2,deprecated=10.0,replacement="perPageContentInsets"))) __attribute__((availability(tvos,unavailable))); + + +// @property(nonatomic) UIEdgeInsets perPageContentInsets __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic) NSInteger startPage __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) NSInteger pageCount __attribute__((availability(tvos,unavailable))); + +// - (CGRect)rectForPageAtIndex:(NSInteger)pageIndex __attribute__((availability(tvos,unavailable))); +// - (void)drawInRect:(CGRect)rect forPageAtIndex:(NSInteger)pageIndex __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UISimpleTextPrintFormatter +#define _REWRITER_typedef_UISimpleTextPrintFormatter +typedef struct objc_object UISimpleTextPrintFormatter; +typedef struct {} _objc_exc_UISimpleTextPrintFormatter; +#endif + +struct UISimpleTextPrintFormatter_IMPL { + struct UIPrintFormatter_IMPL UIPrintFormatter_IVARS; +}; + + +// - (instancetype)initWithText:(NSString *)text; +// - (instancetype)initWithAttributedText:(NSAttributedString *)attributedText __attribute__((availability(ios,introduced=7.0))); + +// @property(nullable,nonatomic,copy) NSString *text; +// @property(nullable,nonatomic,copy) NSAttributedString *attributedText __attribute__((availability(ios,introduced=7.0))); +// @property(nullable,nonatomic,strong) UIFont *font; +// @property(nullable,nonatomic,strong) UIColor *color; +// @property(nonatomic) NSTextAlignment textAlignment; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIMarkupTextPrintFormatter +#define _REWRITER_typedef_UIMarkupTextPrintFormatter +typedef struct objc_object UIMarkupTextPrintFormatter; +typedef struct {} _objc_exc_UIMarkupTextPrintFormatter; +#endif + +struct UIMarkupTextPrintFormatter_IMPL { + struct UIPrintFormatter_IMPL UIPrintFormatter_IVARS; +}; + + +// - (instancetype)initWithMarkupText:(NSString *)markupText; +// @property(nullable,nonatomic,copy) NSString *markupText; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIViewPrintFormatter +#define _REWRITER_typedef_UIViewPrintFormatter +typedef struct objc_object UIViewPrintFormatter; +typedef struct {} _objc_exc_UIViewPrintFormatter; +#endif + +struct UIViewPrintFormatter_IMPL { + struct UIPrintFormatter_IMPL UIPrintFormatter_IVARS; +}; + + +// @property(nonatomic,readonly) UIView *view; + +/* @end */ + + + + +// @interface UIView(UIPrintFormatter) + +// - (UIViewPrintFormatter *)viewPrintFormatter __attribute__((availability(tvos,unavailable))); +// - (void)drawRect:(CGRect)rect forViewPrintFormatter:(UIViewPrintFormatter *)formatter __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIPrintInfoOutputType; enum { + UIPrintInfoOutputGeneral, + UIPrintInfoOutputPhoto, + UIPrintInfoOutputGrayscale, + UIPrintInfoOutputPhotoGrayscale __attribute__((availability(ios,introduced=7.0))), + } __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIPrintInfoOrientation; enum { + UIPrintInfoOrientationPortrait, + UIPrintInfoOrientationLandscape, +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIPrintInfoDuplex; enum { + UIPrintInfoDuplexNone, + UIPrintInfoDuplexLongEdge, + UIPrintInfoDuplexShortEdge, +} __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrintInfo +#define _REWRITER_typedef_UIPrintInfo +typedef struct objc_object UIPrintInfo; +typedef struct {} _objc_exc_UIPrintInfo; +#endif + +struct UIPrintInfo_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// + (UIPrintInfo *)printInfo; +// + (UIPrintInfo *)printInfoWithDictionary:(nullable NSDictionary *)dictionary; + +// @property(nullable,nonatomic,copy) NSString *printerID; +// @property(nonatomic,copy) NSString *jobName; +// @property(nonatomic) UIPrintInfoOutputType outputType; +// @property(nonatomic) UIPrintInfoOrientation orientation; +// @property(nonatomic) UIPrintInfoDuplex duplex; +// @property(nonatomic,readonly) NSDictionary *dictionaryRepresentation; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPrintInteractionController; +#ifndef _REWRITER_typedef_UIPrintInteractionController +#define _REWRITER_typedef_UIPrintInteractionController +typedef struct objc_object UIPrintInteractionController; +typedef struct {} _objc_exc_UIPrintInteractionController; +#endif + +#ifndef _REWRITER_typedef_UIPrintInfo +#define _REWRITER_typedef_UIPrintInfo +typedef struct objc_object UIPrintInfo; +typedef struct {} _objc_exc_UIPrintInfo; +#endif + +#ifndef _REWRITER_typedef_UIPrintPaper +#define _REWRITER_typedef_UIPrintPaper +typedef struct objc_object UIPrintPaper; +typedef struct {} _objc_exc_UIPrintPaper; +#endif + +#ifndef _REWRITER_typedef_UIPrintPageRenderer +#define _REWRITER_typedef_UIPrintPageRenderer +typedef struct objc_object UIPrintPageRenderer; +typedef struct {} _objc_exc_UIPrintPageRenderer; +#endif + +#ifndef _REWRITER_typedef_UIPrintFormatter +#define _REWRITER_typedef_UIPrintFormatter +typedef struct objc_object UIPrintFormatter; +typedef struct {} _objc_exc_UIPrintFormatter; +#endif + +#ifndef _REWRITER_typedef_UIPrinter +#define _REWRITER_typedef_UIPrinter +typedef struct objc_object UIPrinter; +typedef struct {} _objc_exc_UIPrinter; +#endif + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + + +typedef void (*UIPrintInteractionCompletionHandler)(UIPrintInteractionController *printInteractionController, BOOL completed, NSError * _Nullable error) __attribute__((availability(tvos,unavailable))); + + +__attribute__((availability(ios,introduced=9.0))) typedef NSInteger UIPrinterCutterBehavior; enum { + UIPrinterCutterBehaviorNoCut, + UIPrinterCutterBehaviorPrinterDefault, + UIPrinterCutterBehaviorCutAfterEachPage, + UIPrinterCutterBehaviorCutAfterEachCopy, + UIPrinterCutterBehaviorCutAfterEachJob, +} __attribute__((availability(tvos,unavailable))); + +// @protocol UIPrintInteractionControllerDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrintInteractionController +#define _REWRITER_typedef_UIPrintInteractionController +typedef struct objc_object UIPrintInteractionController; +typedef struct {} _objc_exc_UIPrintInteractionController; +#endif + +struct UIPrintInteractionController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property(class, nonatomic, readonly, getter=isPrintingAvailable) BOOL printingAvailable; + +@property(class, nonatomic, readonly) NSSet *printableUTIs; +// + (BOOL)canPrintURL:(NSURL *)url; +// + (BOOL)canPrintData:(NSData *)data; + +@property(class, nonatomic, readonly) UIPrintInteractionController *sharedPrintController; + +// @property(nullable,nonatomic,strong) UIPrintInfo *printInfo; +// @property(nullable,nonatomic,weak) id delegate; +// @property(nonatomic) BOOL showsPageRange __attribute__((availability(ios,introduced=4.2,deprecated=10.0,message="Pages can be removed from the print preview, so page range is always shown."))); +// @property(nonatomic) BOOL showsNumberOfCopies __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic) BOOL showsPaperSelectionForLoadedPapers __attribute__((availability(ios,introduced=8.0))); + +// @property(nullable, nonatomic,readonly) UIPrintPaper *printPaper; + +// @property(nullable,nonatomic,strong) UIPrintPageRenderer *printPageRenderer; +// @property(nullable,nonatomic,strong) UIPrintFormatter *printFormatter; +// @property(nullable,nonatomic,copy) id printingItem; +// @property(nullable,nonatomic,copy) NSArray *printingItems; + +// - (BOOL)presentAnimated:(BOOL)animated completionHandler:(nullable UIPrintInteractionCompletionHandler)completion; +// - (BOOL)presentFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated completionHandler:(nullable UIPrintInteractionCompletionHandler)completion; +// - (BOOL)presentFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated completionHandler:(nullable UIPrintInteractionCompletionHandler)completion; + + + + + + +// - (BOOL)printToPrinter:(UIPrinter *)printer completionHandler:(nullable UIPrintInteractionCompletionHandler)completion; + +// - (void)dismissAnimated:(BOOL)animated; + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) // @protocol UIPrintInteractionControllerDelegate +/* @optional */ + +// - ( UIViewController * _Nullable )printInteractionControllerParentViewController:(UIPrintInteractionController *)printInteractionController; + +// - (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray *)paperList; + +// - (void)printInteractionControllerWillPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController; +// - (void)printInteractionControllerDidPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController; +// - (void)printInteractionControllerWillDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController; +// - (void)printInteractionControllerDidDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController; + +// - (void)printInteractionControllerWillStartJob:(UIPrintInteractionController *)printInteractionController; +// - (void)printInteractionControllerDidFinishJob:(UIPrintInteractionController *)printInteractionController; + +// - (CGFloat)printInteractionController:(UIPrintInteractionController *)printInteractionController cutLengthForPaper:(UIPrintPaper *)paper __attribute__((availability(ios,introduced=7.0))); +// - (UIPrinterCutterBehavior) printInteractionController:(UIPrintInteractionController *)printInteractionController chooseCutterBehavior:(NSArray *)availableBehaviors __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPrintFormatter; +#ifndef _REWRITER_typedef_UIPrintFormatter +#define _REWRITER_typedef_UIPrintFormatter +typedef struct objc_object UIPrintFormatter; +typedef struct {} _objc_exc_UIPrintFormatter; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrintPageRenderer +#define _REWRITER_typedef_UIPrintPageRenderer +typedef struct objc_object UIPrintPageRenderer; +typedef struct {} _objc_exc_UIPrintPageRenderer; +#endif + +struct UIPrintPageRenderer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic) CGFloat headerHeight; +// @property(nonatomic) CGFloat footerHeight; + +// @property(nonatomic,readonly) CGRect paperRect; +// @property(nonatomic,readonly) CGRect printableRect; + +// @property(nonatomic,readonly) NSInteger numberOfPages; + +// @property(nullable,atomic,copy) NSArray *printFormatters; +// - (nullable NSArray *)printFormattersForPageAtIndex:(NSInteger)pageIndex; +// - (void)addPrintFormatter:(UIPrintFormatter *)formatter startingAtPageAtIndex:(NSInteger)pageIndex; + +// - (void)prepareForDrawingPages:(NSRange)range; + +// - (void)drawPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)printableRect; +// - (void)drawPrintFormatter:(UIPrintFormatter *)printFormatter forPageAtIndex:(NSInteger)pageIndex; +// - (void)drawHeaderForPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)headerRect; +// - (void)drawContentForPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)contentRect; +// - (void)drawFooterForPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)footerRect; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=4.2)))__attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPrintPaper +#define _REWRITER_typedef_UIPrintPaper +typedef struct objc_object UIPrintPaper; +typedef struct {} _objc_exc_UIPrintPaper; +#endif + +struct UIPrintPaper_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (UIPrintPaper *)bestPaperForPageSize:(CGSize)contentSize withPapersFromArray:(NSArray *)paperList; + +// @property(readonly) CGSize paperSize; +// @property(readonly) CGRect printableRect; + +/* @end */ + + + + +// @interface UIPrintPaper(Deprecated_Nonfunctional) +// - (CGRect)printRect __attribute__((availability(tvos,unavailable))) ; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIImageView; +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_CAGradientLayer +#define _REWRITER_typedef_CAGradientLayer +typedef struct objc_object CAGradientLayer; +typedef struct {} _objc_exc_CAGradientLayer; +#endif + + +typedef NSInteger UIProgressViewStyle; enum { + UIProgressViewStyleDefault, + UIProgressViewStyleBar __attribute__((availability(tvos,unavailable))), +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIProgressView +#define _REWRITER_typedef_UIProgressView +typedef struct objc_object UIProgressView; +typedef struct {} _objc_exc_UIProgressView; +#endif + +struct UIProgressView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)initWithProgressViewStyle:(UIProgressViewStyle)style; + +// @property(nonatomic) UIProgressViewStyle progressViewStyle; +// @property(nonatomic) float progress; +// @property(nonatomic, strong, nullable) UIColor* progressTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic, strong, nullable) UIColor* trackTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic, strong, nullable) UIImage* progressImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic, strong, nullable) UIImage* trackImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +// - (void)setProgress:(float)progress animated:(BOOL)animated __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic, strong, nullable) NSProgress *observedProgress __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIReferenceLibraryViewController +#define _REWRITER_typedef_UIReferenceLibraryViewController +typedef struct objc_object UIReferenceLibraryViewController; +typedef struct {} _objc_exc_UIReferenceLibraryViewController; +#endif + +struct UIReferenceLibraryViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + + +// + (BOOL)dictionaryHasDefinitionForTerm:(NSString *)term; + + + +// - (instancetype)initWithTerm:(NSString *)term __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIRotationGestureRecognizer +#define _REWRITER_typedef_UIRotationGestureRecognizer +typedef struct objc_object UIRotationGestureRecognizer; +typedef struct {} _objc_exc_UIRotationGestureRecognizer; +#endif + +struct UIRotationGestureRecognizer_IMPL { + struct UIGestureRecognizer_IMPL UIGestureRecognizer_IVARS; +}; + + +// @property (nonatomic) CGFloat rotation; +// @property (nonatomic,readonly) CGFloat velocity; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIScreenMode; +#ifndef _REWRITER_typedef_UIScreenMode +#define _REWRITER_typedef_UIScreenMode +typedef struct objc_object UIScreenMode; +typedef struct {} _objc_exc_UIScreenMode; +#endif + +#ifndef _REWRITER_typedef_CADisplayLink +#define _REWRITER_typedef_CADisplayLink +typedef struct objc_object CADisplayLink; +typedef struct {} _objc_exc_CADisplayLink; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIScreenDidConnectNotification __attribute__((availability(ios,introduced=3.2))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIScreenDidDisconnectNotification __attribute__((availability(ios,introduced=3.2))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIScreenModeDidChangeNotification __attribute__((availability(ios,introduced=3.2))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIScreenBrightnessDidChangeNotification __attribute__((availability(ios,introduced=5.0))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIScreenCapturedDidChangeNotification __attribute__((availability(ios,introduced=11.0))); + + +typedef NSInteger UIScreenOverscanCompensation; enum { + UIScreenOverscanCompensationScale, + UIScreenOverscanCompensationInsetBounds, + UIScreenOverscanCompensationNone __attribute__((availability(ios,introduced=9.0))), + + UIScreenOverscanCompensationInsetApplicationFrame __attribute__((availability(ios,introduced=5_0,deprecated=9_0,message="" "Use UIScreenOverscanCompensationNone"))) = 2, +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIScreen +#define _REWRITER_typedef_UIScreen +typedef struct objc_object UIScreen; +typedef struct {} _objc_exc_UIScreen; +#endif + +struct UIScreen_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property(class, nonatomic, readonly) NSArray *screens __attribute__((availability(ios,introduced=3.2))); +@property(class, nonatomic, readonly) UIScreen *mainScreen; + +// @property(nonatomic,readonly) CGRect bounds; +// @property(nonatomic,readonly) CGFloat scale __attribute__((availability(ios,introduced=4.0))); + +// @property(nonatomic,readonly,copy) NSArray *availableModes __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); +// @property(nullable, nonatomic,readonly,strong) UIScreenMode *preferredMode __attribute__((availability(ios,introduced=4.3))) __attribute__((availability(tvos,unavailable))); + + + +// @property(nullable,nonatomic,strong) UIScreenMode *currentMode __attribute__((availability(ios,introduced=3.2))); + +// @property(nonatomic) UIScreenOverscanCompensation overscanCompensation __attribute__((availability(ios,introduced=5.0))); + +// @property(nonatomic,readonly) UIEdgeInsets overscanCompensationInsets __attribute__((availability(ios,introduced=9.0))); + +// @property(nullable, nonatomic,readonly,strong) UIScreen *mirroredScreen __attribute__((availability(ios,introduced=4.3))); +// @property(nonatomic,readonly,getter=isCaptured) BOOL captured __attribute__((availability(ios,introduced=11.0))); + +// @property(nonatomic) CGFloat brightness __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic) BOOL wantsSoftwareDimming __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + +// @property (readonly) id coordinateSpace __attribute__((availability(ios,introduced=8.0))); +// @property (readonly) id fixedCoordinateSpace __attribute__((availability(ios,introduced=8.0))); + +// @property(nonatomic,readonly) CGRect nativeBounds __attribute__((availability(ios,introduced=8.0))); +// @property(nonatomic,readonly) CGFloat nativeScale __attribute__((availability(ios,introduced=8.0))); + +// - (nullable CADisplayLink *)displayLinkWithTarget:(id)target selector:(SEL)sel __attribute__((availability(ios,introduced=4.0))); + +// @property (readonly) NSInteger maximumFramesPerSecond __attribute__((availability(ios,introduced=10.3))); + + + + + +// @property(nonatomic, readonly) CFTimeInterval calibratedLatency __attribute__((availability(ios,introduced=13.0))); + +// @property (nullable, nonatomic, weak, readonly) id focusedItem __attribute__((availability(ios,introduced=10.0))); +// @property (nullable, nonatomic, weak, readonly) UIView *focusedView __attribute__((availability(ios,introduced=9.0))); +// @property (readonly, nonatomic) BOOL supportsFocus __attribute__((availability(ios,introduced=9.0))); + +// @property(nonatomic,readonly) CGRect applicationFrame __attribute__((availability(ios,introduced=2.0,deprecated=9.0,replacement="bounds"))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @interface UIScreen (UISnapshotting) + +// - (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates __attribute__((availability(ios,introduced=7.0))); +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIScreenEdgePanGestureRecognizer +#define _REWRITER_typedef_UIScreenEdgePanGestureRecognizer +typedef struct objc_object UIScreenEdgePanGestureRecognizer; +typedef struct {} _objc_exc_UIScreenEdgePanGestureRecognizer; +#endif + +struct UIScreenEdgePanGestureRecognizer_IMPL { + struct UIPanGestureRecognizer_IMPL UIPanGestureRecognizer_IVARS; +}; + +// @property (readwrite, nonatomic, assign) UIRectEdge edges; +/* @end */ + +#pragma clang assume_nonnull end +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UIScreenMode +#define _REWRITER_typedef_UIScreenMode +typedef struct objc_object UIScreenMode; +typedef struct {} _objc_exc_UIScreenMode; +#endif + +struct UIScreenMode_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(readonly,nonatomic) CGSize size; +// @property(readonly,nonatomic) CGFloat pixelAspectRatio; + +/* @end */ + + +#pragma clang assume_nonnull begin + +typedef NSInteger UISearchBarIcon; enum { + UISearchBarIconSearch, + UISearchBarIconClear __attribute__((availability(tvos,unavailable))), + UISearchBarIconBookmark __attribute__((availability(tvos,unavailable))), + UISearchBarIconResultsList __attribute__((availability(tvos,unavailable))), +}; + +typedef NSUInteger UISearchBarStyle; enum { + UISearchBarStyleDefault, + UISearchBarStyleProminent, + UISearchBarStyleMinimal +} __attribute__((availability(ios,introduced=7.0))); + + +// @protocol UISearchBarDelegate; +// @class UITextField; +#ifndef _REWRITER_typedef_UITextField +#define _REWRITER_typedef_UITextField +typedef struct objc_object UITextField; +typedef struct {} _objc_exc_UITextField; +#endif + +#ifndef _REWRITER_typedef_UILabel +#define _REWRITER_typedef_UILabel +typedef struct objc_object UILabel; +typedef struct {} _objc_exc_UILabel; +#endif + +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UISearchTextField +#define _REWRITER_typedef_UISearchTextField +typedef struct objc_object UISearchTextField; +typedef struct {} _objc_exc_UISearchTextField; +#endif + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UISearchBar +#define _REWRITER_typedef_UISearchBar +typedef struct objc_object UISearchBar; +typedef struct {} _objc_exc_UISearchBar; +#endif + +struct UISearchBar_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)init __attribute__((availability(tvos,unavailable))); +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic) UIBarStyle barStyle __attribute__((availability(tvos,unavailable))); +// @property(nullable,nonatomic,weak) id delegate; +// @property(nullable,nonatomic,copy) NSString *text; +// @property(nullable,nonatomic,copy) NSString *prompt; +// @property(nullable,nonatomic,copy) NSString *placeholder; +// @property(nonatomic) BOOL showsBookmarkButton __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,readonly) UISearchTextField *searchTextField __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// @property(nonatomic) BOOL showsCancelButton __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic) BOOL showsSearchResultsButton __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic, getter=isSearchResultsButtonSelected) BOOL searchResultsButtonSelected __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); +// - (void)setShowsCancelButton:(BOOL)showsCancelButton animated:(BOOL)animated __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + + + + +// @property (nonatomic, readonly, strong) UITextInputAssistantItem *inputAssistantItem __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + + + + + +// @property(null_resettable, nonatomic,strong) UIColor *tintColor; +// @property(nullable, nonatomic,strong) UIColor *barTintColor __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property (nonatomic) UISearchBarStyle searchBarStyle __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic,assign,getter=isTranslucent) BOOL translucent __attribute__((availability(ios,introduced=3.0))); + +// @property(nullable, nonatomic,copy) NSArray *scopeButtonTitles __attribute__((availability(ios,introduced=3.0))); +// @property(nonatomic) NSInteger selectedScopeButtonIndex __attribute__((availability(ios,introduced=3.0))); + + + + + + +// @property(nonatomic) BOOL showsScopeBar __attribute__((availability(ios,introduced=3.0))); +// - (void)setShowsScopeBar:(BOOL)show animated:(BOOL)animate __attribute__((availability(ios,introduced=13.0))); + + + +// @property (nullable, nonatomic, readwrite, strong) UIView *inputAccessoryView; + + +// @property(nullable, nonatomic,strong) UIImage *backgroundImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic,strong) UIImage *scopeBarBackgroundImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + +// - (void)setSearchFieldBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)searchFieldBackgroundImageForState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +// - (void)setImage:(nullable UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)imageForSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + + +// - (void)setScopeBarButtonBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)scopeBarButtonBackgroundImageForState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setScopeBarButtonDividerImage:(nullable UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)scopeBarButtonDividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setScopeBarButtonTitleTextAttributes:(nullable NSDictionary *)attributes forState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable NSDictionary *)scopeBarButtonTitleTextAttributesForState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nonatomic) UIOffset searchFieldBackgroundPositionAdjustment __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nonatomic) UIOffset searchTextPositionAdjustment __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setPositionAdjustment:(UIOffset)adjustment forSearchBarIcon:(UISearchBarIcon)icon __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (UIOffset)positionAdjustmentForSearchBarIcon:(UISearchBarIcon)icon __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +/* @end */ + + +// @protocol UISearchBarDelegate + +/* @optional */ + +// - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar; +// - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar; +// - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar; +// - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar; +// - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText; +// - (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text __attribute__((availability(ios,introduced=3.0))); + +// - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar; +// - (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar __attribute__((availability(tvos,unavailable))); +// - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar __attribute__((availability(tvos,unavailable))); +// - (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); + +// - (void)searchBar:(UISearchBar *)searchBar selectedScopeButtonIndexDidChange:(NSInteger)selectedScope __attribute__((availability(ios,introduced=3.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UISearchController; +#ifndef _REWRITER_typedef_UISearchController +#define _REWRITER_typedef_UISearchController +typedef struct objc_object UISearchController; +typedef struct {} _objc_exc_UISearchController; +#endif + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9_1))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,introduced=9_0))) +#ifndef _REWRITER_typedef_UISearchContainerViewController +#define _REWRITER_typedef_UISearchContainerViewController +typedef struct objc_object UISearchContainerViewController; +typedef struct {} _objc_exc_UISearchContainerViewController; +#endif + +struct UISearchContainerViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + +// @property (nonatomic, strong, readonly) UISearchController *searchController; + +// - (instancetype)initWithSearchController:(UISearchController *)searchController; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +typedef NSString * UITransitionContextViewControllerKey __attribute__((swift_wrapper(enum))); +typedef NSString * UITransitionContextViewKey __attribute__((swift_wrapper(enum))); + +// @protocol UIViewControllerTransitionCoordinatorContext + + + + + +// @property(nonatomic, readonly, getter=isAnimated) BOOL animated; + + + +// @property(nonatomic, readonly) UIModalPresentationStyle presentationStyle; + + + + + +// @property(nonatomic, readonly) BOOL initiallyInteractive; +// @property(nonatomic,readonly) BOOL isInterruptible __attribute__((availability(ios,introduced=10.0))); + + + +// @property(nonatomic, readonly, getter=isInteractive) BOOL interactive; + + +// @property(nonatomic, readonly, getter=isCancelled) BOOL cancelled; + + +// @property(nonatomic, readonly) NSTimeInterval transitionDuration; + + + + +// @property(nonatomic, readonly) CGFloat percentComplete; +// @property(nonatomic, readonly) CGFloat completionVelocity; +// @property(nonatomic, readonly) UIViewAnimationCurve completionCurve; + + + + +// - (nullable __kindof UIViewController *)viewControllerForKey:(UITransitionContextViewControllerKey)key; + + + + +// - (nullable __kindof UIView *)viewForKey:(UITransitionContextViewKey)key __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic, readonly) UIView *containerView; + + +// @property(nonatomic, readonly) CGAffineTransform targetTransform __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + + + + + + + +// @protocol UIViewControllerTransitionCoordinator +#if 0 +- (BOOL)animateAlongsideTransition:(void (^ _Nullable)(id context))animation + completion:(void (^ _Nullable)(id context))completion; +#endif + + + + +#if 0 +- (BOOL)animateAlongsideTransitionInView:(nullable UIView *)view + animation:(void (^ _Nullable)(id context))animation + completion:(void (^ _Nullable)(id context))completion; +#endif + +// - (void)notifyWhenInteractionEndsUsingBlock: (void (^)(id context))handler __attribute__((availability(ios,introduced=7.0,deprecated=10.0,replacement="notifyWhenInteractionChangesUsingBlock"))); + + + + + +// - (void)notifyWhenInteractionChangesUsingBlock: (void (^)(id context))handler __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + + +// @interface UIViewController(UIViewControllerTransitionCoordinator) + + + + + + + +// @property(nonatomic, readonly, nullable) id transitionCoordinator __attribute__((availability(ios,introduced=7.0))); +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UIPresentationController; +#ifndef _REWRITER_typedef_UIPresentationController +#define _REWRITER_typedef_UIPresentationController +typedef struct objc_object UIPresentationController; +typedef struct {} _objc_exc_UIPresentationController; +#endif + + +// @protocol UIAdaptivePresentationControllerDelegate + +/* @optional */ + + +// - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller; + + +// - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=8.3))); + + +// - (nullable UIViewController *)presentationController:(UIPresentationController *)controller viewControllerForAdaptivePresentationStyle:(UIModalPresentationStyle)style; + + +// - (void)presentationController:(UIPresentationController *)presentationController willPresentWithAdaptiveStyle:(UIModalPresentationStyle)style transitionCoordinator:(nullable id )transitionCoordinator __attribute__((availability(ios,introduced=8.3))); + + + + +// - (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController __attribute__((availability(ios,introduced=13.0))); + + + + +// - (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController __attribute__((availability(ios,introduced=13.0))); + + + +// - (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController __attribute__((availability(ios,introduced=13.0))); + + + +// - (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)presentationController __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UIPresentationController +#define _REWRITER_typedef_UIPresentationController +typedef struct objc_object UIPresentationController; +typedef struct {} _objc_exc_UIPresentationController; +#endif + +struct UIPresentationController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic, strong, readonly) UIViewController *presentingViewController; +// @property(nonatomic, strong, readonly) UIViewController *presentedViewController; + +// @property(nonatomic, readonly) UIModalPresentationStyle presentationStyle; + + + +// @property(nullable, nonatomic, readonly, strong) UIView *containerView; + +// @property(nullable, nonatomic, weak) id delegate; + +// - (instancetype)initWithPresentedViewController:(UIViewController *)presentedViewController presentingViewController:(nullable UIViewController *)presentingViewController __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); + + + + +// @property(nonatomic, readonly) UIModalPresentationStyle adaptivePresentationStyle; +// - (UIModalPresentationStyle)adaptivePresentationStyleForTraitCollection:(UITraitCollection *)traitCollection __attribute__((availability(ios,introduced=8.3))); + +// - (void)containerViewWillLayoutSubviews; +// - (void)containerViewDidLayoutSubviews; + + + + +// @property(nonatomic, readonly, nullable) UIView *presentedView; + + + +// @property(nonatomic, readonly) CGRect frameOfPresentedViewInContainerView; + + + + +// @property(nonatomic, readonly) BOOL shouldPresentInFullscreen; + + + + +// @property(nonatomic, readonly) BOOL shouldRemovePresentersView; + +// - (void)presentationTransitionWillBegin; +// - (void)presentationTransitionDidEnd:(BOOL)completed; +// - (void)dismissalTransitionWillBegin; +// - (void)dismissalTransitionDidEnd:(BOOL)completed; + + +// @property(nullable, nonatomic, copy) UITraitCollection *overrideTraitCollection; + +/* @end */ + +#pragma clang assume_nonnull end + +typedef NSInteger UITimingCurveType; enum { + UITimingCurveTypeBuiltin, + UITimingCurveTypeCubic, + UITimingCurveTypeSpring, + UITimingCurveTypeComposed, +} __attribute__((availability(ios,introduced=10.0))); + +// @class UICubicTimingParameters; +#ifndef _REWRITER_typedef_UICubicTimingParameters +#define _REWRITER_typedef_UICubicTimingParameters +typedef struct objc_object UICubicTimingParameters; +typedef struct {} _objc_exc_UICubicTimingParameters; +#endif + +#ifndef _REWRITER_typedef_UISpringTimingParameters +#define _REWRITER_typedef_UISpringTimingParameters +typedef struct objc_object UISpringTimingParameters; +typedef struct {} _objc_exc_UISpringTimingParameters; +#endif + + +#pragma clang assume_nonnull begin + +// @protocol UITimingCurveProvider + +// @property(nonatomic, readonly) UITimingCurveType timingCurveType; +// @property(nullable, nonatomic, readonly) UICubicTimingParameters *cubicTimingParameters; +// @property(nullable, nonatomic, readonly) UISpringTimingParameters *springTimingParameters; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UICubicTimingParameters +#define _REWRITER_typedef_UICubicTimingParameters +typedef struct objc_object UICubicTimingParameters; +typedef struct {} _objc_exc_UICubicTimingParameters; +#endif + +struct UICubicTimingParameters_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic, readonly) UIViewAnimationCurve animationCurve; +// @property(nonatomic, readonly) CGPoint controlPoint1; +// @property(nonatomic, readonly) CGPoint controlPoint2; + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)initWithAnimationCurve:(UIViewAnimationCurve)curve __attribute__((objc_designated_initializer)); +// - (instancetype)initWithControlPoint1:(CGPoint)point1 controlPoint2:(CGPoint)point2 __attribute__((objc_designated_initializer)); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UISpringTimingParameters +#define _REWRITER_typedef_UISpringTimingParameters +typedef struct objc_object UISpringTimingParameters; +typedef struct {} _objc_exc_UISpringTimingParameters; +#endif + +struct UISpringTimingParameters_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nonatomic, readonly) CGVector initialVelocity; + +// - (instancetype)init __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)initWithDampingRatio:(CGFloat)ratio initialVelocity:(CGVector)velocity __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initWithMass:(CGFloat)mass stiffness:(CGFloat)stiffness damping:(CGFloat)damping initialVelocity:(CGVector)velocity __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithDampingRatio:(CGFloat)ratio; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + + + + +extern "C" __attribute__((visibility ("default"))) UITransitionContextViewControllerKey const UITransitionContextFromViewControllerKey __attribute__((swift_name("from"))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) UITransitionContextViewControllerKey const UITransitionContextToViewControllerKey __attribute__((swift_name("to"))) __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) UITransitionContextViewKey const UITransitionContextFromViewKey __attribute__((swift_name("from"))) __attribute__((availability(ios,introduced=8.0))); +extern "C" __attribute__((visibility ("default"))) UITransitionContextViewKey const UITransitionContextToViewKey __attribute__((swift_name("to"))) __attribute__((availability(ios,introduced=8.0))); +// @protocol UIViewControllerContextTransitioning + + +// @property(nonatomic, readonly) UIView *containerView; + + + + +// @property(nonatomic, readonly, getter=isAnimated) BOOL animated; + + +// @property(nonatomic, readonly, getter=isInteractive) BOOL interactive; +// @property(nonatomic, readonly) BOOL transitionWasCancelled; + +// @property(nonatomic, readonly) UIModalPresentationStyle presentationStyle; +// - (void)updateInteractiveTransition:(CGFloat)percentComplete; +// - (void)finishInteractiveTransition; +// - (void)cancelInteractiveTransition; + + + +// - (void)pauseInteractiveTransition __attribute__((availability(ios,introduced=10.0))); + + + + + + + +// - (void)completeTransition:(BOOL)didComplete; + + + + + + + +// - (nullable __kindof UIViewController *)viewControllerForKey:(UITransitionContextViewControllerKey)key; + + + + + +// - (nullable __kindof UIView *)viewForKey:(UITransitionContextViewKey)key __attribute__((availability(ios,introduced=8.0))); + +// @property(nonatomic, readonly) CGAffineTransform targetTransform __attribute__((availability(ios,introduced=8.0))); + + + + + + + +// - (CGRect)initialFrameForViewController:(UIViewController *)vc; +// - (CGRect)finalFrameForViewController:(UIViewController *)vc; +/* @end */ + + +// @protocol UIViewControllerAnimatedTransitioning + + + + +// - (NSTimeInterval)transitionDuration:(nullable id )transitionContext; + +// - (void)animateTransition:(id )transitionContext; + +/* @optional */ + + + + + +// - (id ) interruptibleAnimatorForTransition:(id )transitionContext __attribute__((availability(ios,introduced=10.0))); + + +// - (void)animationEnded:(BOOL) transitionCompleted; + +/* @end */ + + + +// @protocol UIViewControllerInteractiveTransitioning +// - (void)startInteractiveTransition:(id )transitionContext; + +/* @optional */ +// @property(nonatomic, readonly) CGFloat completionSpeed; +// @property(nonatomic, readonly) UIViewAnimationCurve completionCurve; + + + + + + +// @property (nonatomic, readonly) BOOL wantsInteractiveStart __attribute__((availability(ios,introduced=10.0))); + +/* @end */ + + +// @class UIPresentationController; +#ifndef _REWRITER_typedef_UIPresentationController +#define _REWRITER_typedef_UIPresentationController +typedef struct objc_object UIPresentationController; +typedef struct {} _objc_exc_UIPresentationController; +#endif + + +// @protocol UIViewControllerTransitioningDelegate + +/* @optional */ +// - (nullable id )animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source; + +// - (nullable id )animationControllerForDismissedController:(UIViewController *)dismissed; + +// - (nullable id )interactionControllerForPresentation:(id )animator; + +// - (nullable id )interactionControllerForDismissal:(id )animator; + +// - (nullable UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(nullable UIViewController *)presenting sourceViewController:(UIViewController *)source __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIPercentDrivenInteractiveTransition +#define _REWRITER_typedef_UIPercentDrivenInteractiveTransition +typedef struct objc_object UIPercentDrivenInteractiveTransition; +typedef struct {} _objc_exc_UIPercentDrivenInteractiveTransition; +#endif + +struct UIPercentDrivenInteractiveTransition_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// @property (readonly) CGFloat duration; + + +// @property (readonly) CGFloat percentComplete; + + + + + + + +// @property (nonatomic,assign) CGFloat completionSpeed; + + + + +// @property (nonatomic,assign) UIViewAnimationCurve completionCurve; + + + + +// @property (nullable, nonatomic, strong)id timingCurve __attribute__((availability(ios,introduced=10.0))); + + + + +// @property (nonatomic) BOOL wantsInteractiveStart __attribute__((availability(ios,introduced=10.0))); + + + + +// - (void)pauseInteractiveTransition __attribute__((availability(ios,introduced=10.0))); +// - (void)updateInteractiveTransition:(CGFloat)percentComplete; +// - (void)cancelInteractiveTransition; +// - (void)finishInteractiveTransition; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UISearchController; +#ifndef _REWRITER_typedef_UISearchController +#define _REWRITER_typedef_UISearchController +typedef struct objc_object UISearchController; +typedef struct {} _objc_exc_UISearchController; +#endif + + +// @protocol UISearchControllerDelegate +/* @optional */ + +// - (void)willPresentSearchController:(UISearchController *)searchController; +// - (void)didPresentSearchController:(UISearchController *)searchController; +// - (void)willDismissSearchController:(UISearchController *)searchController; +// - (void)didDismissSearchController:(UISearchController *)searchController; + + +// - (void)presentSearchController:(UISearchController *)searchController; +/* @end */ + + +// @protocol UISearchResultsUpdating +/* @required */ + +// - (void)updateSearchResultsForSearchController:(UISearchController *)searchController; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) +#ifndef _REWRITER_typedef_UISearchController +#define _REWRITER_typedef_UISearchController +typedef struct objc_object UISearchController; +typedef struct {} _objc_exc_UISearchController; +#endif + +struct UISearchController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + +// - (instancetype)initWithSearchResultsController:(nullable UIViewController *)searchResultsController __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property (nullable, nonatomic, weak) id searchResultsUpdater; + + +// @property (nonatomic, assign, getter = isActive) BOOL active; + +// @property (nullable, nonatomic, weak) id delegate; +// @property (nonatomic, assign) BOOL dimsBackgroundDuringPresentation __attribute__((availability(tvos,unavailable))) __attribute__((availability(ios,introduced=8.0,deprecated=12.0,replacement="obscuresBackgroundDuringPresentation"))); +// @property (nonatomic, assign) BOOL obscuresBackgroundDuringPresentation __attribute__((availability(ios,introduced=9.1))); +// @property (nonatomic, assign) BOOL hidesNavigationBarDuringPresentation; + +// @property (nullable, nonatomic, strong, readonly) UIViewController *searchResultsController; + + +// @property (nonatomic, strong, readonly) UISearchBar *searchBar; + +// @property (nonatomic) BOOL automaticallyShowsSearchResultsController __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic) BOOL showsSearchResultsController __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic) BOOL automaticallyShowsCancelButton __attribute__((availability(ios,introduced=13.0))); +// @property (nonatomic) BOOL automaticallyShowsScopeBar __attribute__((availability(ios,introduced=13.0))); +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UISearchBar; +#ifndef _REWRITER_typedef_UISearchBar +#define _REWRITER_typedef_UISearchBar +typedef struct objc_object UISearchBar; +typedef struct {} _objc_exc_UISearchBar; +#endif + +#ifndef _REWRITER_typedef_UITableView +#define _REWRITER_typedef_UITableView +typedef struct objc_object UITableView; +typedef struct {} _objc_exc_UITableView; +#endif + +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + +// @protocol UITableViewDataSource, UITableViewDelegate, UISearchDisplayDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message="UISearchDisplayController has been replaced with UISearchController"))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UISearchDisplayController +#define _REWRITER_typedef_UISearchDisplayController +typedef struct objc_object UISearchDisplayController; +typedef struct {} _objc_exc_UISearchDisplayController; +#endif + +struct UISearchDisplayController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithSearchBar:(UISearchBar *)searchBar contentsController:(UIViewController *)viewController; + +// @property(nullable,nonatomic,assign) id delegate; + +// @property(nonatomic,getter=isActive) BOOL active; +// - (void)setActive:(BOOL)visible animated:(BOOL)animated; + +// @property(nonatomic,readonly) UISearchBar *searchBar; +// @property(nonatomic,readonly) UIViewController *searchContentsController; +// @property(nonatomic,readonly) UITableView *searchResultsTableView; +// @property(nullable,nonatomic,weak) id searchResultsDataSource; +// @property(nullable,nonatomic,weak) id searchResultsDelegate; +// @property(nullable,nonatomic,copy) NSString *searchResultsTitle __attribute__((availability(ios,introduced=5.0))); + + +// @property (nonatomic, assign) BOOL displaysSearchBarInNavigationBar __attribute__((availability(ios,introduced=7.0))); +// @property (nullable, nonatomic, readonly) UINavigationItem *navigationItem __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) +// @protocol UISearchDisplayDelegate + +/* @optional */ + + +// - (void) searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); + + +// - (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void)searchDisplayController:(UISearchDisplayController *)controller willUnloadSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); + + +// - (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void)searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void)searchDisplayController:(UISearchDisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); + + +// - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(nullable NSString *)searchString __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); +// - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=""))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UISearchToken; +#ifndef _REWRITER_typedef_UISearchToken +#define _REWRITER_typedef_UISearchToken +typedef struct objc_object UISearchToken; +typedef struct {} _objc_exc_UISearchToken; +#endif + +// @protocol UISearchTextFieldDelegate; +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UISearchTextField +#define _REWRITER_typedef_UISearchTextField +typedef struct objc_object UISearchTextField; +typedef struct {} _objc_exc_UISearchTextField; +#endif + +struct UISearchTextField_IMPL { + struct UITextField_IMPL UITextField_IVARS; +}; + + + + + +// @property (nonatomic, copy) NSArray *tokens; +// - (void)insertToken:(UISearchToken *)token atIndex:(NSInteger)tokenIndex; +// - (void)removeTokenAtIndex:(NSInteger)tokenIndex; + + +// - (UITextPosition *)positionOfTokenAtIndex:(NSInteger)tokenIndex; + + + + +// - (NSArray *)tokensInRange:(UITextRange *)textRange; + + + + +// @property (readonly, nonatomic) UITextRange *textualRange; + + + + + + + +// - (void)replaceTextualPortionOfRange:(UITextRange *)textRange withToken:(UISearchToken *)token atIndex:(NSUInteger)tokenIndex; + + +// @property (nonatomic, strong, null_resettable) UIColor *tokenBackgroundColor; + + + + +// @property (nonatomic) BOOL allowsDeletingTokens; + + + + +// @property (nonatomic) BOOL allowsCopyingTokens; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UISearchToken +#define _REWRITER_typedef_UISearchToken +typedef struct objc_object UISearchToken; +typedef struct {} _objc_exc_UISearchToken; +#endif + +struct UISearchToken_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// + (UISearchToken *)tokenWithIcon:(nullable UIImage *)icon text:(NSString *)text; + + + + + + + +// @property (strong, nullable, nonatomic) id representedObject; +/* @end */ + + +// @protocol UISearchTextFieldDelegate +/* @optional */ + + + + + + +// - (NSItemProvider *)searchTextField:(UISearchTextField *)searchTextField itemProviderForCopyingToken:(UISearchToken *)token; + +/* @end */ + + + + + +// @protocol UISearchTextFieldPasteItem + + +// - (void)setSearchTokenResult:(UISearchToken *)token; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UISegmentedControlStyle; enum { + UISegmentedControlStylePlain, + UISegmentedControlStyleBordered, + UISegmentedControlStyleBar, + UISegmentedControlStyleBezeled, +} __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="The segmentedControlStyle property no longer has any effect"))) __attribute__((availability(tvos,unavailable))); + +enum { + UISegmentedControlNoSegment = -1 +}; + +typedef NSInteger UISegmentedControlSegment; enum { + UISegmentedControlSegmentAny = 0, + UISegmentedControlSegmentLeft = 1, + UISegmentedControlSegmentCenter = 2, + UISegmentedControlSegmentRight = 3, + UISegmentedControlSegmentAlone = 4, +}; + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UISegmentedControl +#define _REWRITER_typedef_UISegmentedControl +typedef struct objc_object UISegmentedControl; +typedef struct {} _objc_exc_UISegmentedControl; +#endif + +struct UISegmentedControl_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// - (instancetype)initWithItems:(nullable NSArray *)items; + +// @property(nonatomic) UISegmentedControlStyle segmentedControlStyle __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message="The segmentedControlStyle property no longer has any effect"))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,getter=isMomentary) BOOL momentary; +// @property(nonatomic,readonly) NSUInteger numberOfSegments; + + +// @property(nonatomic) BOOL apportionsSegmentWidthsByContent __attribute__((availability(ios,introduced=5.0))); + +// - (void)insertSegmentWithTitle:(nullable NSString *)title atIndex:(NSUInteger)segment animated:(BOOL)animated; +// - (void)insertSegmentWithImage:(nullable UIImage *)image atIndex:(NSUInteger)segment animated:(BOOL)animated; +// - (void)removeSegmentAtIndex:(NSUInteger)segment animated:(BOOL)animated; +// - (void)removeAllSegments; + +// - (void)setTitle:(nullable NSString *)title forSegmentAtIndex:(NSUInteger)segment; +// - (nullable NSString *)titleForSegmentAtIndex:(NSUInteger)segment; + +// - (void)setImage:(nullable UIImage *)image forSegmentAtIndex:(NSUInteger)segment; +// - (nullable UIImage *)imageForSegmentAtIndex:(NSUInteger)segment; + +// - (void)setWidth:(CGFloat)width forSegmentAtIndex:(NSUInteger)segment; +// - (CGFloat)widthForSegmentAtIndex:(NSUInteger)segment; + +// - (void)setContentOffset:(CGSize)offset forSegmentAtIndex:(NSUInteger)segment; +// - (CGSize)contentOffsetForSegmentAtIndex:(NSUInteger)segment; + +// - (void)setEnabled:(BOOL)enabled forSegmentAtIndex:(NSUInteger)segment; +// - (BOOL)isEnabledForSegmentAtIndex:(NSUInteger)segment; + + + +// @property(nonatomic) NSInteger selectedSegmentIndex; + + +// @property(nullable, nonatomic, strong) UIColor *selectedSegmentTintColor __attribute__((availability(ios,introduced=13.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setDividerImage:(nullable UIImage *)dividerImage forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)dividerImageForLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setTitleTextAttributes:(nullable NSDictionary *)attributes forState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable NSDictionary *)titleTextAttributesForState:(UIControlState)state __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setContentPositionAdjustment:(UIOffset)adjustment forSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (UIOffset)contentPositionAdjustmentForSegmentType:(UISegmentedControlSegment)leftCenterRightOrAlone barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +/* @end */ + + + +// @interface UISegmentedControl (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIImageView; +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UISlider +#define _REWRITER_typedef_UISlider +typedef struct objc_object UISlider; +typedef struct {} _objc_exc_UISlider; +#endif + +struct UISlider_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// @property(nonatomic) float value; +// @property(nonatomic) float minimumValue; +// @property(nonatomic) float maximumValue; + +// @property(nullable, nonatomic,strong) UIImage *minimumValueImage; +// @property(nullable, nonatomic,strong) UIImage *maximumValueImage; + +// @property(nonatomic,getter=isContinuous) BOOL continuous; + +// @property(nullable, nonatomic,strong) UIColor *minimumTrackTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic,strong) UIColor *maximumTrackTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic,strong) UIColor *thumbTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + +// - (void)setValue:(float)value animated:(BOOL)animated; + + + + +// - (void)setThumbImage:(nullable UIImage *)image forState:(UIControlState)state; +// - (void)setMinimumTrackImage:(nullable UIImage *)image forState:(UIControlState)state; +// - (void)setMaximumTrackImage:(nullable UIImage *)image forState:(UIControlState)state; + +// - (nullable UIImage *)thumbImageForState:(UIControlState)state; +// - (nullable UIImage *)minimumTrackImageForState:(UIControlState)state; +// - (nullable UIImage *)maximumTrackImageForState:(UIControlState)state; + +// @property(nullable,nonatomic,readonly) UIImage *currentThumbImage; +// @property(nullable,nonatomic,readonly) UIImage *currentMinimumTrackImage; +// @property(nullable,nonatomic,readonly) UIImage *currentMaximumTrackImage; + + +// - (CGRect)minimumValueImageRectForBounds:(CGRect)bounds; +// - (CGRect)maximumValueImageRectForBounds:(CGRect)bounds; +// - (CGRect)trackRectForBounds:(CGRect)bounds; +// - (CGRect)thumbRectForBounds:(CGRect)bounds trackRect:(CGRect)rect value:(float)value; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UISplitViewControllerDelegate; + +typedef NSInteger UISplitViewControllerDisplayMode; enum { + UISplitViewControllerDisplayModeAutomatic, + UISplitViewControllerDisplayModePrimaryHidden, + UISplitViewControllerDisplayModeAllVisible, + UISplitViewControllerDisplayModePrimaryOverlay, +} __attribute__((availability(ios,introduced=8.0))); + +typedef NSInteger UISplitViewControllerPrimaryEdge; enum { + UISplitViewControllerPrimaryEdgeLeading, + UISplitViewControllerPrimaryEdgeTrailing, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +typedef NSInteger UISplitViewControllerBackgroundStyle; enum { + UISplitViewControllerBackgroundStyleNone, + UISplitViewControllerBackgroundStyleSidebar, +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) CGFloat const UISplitViewControllerAutomaticDimension __attribute__((availability(ios,introduced=8.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UISplitViewController +#define _REWRITER_typedef_UISplitViewController +typedef struct objc_object UISplitViewController; +typedef struct {} _objc_exc_UISplitViewController; +#endif + +struct UISplitViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// @property (nonatomic, copy) NSArray<__kindof UIViewController *> *viewControllers; +// @property (nullable, nonatomic, weak) id delegate; + + +// @property (nonatomic) BOOL presentsWithGesture __attribute__((availability(ios,introduced=5.1))); + + +// @property(nonatomic, readonly, getter=isCollapsed) BOOL collapsed __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic) UISplitViewControllerDisplayMode preferredDisplayMode __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, readonly) UISplitViewControllerDisplayMode displayMode __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic, readonly) UIBarButtonItem *displayModeButtonItem __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic, assign) CGFloat preferredPrimaryColumnWidthFraction __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic, assign) CGFloat minimumPrimaryColumnWidth __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic, assign) CGFloat maximumPrimaryColumnWidth __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic,readonly) CGFloat primaryColumnWidth __attribute__((availability(ios,introduced=8.0))); + + +// @property(nonatomic) UISplitViewControllerPrimaryEdge primaryEdge __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + + +// - (void)showViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + +// - (void)showDetailViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + +// @property (nonatomic) UISplitViewControllerBackgroundStyle primaryBackgroundStyle __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + +// @protocol UISplitViewControllerDelegate + +/* @optional */ + + +// - (void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode __attribute__((availability(ios,introduced=8.0))); + + +// - (UISplitViewControllerDisplayMode)targetDisplayModeForActionInSplitViewController:(UISplitViewController *)svc __attribute__((availability(ios,introduced=8.0))); + + + +// - (BOOL)splitViewController:(UISplitViewController *)splitViewController showViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + + +// - (BOOL)splitViewController:(UISplitViewController *)splitViewController showDetailViewController:(UIViewController *)vc sender:(nullable id)sender __attribute__((availability(ios,introduced=8.0))); + + + + +// - (nullable UIViewController *)primaryViewControllerForCollapsingSplitViewController:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=8.0))); + + + + +// - (nullable UIViewController *)primaryViewControllerForExpandingSplitViewController:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=8.0))); + + + + + + +// - (BOOL)splitViewController:(UISplitViewController *)splitViewController collapseSecondaryViewController:(UIViewController *)secondaryViewController ontoPrimaryViewController:(UIViewController *)primaryViewController __attribute__((availability(ios,introduced=8.0))); + + + + + + +// - (nullable UIViewController *)splitViewController:(UISplitViewController *)splitViewController separateSecondaryViewControllerFromPrimaryViewController:(UIViewController *)primaryViewController __attribute__((availability(ios,introduced=8.0))); + +// - (UIInterfaceOrientationMask)splitViewControllerSupportedInterfaceOrientations:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// - (UIInterfaceOrientation)splitViewControllerPreferredInterfaceOrientationForPresentation:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + + + +// - (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use splitViewController:willChangeToDisplayMode: and displayModeButtonItem instead"))) __attribute__((availability(tvos,unavailable))); + + +// - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message="Use splitViewController:willChangeToDisplayMode: and displayModeButtonItem instead"))) __attribute__((availability(tvos,unavailable))); + + +// - (void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController __attribute__((availability(ios,introduced=2.0,deprecated=8.0,replacement="splitViewController:willChangeToDisplayMode:"))) __attribute__((availability(tvos,unavailable))); + + + +// - (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation __attribute__((availability(ios,introduced=5.0,deprecated=8.0,replacement="preferredDisplayMode"))) __attribute__((availability(tvos,unavailable))); + + +/* @end */ + + +// @interface UIViewController (UISplitViewController) + +// @property (nullable, nonatomic, readonly, strong) UISplitViewController *splitViewController; + + + +// - (void)collapseSecondaryViewController:(UIViewController *)secondaryViewController forSplitViewController:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=8.0))); + + +// - (nullable UIViewController *)separateSecondaryViewControllerForSplitViewController:(UISplitViewController *)splitViewController __attribute__((availability(ios,introduced=8.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIButton; +#ifndef _REWRITER_typedef_UIButton +#define _REWRITER_typedef_UIButton +typedef struct objc_object UIButton; +typedef struct {} _objc_exc_UIButton; +#endif + +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIStepper +#define _REWRITER_typedef_UIStepper +typedef struct objc_object UIStepper; +typedef struct {} _objc_exc_UIStepper; +#endif + +struct UIStepper_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// @property(nonatomic,getter=isContinuous) BOOL continuous; +// @property(nonatomic) BOOL autorepeat; +// @property(nonatomic) BOOL wraps; + +// @property(nonatomic) double value; +// @property(nonatomic) double minimumValue; +// @property(nonatomic) double maximumValue; +// @property(nonatomic) double stepValue; + + +// - (void)setBackgroundImage:(nullable UIImage*)image forState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage*)backgroundImageForState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)setDividerImage:(nullable UIImage*)image forLeftSegmentState:(UIControlState)leftState rightSegmentState:(UIControlState)rightState __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage*)dividerImageForLeftSegmentState:(UIControlState)state rightSegmentState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)setIncrementImage:(nullable UIImage *)image forState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)incrementImageForState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)setDecrementImage:(nullable UIImage *)image forState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)decrementImageForState:(UIControlState)state __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +/* @end */ + +#pragma clang assume_nonnull end +// @class UIViewController; +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + + +#pragma clang assume_nonnull begin + +typedef __kindof UIViewController *_Nullable (*UIStoryboardViewControllerCreator)(NSCoder *coder); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) +#ifndef _REWRITER_typedef_UIStoryboard +#define _REWRITER_typedef_UIStoryboard +typedef struct objc_object UIStoryboard; +typedef struct {} _objc_exc_UIStoryboard; +#endif + +struct UIStoryboard_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(nullable NSBundle *)storyboardBundleOrNil; + +// - (nullable __kindof UIViewController *)instantiateInitialViewController; +// - (nullable __kindof UIViewController *)instantiateInitialViewControllerWithCreator:(nullable __attribute__((noescape)) UIStoryboardViewControllerCreator)block __attribute__((availability(ios,introduced=13.0))); +// - (__kindof UIViewController *)instantiateViewControllerWithIdentifier:(NSString *)identifier; +// - (__kindof UIViewController *)instantiateViewControllerWithIdentifier:(NSString *)identifier creator:(nullable __attribute__((noescape)) UIStoryboardViewControllerCreator)block __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIViewController; +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0))) +#ifndef _REWRITER_typedef_UIStoryboardSegue +#define _REWRITER_typedef_UIStoryboardSegue +typedef struct objc_object UIStoryboardSegue; +typedef struct {} _objc_exc_UIStoryboardSegue; +#endif + +struct UIStoryboardSegue_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// + (instancetype)segueWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination performHandler:(void (^)(void))performHandler __attribute__((availability(ios,introduced=6.0))); + +// - (instancetype)initWithIdentifier:(nullable NSString *)identifier source:(UIViewController *)source destination:(UIViewController *)destination __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); + +// @property (nullable, nonatomic, copy, readonly) NSString *identifier; +// @property (nonatomic, readonly) __kindof UIViewController *sourceViewController; +// @property (nonatomic, readonly) __kindof UIViewController *destinationViewController; + + + +// - (void)perform; + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIStoryboardUnwindSegueSource +#define _REWRITER_typedef_UIStoryboardUnwindSegueSource +typedef struct objc_object UIStoryboardUnwindSegueSource; +typedef struct {} _objc_exc_UIStoryboardUnwindSegueSource; +#endif + +struct UIStoryboardUnwindSegueSource_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); + +// @property (readonly) UIViewController *sourceViewController; +// @property (readonly) SEL unwindAction; +// @property (readonly, nullable) id sender; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UIPopoverController; +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=5.0,deprecated=9.0,message="Access destinationViewController.popoverPresentationController from your segue's performHandler or override of -perform"))) +#ifndef _REWRITER_typedef_UIStoryboardPopoverSegue +#define _REWRITER_typedef_UIStoryboardPopoverSegue +typedef struct objc_object UIStoryboardPopoverSegue; +typedef struct {} _objc_exc_UIStoryboardPopoverSegue; +#endif + +struct UIStoryboardPopoverSegue_IMPL { + struct UIStoryboardSegue_IMPL UIStoryboardSegue_IVARS; +}; + + +// @property (nonatomic, strong, readonly) UIPopoverController *popoverController; + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UISwitch +#define _REWRITER_typedef_UISwitch +typedef struct objc_object UISwitch; +typedef struct {} _objc_exc_UISwitch; +#endif + +struct UISwitch_IMPL { + struct UIControl_IMPL UIControl_IVARS; +}; + + +// @property(nullable, nonatomic, strong) UIColor *onTintColor __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic, strong) UIColor *thumbTintColor __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property(nullable, nonatomic, strong) UIImage *onImage __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic, strong) UIImage *offImage __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property(nonatomic,getter=isOn) BOOL on; + +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (void)setOn:(BOOL)on animated:(BOOL)animated; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UITabBarItemPositioning; enum { + UITabBarItemPositioningAutomatic, + UITabBarItemPositioningFill, + UITabBarItemPositioningCentered, +} __attribute__((availability(ios,introduced=7.0))); + +// @class UITabBarItem; +#ifndef _REWRITER_typedef_UITabBarItem +#define _REWRITER_typedef_UITabBarItem +typedef struct objc_object UITabBarItem; +typedef struct {} _objc_exc_UITabBarItem; +#endif + +// @class UIImageView; +#ifndef _REWRITER_typedef_UIImageView +#define _REWRITER_typedef_UIImageView +typedef struct objc_object UIImageView; +typedef struct {} _objc_exc_UIImageView; +#endif + +// @class UITabBarAppearance; +#ifndef _REWRITER_typedef_UITabBarAppearance +#define _REWRITER_typedef_UITabBarAppearance +typedef struct objc_object UITabBarAppearance; +typedef struct {} _objc_exc_UITabBarAppearance; +#endif + +// @protocol UITabBarDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITabBar +#define _REWRITER_typedef_UITabBar +typedef struct objc_object UITabBar; +typedef struct {} _objc_exc_UITabBar; +#endif + +struct UITabBar_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nullable, nonatomic, weak) id delegate; +// @property(nullable, nonatomic, copy) NSArray *items; +// @property(nullable, nonatomic, weak) UITabBarItem *selectedItem; + +// - (void)setItems:(nullable NSArray *)items animated:(BOOL)animated; + + + +// - (void)beginCustomizingItems:(NSArray *)items __attribute__((availability(tvos,unavailable))); +// - (BOOL)endCustomizingAnimated:(BOOL)animated __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic, readonly, getter=isCustomizing) BOOL customizing __attribute__((availability(tvos,unavailable))); + + + + + + +// @property(null_resettable, nonatomic, strong) UIColor *tintColor __attribute__((availability(ios,introduced=5.0))); +// @property(nullable, nonatomic, strong) UIColor *barTintColor __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + +// @property (nonatomic, readwrite, copy, nullable) UIColor *unselectedItemTintColor __attribute__((availability(ios,introduced=10.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nullable, nonatomic, strong) UIColor *selectedImageTintColor __attribute__((availability(ios,introduced=5.0,deprecated=8.0,replacement="tintColor"))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + + + +// @property(nullable, nonatomic, strong) UIImage *backgroundImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nullable, nonatomic, strong) UIImage *selectionIndicatorImage __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// @property(nullable, nonatomic, strong) UIImage *shadowImage __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// @property(nonatomic) UITabBarItemPositioning itemPositioning __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); + + + + + + +// @property(nonatomic) CGFloat itemWidth __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + + + +// @property(nonatomic) CGFloat itemSpacing __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); + + + + +// @property(nonatomic) UIBarStyle barStyle __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,getter=isTranslucent) BOOL translucent __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic, readwrite, copy) UITabBarAppearance *standardAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// @property(nonatomic, readonly, strong) UIView *leadingAccessoryView __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + + + +// @property(nonatomic, readonly, strong) UIView *trailingAccessoryView __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + + + + +// @protocol UITabBarDelegate +/* @optional */ + +// - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; + + + + + + +// - (void)tabBar:(UITabBar *)tabBar willBeginCustomizingItems:(NSArray *)items __attribute__((availability(tvos,unavailable))); +// - (void)tabBar:(UITabBar *)tabBar didBeginCustomizingItems:(NSArray *)items __attribute__((availability(tvos,unavailable))); +// - (void)tabBar:(UITabBar *)tabBar willEndCustomizingItems:(NSArray *)items changed:(BOOL)changed __attribute__((availability(tvos,unavailable))); +// - (void)tabBar:(UITabBar *)tabBar didEndCustomizingItems:(NSArray *)items changed:(BOOL)changed __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UITabBar (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UINavigationController +#define _REWRITER_typedef_UINavigationController +typedef struct objc_object UINavigationController; +typedef struct {} _objc_exc_UINavigationController; +#endif + +#ifndef _REWRITER_typedef_UITabBarItem +#define _REWRITER_typedef_UITabBarItem +typedef struct objc_object UITabBarItem; +typedef struct {} _objc_exc_UITabBarItem; +#endif + +// @protocol UITabBarControllerDelegate; +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITabBarController +#define _REWRITER_typedef_UITabBarController +typedef struct objc_object UITabBarController; +typedef struct {} _objc_exc_UITabBarController; +#endif + +struct UITabBarController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// @property(nullable, nonatomic,copy) NSArray<__kindof UIViewController *> *viewControllers; + + +// - (void)setViewControllers:(NSArray<__kindof UIViewController *> * _Nullable)viewControllers animated:(BOOL)animated; + +// @property(nullable, nonatomic, assign) __kindof UIViewController *selectedViewController; +// @property(nonatomic) NSUInteger selectedIndex; + +// @property(nonatomic, readonly) UINavigationController *moreNavigationController __attribute__((availability(tvos,unavailable))); +// @property(nullable, nonatomic, copy) NSArray<__kindof UIViewController *> *customizableViewControllers __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic,readonly) UITabBar *tabBar __attribute__((availability(ios,introduced=3.0))); + +// @property(nullable, nonatomic,weak) id delegate; + +/* @end */ + + +// @protocol UITabBarControllerDelegate +/* @optional */ +// - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController __attribute__((availability(ios,introduced=3.0))); +// - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; + +// - (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// - (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +// - (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray<__kindof UIViewController *> *)viewControllers changed:(BOOL)changed __attribute__((availability(tvos,unavailable))); + +// - (UIInterfaceOrientationMask)tabBarControllerSupportedInterfaceOrientations:(UITabBarController *)tabBarController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +// - (UIInterfaceOrientation)tabBarControllerPreferredInterfaceOrientationForPresentation:(UITabBarController *)tabBarController __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); + +#if 0 +- (nullable id )tabBarController:(UITabBarController *)tabBarController + interactionControllerForAnimationController: (id )animationController __attribute__((availability(ios,introduced=7.0))); +#endif + + +#if 0 +- (nullable id )tabBarController:(UITabBarController *)tabBarController + animationControllerForTransitionFromViewController:(UIViewController *)fromVC + toViewController:(UIViewController *)toVC __attribute__((availability(ios,introduced=7.0))); +#endif + + +/* @end */ + + +// @interface UIViewController (UITabBarControllerItem) + +// @property(null_resettable, nonatomic, strong) UITabBarItem *tabBarItem; + +// @property(nullable, nonatomic, readonly, strong) UITabBarController *tabBarController; + +// @property(nullable, nonatomic, strong) UIScrollView *tabBarObservedScrollView __attribute__((availability(tvos,introduced=13.0))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UITabBarSystemItem; enum { + UITabBarSystemItemMore, + UITabBarSystemItemFavorites, + UITabBarSystemItemFeatured, + UITabBarSystemItemTopRated, + UITabBarSystemItemRecents, + UITabBarSystemItemContacts, + UITabBarSystemItemHistory, + UITabBarSystemItemBookmarks, + UITabBarSystemItemSearch, + UITabBarSystemItemDownloads, + UITabBarSystemItemMostRecent, + UITabBarSystemItemMostViewed, +}; + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UITabBarAppearance +#define _REWRITER_typedef_UITabBarAppearance +typedef struct objc_object UITabBarAppearance; +typedef struct {} _objc_exc_UITabBarAppearance; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITabBarItem +#define _REWRITER_typedef_UITabBarItem +typedef struct objc_object UITabBarItem; +typedef struct {} _objc_exc_UITabBarItem; +#endif + +struct UITabBarItem_IMPL { + struct UIBarItem_IMPL UIBarItem_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + + + +// - (instancetype)initWithTitle:(nullable NSString *)title image:(nullable UIImage *)image tag:(NSInteger)tag; +// - (instancetype)initWithTitle:(nullable NSString *)title image:(nullable UIImage *)image selectedImage:(nullable UIImage *)selectedImage __attribute__((availability(ios,introduced=7.0))); +// - (instancetype)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag; + +// @property(nullable, nonatomic,strong) UIImage *selectedImage __attribute__((availability(ios,introduced=7.0))); + +// @property(nullable, nonatomic, copy) NSString *badgeValue; + + + +// - (void)setFinishedSelectedImage:(nullable UIImage *)selectedImage withFinishedUnselectedImage:(nullable UIImage *)unselectedImage __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message="Use initWithTitle:image:selectedImage: or the image and selectedImage properties along with UIImageRenderingModeAlwaysOriginal"))) __attribute__((availability(tvos,unavailable))); +// - (nullable UIImage *)finishedSelectedImage __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +// - (nullable UIImage *)finishedUnselectedImage __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); + + + + + +// @property (nonatomic, readwrite, assign) UIOffset titlePositionAdjustment __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// @property (nonatomic, readwrite, copy, nullable) UIColor *badgeColor __attribute__((availability(ios,introduced=10.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (void)setBadgeTextAttributes:(nullable NSDictionary *)textAttributes forState:(UIControlState)state __attribute__((availability(ios,introduced=10.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// - (nullable NSDictionary *)badgeTextAttributesForState:(UIControlState)state __attribute__((availability(ios,introduced=10.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// @property (nonatomic, readwrite, copy, nullable) UITabBarAppearance *standardAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))); + +/* @end */ + + + +// @interface UITabBarItem (SpringLoading) +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_UITableViewHeaderFooterView +#define _REWRITER_typedef_UITableViewHeaderFooterView +typedef struct objc_object UITableViewHeaderFooterView; +typedef struct {} _objc_exc_UITableViewHeaderFooterView; +#endif + +struct UITableViewHeaderFooterView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nonatomic, readonly, strong, nullable) UILabel *textLabel; +// @property (nonatomic, readonly, strong, nullable) UILabel *detailTextLabel; + +// @property (nonatomic, readonly, strong) UIView *contentView; +// @property (nonatomic, strong, nullable) UIView *backgroundView; + +// @property (nonatomic, readonly, copy, nullable) NSString *reuseIdentifier; + +// - (void)prepareForReuse __attribute__((objc_requires_super)); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITableViewController +#define _REWRITER_typedef_UITableViewController +typedef struct objc_object UITableViewController; +typedef struct {} _objc_exc_UITableViewController; +#endif + +struct UITableViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)initWithStyle:(UITableViewStyle)style __attribute__((objc_designated_initializer)); +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nonatomic, strong, null_resettable) UITableView *tableView; +// @property (nonatomic) BOOL clearsSelectionOnViewWillAppear __attribute__((availability(ios,introduced=3.2))); + +// @property (nonatomic, strong, nullable) UIRefreshControl *refreshControl __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.2))) +#ifndef _REWRITER_typedef_UITextChecker +#define _REWRITER_typedef_UITextChecker +typedef struct objc_object UITextChecker; +typedef struct {} _objc_exc_UITextChecker; +#endif + +struct UITextChecker_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (NSRange)rangeOfMisspelledWordInString:(NSString *)stringToCheck range:(NSRange)range startingAt:(NSInteger)startingOffset wrap:(BOOL)wrapFlag language:(NSString *)language; + + +// - (nullable NSArray *)guessesForWordRange:(NSRange)range inString:(NSString *)string language:(NSString *)language; + + +// - (nullable NSArray *)completionsForPartialWordRange:(NSRange)range inString:(NSString *)string language:(NSString *)language; + + +// - (void)ignoreWord:(NSString *)wordToIgnore; +// @property(nonatomic, strong, nullable) NSArray *ignoredWords; + + +// + (void)learnWord:(NSString *)word; +// + (BOOL)hasLearnedWord:(NSString *)word; +// + (void)unlearnWord:(NSString *)word; + + +@property(class, nonatomic, readonly) NSArray *availableLanguages; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + +typedef NSInteger UITextItemInteraction; enum { + UITextItemInteractionInvokeDefaultAction, + UITextItemInteractionPresentActions, + UITextItemInteractionPreview, +} __attribute__((availability(ios,introduced=10.0))); + + + +#pragma clang assume_nonnull begin + +// @class UIFont; +#ifndef _REWRITER_typedef_UIFont +#define _REWRITER_typedef_UIFont +typedef struct objc_object UIFont; +typedef struct {} _objc_exc_UIFont; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UITextView +#define _REWRITER_typedef_UITextView +typedef struct objc_object UITextView; +typedef struct {} _objc_exc_UITextView; +#endif + +#ifndef _REWRITER_typedef_NSTextContainer +#define _REWRITER_typedef_NSTextContainer +typedef struct objc_object NSTextContainer; +typedef struct {} _objc_exc_NSTextContainer; +#endif + +#ifndef _REWRITER_typedef_NSLayoutManager +#define _REWRITER_typedef_NSLayoutManager +typedef struct objc_object NSLayoutManager; +typedef struct {} _objc_exc_NSLayoutManager; +#endif + +#ifndef _REWRITER_typedef_NSTextStorage +#define _REWRITER_typedef_NSTextStorage +typedef struct objc_object NSTextStorage; +typedef struct {} _objc_exc_NSTextStorage; +#endif + +#ifndef _REWRITER_typedef_NSTextAttachment +#define _REWRITER_typedef_NSTextAttachment +typedef struct objc_object NSTextAttachment; +typedef struct {} _objc_exc_NSTextAttachment; +#endif + + +// @protocol UITextViewDelegate + +/* @optional */ + +// - (BOOL)textViewShouldBeginEditing:(UITextView *)textView; +// - (BOOL)textViewShouldEndEditing:(UITextView *)textView; + +// - (void)textViewDidBeginEditing:(UITextView *)textView; +// - (void)textViewDidEndEditing:(UITextView *)textView; + +// - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; +// - (void)textViewDidChange:(UITextView *)textView; + +// - (void)textViewDidChangeSelection:(UITextView *)textView; + +// - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction __attribute__((availability(ios,introduced=10.0))); +// - (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction __attribute__((availability(ios,introduced=10.0))); + +// - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange __attribute__((availability(ios,introduced=7.0,deprecated=10.0,replacement="textView:shouldInteractWithURL:inRange:forInteractionType:"))); +// - (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange __attribute__((availability(ios,introduced=7.0,deprecated=10.0,replacement="textView:shouldInteractWithTextAttachment:inRange:forInteractionType:"))); + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UITextView +#define _REWRITER_typedef_UITextView +typedef struct objc_object UITextView; +typedef struct {} _objc_exc_UITextView; +#endif + +struct UITextView_IMPL { + struct UIScrollView_IMPL UIScrollView_IVARS; +}; + + +// @property(nullable,nonatomic,weak) id delegate; + +// @property(null_resettable,nonatomic,copy) NSString *text; +// @property(nullable,nonatomic,strong) UIFont *font; +// @property(nullable,nonatomic,strong) UIColor *textColor; +// @property(nonatomic) NSTextAlignment textAlignment; +// @property(nonatomic) NSRange selectedRange; +// @property(nonatomic,getter=isEditable) BOOL editable __attribute__((availability(tvos,unavailable))); +// @property(nonatomic,getter=isSelectable) BOOL selectable __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic) UIDataDetectorTypes dataDetectorTypes __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +// @property(nonatomic) BOOL allowsEditingTextAttributes __attribute__((availability(ios,introduced=6.0))); +// @property(null_resettable,copy) NSAttributedString *attributedText __attribute__((availability(ios,introduced=6.0))); +// @property(nonatomic,copy) NSDictionary *typingAttributes __attribute__((availability(ios,introduced=6.0))); + +// - (void)scrollRangeToVisible:(NSRange)range; + + + + +// @property (nullable, readwrite, strong) UIView *inputView; +// @property (nullable, readwrite, strong) UIView *inputAccessoryView; + +// @property(nonatomic) BOOL clearsOnInsertion __attribute__((availability(ios,introduced=6.0))); + + +// - (instancetype)initWithFrame:(CGRect)frame textContainer:(nullable NSTextContainer *)textContainer __attribute__((availability(ios,introduced=7.0))) __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + +// @property(nonatomic,readonly) NSTextContainer *textContainer __attribute__((availability(ios,introduced=7.0))); + +// @property(nonatomic, assign) UIEdgeInsets textContainerInset __attribute__((availability(ios,introduced=7.0))); + + +// @property(nonatomic,readonly) NSLayoutManager *layoutManager __attribute__((availability(ios,introduced=7.0))); +// @property(nonatomic,readonly,strong) NSTextStorage *textStorage __attribute__((availability(ios,introduced=7.0))); + + +// @property(null_resettable, nonatomic, copy) NSDictionary *linkTextAttributes __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic) BOOL usesStandardTextScaling __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + + + +// @interface UITextView () +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextViewTextDidBeginEditingNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextViewTextDidChangeNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UITextViewTextDidEndEditingNotification; +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIBarButtonItem; +#ifndef _REWRITER_typedef_UIBarButtonItem +#define _REWRITER_typedef_UIBarButtonItem +typedef struct objc_object UIBarButtonItem; +typedef struct {} _objc_exc_UIBarButtonItem; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIToolbarAppearance +#define _REWRITER_typedef_UIToolbarAppearance +typedef struct objc_object UIToolbarAppearance; +typedef struct {} _objc_exc_UIToolbarAppearance; +#endif + +// @protocol UIToolbarDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIToolbar +#define _REWRITER_typedef_UIToolbar +typedef struct objc_object UIToolbar; +typedef struct {} _objc_exc_UIToolbar; +#endif + +struct UIToolbar_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property(nonatomic) UIBarStyle barStyle __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(tvos,unavailable))); +// @property(nullable, nonatomic, copy) NSArray *items; +// @property(nonatomic,assign,getter=isTranslucent) BOOL translucent __attribute__((availability(ios,introduced=3.0))) __attribute__((annotate("ui_appearance_selector"))); + +// - (void)setItems:(nullable NSArray *)items animated:(BOOL)animated; + + + + + + +// @property(null_resettable, nonatomic, strong) UIColor *tintColor; +// @property(nullable, nonatomic, strong) UIColor *barTintColor __attribute__((availability(ios,introduced=7.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)backgroundImageForToolbarPosition:(UIBarPosition)topOrBottom barMetrics:(UIBarMetrics)barMetrics __attribute__((availability(ios,introduced=5.0))) __attribute__((annotate("ui_appearance_selector"))); + + + +// - (void)setShadowImage:(nullable UIImage *)shadowImage forToolbarPosition:(UIBarPosition)topOrBottom __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); +// - (nullable UIImage *)shadowImageForToolbarPosition:(UIBarPosition)topOrBottom __attribute__((availability(ios,introduced=6.0))) __attribute__((annotate("ui_appearance_selector"))); + + +// @property (nonatomic, readwrite, copy) UIToolbarAppearance *standardAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))); + +// @property (nonatomic, readwrite, copy, nullable) UIToolbarAppearance *compactAppearance __attribute__((annotate("ui_appearance_selector"))) __attribute__((availability(ios,introduced=13.0))); + +// @property(nullable, nonatomic, weak) id delegate __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIToolbarDelegate +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +// @protocol UIVideoEditorControllerDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=3.1))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIVideoEditorController +#define _REWRITER_typedef_UIVideoEditorController +typedef struct objc_object UIVideoEditorController; +typedef struct {} _objc_exc_UIVideoEditorController; +#endif + +struct UIVideoEditorController_IMPL { + struct UINavigationController_IMPL UINavigationController_IVARS; +}; + + +// + (BOOL)canEditVideoAtPath:(NSString *)videoPath __attribute__((availability(ios,introduced=3.1))); + +// @property(nullable, nonatomic,assign) id delegate; + +// @property(nonatomic, copy) NSString *videoPath; +// @property(nonatomic) NSTimeInterval videoMaximumDuration; +// @property(nonatomic) UIImagePickerControllerQualityType videoQuality; + +/* @end */ + + +__attribute__((availability(tvos,unavailable))) // @protocol UIVideoEditorControllerDelegate +/* @optional */ + + + +// - (void)videoEditorController:(UIVideoEditorController *)editor didSaveEditedVideoToPath:(NSString *)editedVideoPath; +// - (void)videoEditorController:(UIVideoEditorController *)editor didFailWithError:(NSError *)error; +// - (void)videoEditorControllerDidCancel:(UIVideoEditorController *)editor; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIWebViewNavigationType; enum { + UIWebViewNavigationTypeLinkClicked, + UIWebViewNavigationTypeFormSubmitted, + UIWebViewNavigationTypeBackForward, + UIWebViewNavigationTypeReload, + UIWebViewNavigationTypeFormResubmitted, + UIWebViewNavigationTypeOther +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIWebPaginationMode; enum { + UIWebPaginationModeUnpaginated, + UIWebPaginationModeLeftToRight, + UIWebPaginationModeTopToBottom, + UIWebPaginationModeBottomToTop, + UIWebPaginationModeRightToLeft +} __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIWebPaginationBreakingMode; enum { + UIWebPaginationBreakingModePage, + UIWebPaginationBreakingModeColumn +} __attribute__((availability(tvos,unavailable))); + +// @class UIWebViewInternal; +#ifndef _REWRITER_typedef_UIWebViewInternal +#define _REWRITER_typedef_UIWebViewInternal +typedef struct objc_object UIWebViewInternal; +typedef struct {} _objc_exc_UIWebViewInternal; +#endif + +// @protocol UIWebViewDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="No longer supported; please adopt WKWebView."))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(macos,unavailable))) +#ifndef _REWRITER_typedef_UIWebView +#define _REWRITER_typedef_UIWebView +typedef struct objc_object UIWebView; +typedef struct {} _objc_exc_UIWebView; +#endif + +struct UIWebView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// @property (nullable, nonatomic, assign) id delegate; + +// @property (nonatomic, readonly, strong) UIScrollView *scrollView __attribute__((availability(ios,introduced=5.0))); + +// - (void)loadRequest:(NSURLRequest *)request; +// - (void)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL; +// - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL; + +// @property (nullable, nonatomic, readonly, strong) NSURLRequest *request; + +// - (void)reload; +// - (void)stopLoading; + +// - (void)goBack; +// - (void)goForward; + +// @property (nonatomic, readonly, getter=canGoBack) BOOL canGoBack; +// @property (nonatomic, readonly, getter=canGoForward) BOOL canGoForward; +// @property (nonatomic, readonly, getter=isLoading) BOOL loading; + +// - (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; + +// @property (nonatomic) BOOL scalesPageToFit; + +// @property (nonatomic) BOOL detectsPhoneNumbers __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=""))); +// @property (nonatomic) UIDataDetectorTypes dataDetectorTypes __attribute__((availability(ios,introduced=3.0))); + +// @property (nonatomic) BOOL allowsInlineMediaPlayback __attribute__((availability(ios,introduced=4.0))); +// @property (nonatomic) BOOL mediaPlaybackRequiresUserAction __attribute__((availability(ios,introduced=4.0))); + +// @property (nonatomic) BOOL mediaPlaybackAllowsAirPlay __attribute__((availability(ios,introduced=5.0))); + +// @property (nonatomic) BOOL suppressesIncrementalRendering __attribute__((availability(ios,introduced=6.0))); + +// @property (nonatomic) BOOL keyboardDisplayRequiresUserAction __attribute__((availability(ios,introduced=6.0))); + +// @property (nonatomic) UIWebPaginationMode paginationMode __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) UIWebPaginationBreakingMode paginationBreakingMode __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat pageLength __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic) CGFloat gapBetweenPages __attribute__((availability(ios,introduced=7.0))); +// @property (nonatomic, readonly) NSUInteger pageCount __attribute__((availability(ios,introduced=7.0))); + +// @property (nonatomic) BOOL allowsPictureInPictureMediaPlayback __attribute__((availability(ios,introduced=9.0))); + +// @property (nonatomic) BOOL allowsLinkPreview __attribute__((availability(ios,introduced=9.0))); +/* @end */ + + +__attribute__((availability(tvos,unavailable))) // @protocol UIWebViewDelegate + +/* @optional */ +// - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="No longer supported."))); +// - (void)webViewDidStartLoad:(UIWebView *)webView __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="No longer supported."))); +// - (void)webViewDidFinishLoad:(UIWebView *)webView __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="No longer supported."))); +// - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error __attribute__((availability(ios,introduced=2.0,deprecated=12.0,message="No longer supported."))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef CGFloat UIWindowLevel __attribute__((swift_wrapper(struct))); + +// @class UIEvent; +#ifndef _REWRITER_typedef_UIEvent +#define _REWRITER_typedef_UIEvent +typedef struct objc_object UIEvent; +typedef struct {} _objc_exc_UIEvent; +#endif + +#ifndef _REWRITER_typedef_UIScreen +#define _REWRITER_typedef_UIScreen +typedef struct objc_object UIScreen; +typedef struct {} _objc_exc_UIScreen; +#endif + +#ifndef _REWRITER_typedef_NSUndoManager +#define _REWRITER_typedef_NSUndoManager +typedef struct objc_object NSUndoManager; +typedef struct {} _objc_exc_NSUndoManager; +#endif + +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +#ifndef _REWRITER_typedef_UIWindowScene +#define _REWRITER_typedef_UIWindowScene +typedef struct objc_object UIWindowScene; +typedef struct {} _objc_exc_UIWindowScene; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=2.0))) +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +struct UIWindow_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + + +// - (instancetype)initWithWindowScene:(UIWindowScene *)windowScene __attribute__((availability(ios,introduced=13.0))); + + + +// @property(nullable, nonatomic, weak) UIWindowScene *windowScene __attribute__((availability(ios,introduced=13.0))); + + +// @property(nonatomic, setter=setCanResizeToFitContent:) BOOL canResizeToFitContent __attribute__((availability(macCatalyst,introduced=13.0))); + +// @property(nonatomic,strong) UIScreen *screen __attribute__((availability(ios,introduced=3.2))); +// - (void)setScreen:(UIScreen *)screen __attribute__((availability(ios,introduced=3.2,deprecated=13.0,replacement="setWindowScene:"))); + +// @property(nonatomic) UIWindowLevel windowLevel; +// @property(nonatomic,readonly,getter=isKeyWindow) BOOL keyWindow; +// - (void)becomeKeyWindow; +// - (void)resignKeyWindow; + +// - (void)makeKeyWindow; +// - (void)makeKeyAndVisible; + +// @property(nullable, nonatomic,strong) UIViewController *rootViewController __attribute__((availability(ios,introduced=4.0))); + +// - (void)sendEvent:(UIEvent *)event; + +// - (CGPoint)convertPoint:(CGPoint)point toWindow:(nullable UIWindow *)window; +// - (CGPoint)convertPoint:(CGPoint)point fromWindow:(nullable UIWindow *)window; +// - (CGRect)convertRect:(CGRect)rect toWindow:(nullable UIWindow *)window; +// - (CGRect)convertRect:(CGRect)rect fromWindow:(nullable UIWindow *)window; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) const UIWindowLevel UIWindowLevelNormal; +extern "C" __attribute__((visibility ("default"))) const UIWindowLevel UIWindowLevelAlert; +extern "C" __attribute__((visibility ("default"))) const UIWindowLevel UIWindowLevelStatusBar __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIWindowDidBecomeVisibleNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIWindowDidBecomeHiddenNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIWindowDidBecomeKeyNotification; +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIWindowDidResignKeyNotification; + + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardWillShowNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardDidShowNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardWillHideNotification __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardDidHideNotification __attribute__((availability(tvos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardFrameBeginUserInfoKey __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardFrameEndUserInfoKey __attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardAnimationDurationUserInfoKey __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardAnimationCurveUserInfoKey __attribute__((availability(ios,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardIsLocalUserInfoKey __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardWillChangeFrameNotification __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UIKeyboardDidChangeFrameNotification __attribute__((availability(ios,introduced=5.0))) __attribute__((availability(tvos,unavailable))); + + +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardCenterBeginUserInfoKey __attribute__((availability(ios,introduced=2.0,deprecated=3.2,message=""))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardCenterEndUserInfoKey __attribute__((availability(ios,introduced=2.0,deprecated=3.2,message=""))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) NSString *const UIKeyboardBoundsUserInfoKey __attribute__((availability(ios,introduced=2.0,deprecated=3.2,message=""))) __attribute__((availability(tvos,unavailable))); +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @class UIDragPreview; +#ifndef _REWRITER_typedef_UIDragPreview +#define _REWRITER_typedef_UIDragPreview +typedef struct objc_object UIDragPreview; +typedef struct {} _objc_exc_UIDragPreview; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +struct UIDragItem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithItemProvider:(NSItemProvider *)itemProvider __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, readonly) __kindof NSItemProvider *itemProvider; + + + + +// @property (nonatomic, strong, nullable) id localObject; +// @property (nonatomic, copy, nullable) UIDragPreview * _Nullable (^previewProvider)(void); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIDragPreviewParameters; +#ifndef _REWRITER_typedef_UIDragPreviewParameters +#define _REWRITER_typedef_UIDragPreviewParameters +typedef struct objc_object UIDragPreviewParameters; +typedef struct {} _objc_exc_UIDragPreviewParameters; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDragPreview +#define _REWRITER_typedef_UIDragPreview +typedef struct objc_object UIDragPreview; +typedef struct {} _objc_exc_UIDragPreview; +#endif + +struct UIDragPreview_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (instancetype)initWithView:(UIView *)view parameters:(UIDragPreviewParameters *)parameters __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initWithView:(UIView *)view; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, readonly) UIView *view; + +// @property (nonatomic, readonly, copy) UIDragPreviewParameters *parameters; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIBezierPath; +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPreviewParameters +#define _REWRITER_typedef_UIPreviewParameters +typedef struct objc_object UIPreviewParameters; +typedef struct {} _objc_exc_UIPreviewParameters; +#endif + +struct UIPreviewParameters_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (instancetype)initWithTextLineRects:(NSArray *)textLineRects; + + + + + +// @property (nonatomic, copy, nullable) UIBezierPath *visiblePath; + + + + +// @property (nonatomic, copy, null_resettable) UIColor *backgroundColor; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDragPreviewParameters +#define _REWRITER_typedef_UIDragPreviewParameters +typedef struct objc_object UIDragPreviewParameters; +typedef struct {} _objc_exc_UIDragPreviewParameters; +#endif + +struct UIDragPreviewParameters_IMPL { + struct UIPreviewParameters_IMPL UIPreviewParameters_IVARS; +}; + + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIDragItem; +#ifndef _REWRITER_typedef_UIDragItem +#define _REWRITER_typedef_UIDragItem +typedef struct objc_object UIDragItem; +typedef struct {} _objc_exc_UIDragItem; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDragDropSession +// @property (nonatomic, readonly) NSArray *items; + + + +// - (CGPoint)locationInView:(UIView *)view; +// @property (nonatomic, readonly) BOOL allowsMoveOperation; + + + + + + +// @property (nonatomic, readonly, getter=isRestrictedToDraggingApplication) BOOL restrictedToDraggingApplication; + + + + + +// - (BOOL)hasItemsConformingToTypeIdentifiers:(NSArray *)typeIdentifiers; + + + +// - (BOOL)canLoadObjectsOfClass:(Class)aClass; + +/* @end */ + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDragSession + + + + +// @property (nonatomic, strong, nullable) id localContext; + +/* @end */ + + + +typedef NSUInteger UIDropSessionProgressIndicatorStyle; enum { + UIDropSessionProgressIndicatorStyleNone, + UIDropSessionProgressIndicatorStyleDefault, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIDropSession + + + + +// @property (nonatomic, readonly, nullable) id localDragSession; +// @property (nonatomic) UIDropSessionProgressIndicatorStyle progressIndicatorStyle; +// - (NSProgress *)loadObjectsOfClass:(Class)aClass completion:(void(^)(NSArray<__kindof id> *objects))completion; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIPreviewParameters; +#ifndef _REWRITER_typedef_UIPreviewParameters +#define _REWRITER_typedef_UIPreviewParameters +typedef struct objc_object UIPreviewParameters; +typedef struct {} _objc_exc_UIPreviewParameters; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPreviewTarget +#define _REWRITER_typedef_UIPreviewTarget +typedef struct objc_object UIPreviewTarget; +typedef struct {} _objc_exc_UIPreviewTarget; +#endif + +struct UIPreviewTarget_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (instancetype)initWithContainer:(UIView *)container center:(CGPoint)center transform:(CGAffineTransform)transform __attribute__((objc_designated_initializer)); + + + +// - (instancetype)initWithContainer:(UIView *)container center:(CGPoint)center; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, readonly) UIView *container; +// @property (nonatomic, readonly) CGPoint center; +// @property (nonatomic, readonly) CGAffineTransform transform; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UITargetedPreview +#define _REWRITER_typedef_UITargetedPreview +typedef struct objc_object UITargetedPreview; +typedef struct {} _objc_exc_UITargetedPreview; +#endif + +struct UITargetedPreview_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (instancetype)initWithView:(UIView *)view parameters:(__kindof UIPreviewParameters *)parameters target:(__kindof UIPreviewTarget *)target __attribute__((objc_designated_initializer)); + + + + +// - (instancetype)initWithView:(UIView *)view parameters:(__kindof UIPreviewParameters *)parameters; + + + + + +// - (instancetype)initWithView:(UIView *)view; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, readonly) __kindof UIPreviewTarget *target; + +// @property (nonatomic, readonly) UIView *view; + +// @property (nonatomic, readonly, copy) __kindof UIPreviewParameters *parameters; + + + + + +// @property (nonatomic, readonly) CGSize size; +// - (__kindof UITargetedPreview *)retargetedPreviewWithTarget:(__kindof UIPreviewTarget *)newTarget; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIDragPreviewParameters; +#ifndef _REWRITER_typedef_UIDragPreviewParameters +#define _REWRITER_typedef_UIDragPreviewParameters +typedef struct objc_object UIDragPreviewParameters; +typedef struct {} _objc_exc_UIDragPreviewParameters; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDragPreviewTarget +#define _REWRITER_typedef_UIDragPreviewTarget +typedef struct objc_object UIDragPreviewTarget; +typedef struct {} _objc_exc_UIDragPreviewTarget; +#endif + +struct UIDragPreviewTarget_IMPL { + struct UIPreviewTarget_IMPL UIPreviewTarget_IVARS; +}; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UITargetedDragPreview +#define _REWRITER_typedef_UITargetedDragPreview +typedef struct objc_object UITargetedDragPreview; +typedef struct {} _objc_exc_UITargetedDragPreview; +#endif + +struct UITargetedDragPreview_IMPL { + struct UITargetedPreview_IMPL UITargetedPreview_IVARS; +}; + +// - (UITargetedDragPreview *)retargetedPreviewWithTarget:(UIDragPreviewTarget *)newTarget; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin +typedef NSInteger UISpringLoadedInteractionEffectState; enum { + UISpringLoadedInteractionEffectStateInactive, + UISpringLoadedInteractionEffectStatePossible, + UISpringLoadedInteractionEffectStateActivating, + UISpringLoadedInteractionEffectStateActivated, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +// @protocol UISpringLoadedInteractionBehavior, UISpringLoadedInteractionEffect, UISpringLoadedInteractionContext; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UISpringLoadedInteraction +#define _REWRITER_typedef_UISpringLoadedInteraction +typedef struct objc_object UISpringLoadedInteraction; +typedef struct {} _objc_exc_UISpringLoadedInteraction; +#endif + +struct UISpringLoadedInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initWithInteractionBehavior:(nullable id)interactionBehavior interactionEffect:(nullable id)interactionEffect activationHandler:(void(^)(UISpringLoadedInteraction *interaction, id context))handler __attribute__((objc_designated_initializer)); +// - (instancetype)initWithActivationHandler:(void(^)(UISpringLoadedInteraction *interaction, id context))handler; + +// @property (nonatomic, strong, readonly) id interactionBehavior; +// @property (nonatomic, strong, readonly) id interactionEffect; + +/* @end */ + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UISpringLoadedInteractionBehavior + +/* @required */ +// - (BOOL)shouldAllowInteraction:(UISpringLoadedInteraction *)interaction withContext:(id)context; + +/* @optional */ + + + + + +// - (void)interactionDidFinish:(UISpringLoadedInteraction *)interaction; + +/* @end */ + + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UISpringLoadedInteractionEffect + +/* @required */ + + + + + + + +// - (void)interaction:(UISpringLoadedInteraction *)interaction didChangeWithContext:(id)context; + +/* @end */ + + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UISpringLoadedInteractionContext + + + + +// @property (nonatomic, readonly) UISpringLoadedInteractionEffectState state; + + + + +// @property (nonatomic, strong, nullable) UIView *targetView; + + + + + +// @property (nonatomic, strong, nullable) id targetItem; + + + + + + + +// - (CGPoint)locationInView:(nullable UIView *)view; + +/* @end */ + +#pragma clang assume_nonnull end + + + + +#pragma clang assume_nonnull begin + +// @class UIColor; +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +// @class UIBlurEffect; +#ifndef _REWRITER_typedef_UIBlurEffect +#define _REWRITER_typedef_UIBlurEffect +typedef struct objc_object UIBlurEffect; +typedef struct {} _objc_exc_UIBlurEffect; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UIBarAppearance +#define _REWRITER_typedef_UIBarAppearance +typedef struct objc_object UIBarAppearance; +typedef struct {} _objc_exc_UIBarAppearance; +#endif + +struct UIBarAppearance_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)init; + + +// - (instancetype)initWithIdiom:(UIUserInterfaceIdiom)idiom __attribute__((objc_designated_initializer)); + + +// @property (nonatomic, readonly, assign) UIUserInterfaceIdiom idiom; + + +// - (instancetype)initWithBarAppearance:(UIBarAppearance *)barAppearance __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)copy; + + +// - (void)configureWithDefaultBackground; + + +// - (void)configureWithOpaqueBackground; + + +// - (void)configureWithTransparentBackground; + + +// @property (nonatomic, readwrite, copy, nullable) UIBlurEffect *backgroundEffect; + +// @property (nonatomic, readwrite, copy, nullable) UIColor *backgroundColor; + +// @property (nonatomic, readwrite, strong, nullable) UIImage *backgroundImage; + +// @property (nonatomic, readwrite, assign) UIViewContentMode backgroundImageContentMode; + + +// @property (nonatomic, readwrite, copy, nullable) UIColor *shadowColor; + +// @property (nonatomic, readwrite, strong, nullable) UIImage *shadowImage; + +/* @end */ + +#pragma clang assume_nonnull end +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UIBarButtonItemStateAppearance +#define _REWRITER_typedef_UIBarButtonItemStateAppearance +typedef struct objc_object UIBarButtonItemStateAppearance; +typedef struct {} _objc_exc_UIBarButtonItemStateAppearance; +#endif + +struct UIBarButtonItemStateAppearance_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + +// @property (nonatomic, readwrite, copy) NSDictionary *titleTextAttributes; + + +// @property (nonatomic, readwrite, assign) UIOffset titlePositionAdjustment; + + +// @property (nonatomic, readwrite, strong, nullable) UIImage *backgroundImage; + + +// @property (nonatomic, readwrite, assign) UIOffset backgroundImagePositionAdjustment; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UIBarButtonItemAppearance +#define _REWRITER_typedef_UIBarButtonItemAppearance +typedef struct objc_object UIBarButtonItemAppearance; +typedef struct {} _objc_exc_UIBarButtonItemAppearance; +#endif + +struct UIBarButtonItemAppearance_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)init; + + +// - (instancetype)initWithStyle:(UIBarButtonItemStyle)style __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)copy; + + +// - (void)configureWithDefaultForStyle:(UIBarButtonItemStyle)style; + + +// @property (nonatomic, readonly, strong) UIBarButtonItemStateAppearance *normal; + + +// @property (nonatomic, readonly, strong) UIBarButtonItemStateAppearance *highlighted; + + +// @property (nonatomic, readonly, strong) UIBarButtonItemStateAppearance *disabled; + + +// @property (nonatomic, readonly, strong) UIBarButtonItemStateAppearance *focused; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UINavigationBarAppearance +#define _REWRITER_typedef_UINavigationBarAppearance +typedef struct objc_object UINavigationBarAppearance; +typedef struct {} _objc_exc_UINavigationBarAppearance; +#endif + +struct UINavigationBarAppearance_IMPL { + struct UIBarAppearance_IMPL UIBarAppearance_IVARS; +}; + + + +// @property (nonatomic, readwrite, copy) NSDictionary *titleTextAttributes; + +// @property (nonatomic, readwrite, assign) UIOffset titlePositionAdjustment; + + +// @property (nonatomic, readwrite, copy) NSDictionary *largeTitleTextAttributes; + + +// @property (nonatomic, readwrite, copy) UIBarButtonItemAppearance *buttonAppearance; + + +// @property (nonatomic, readwrite, copy) UIBarButtonItemAppearance *doneButtonAppearance; + + +// @property (nonatomic, readwrite, copy) UIBarButtonItemAppearance *backButtonAppearance; + + +// @property (nonatomic, readonly, strong) UIImage *backIndicatorImage; + +// @property (nonatomic, readonly, strong) UIImage *backIndicatorTransitionMaskImage; + +// - (void)setBackIndicatorImage:(nullable UIImage *)backIndicatorImage transitionMaskImage:(nullable UIImage *)backIndicatorTransitionMaskImage; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIToolbarAppearance +#define _REWRITER_typedef_UIToolbarAppearance +typedef struct objc_object UIToolbarAppearance; +typedef struct {} _objc_exc_UIToolbarAppearance; +#endif + +struct UIToolbarAppearance_IMPL { + struct UIBarAppearance_IMPL UIBarAppearance_IVARS; +}; + + + +// @property (nonatomic, readwrite, copy) UIBarButtonItemAppearance *buttonAppearance; + + +// @property (nonatomic, readwrite, copy) UIBarButtonItemAppearance *doneButtonAppearance; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UITabBarItemStateAppearance +#define _REWRITER_typedef_UITabBarItemStateAppearance +typedef struct objc_object UITabBarItemStateAppearance; +typedef struct {} _objc_exc_UITabBarItemStateAppearance; +#endif + +struct UITabBarItemStateAppearance_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + +// @property (nonatomic, readwrite, copy) NSDictionary *titleTextAttributes; + + +// @property (nonatomic, readwrite, assign) UIOffset titlePositionAdjustment; + + +// @property (nonatomic, readwrite, copy, nullable) UIColor *iconColor; + + +// @property (nonatomic, readwrite, assign) UIOffset badgePositionAdjustment; + + +// @property (nonatomic, readwrite, copy, nullable) UIColor *badgeBackgroundColor; + + +// @property (nonatomic, readwrite, copy) NSDictionary *badgeTextAttributes; + + +// @property (nonatomic, readwrite, assign) UIOffset badgeTitlePositionAdjustment; + +/* @end */ + + +typedef NSInteger UITabBarItemAppearanceStyle; enum { + UITabBarItemAppearanceStyleStacked, + UITabBarItemAppearanceStyleInline, + UITabBarItemAppearanceStyleCompactInline, +}; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UITabBarItemAppearance +#define _REWRITER_typedef_UITabBarItemAppearance +typedef struct objc_object UITabBarItemAppearance; +typedef struct {} _objc_exc_UITabBarItemAppearance; +#endif + +struct UITabBarItemAppearance_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)init; + + +// - (instancetype)initWithStyle:(UITabBarItemAppearanceStyle)style __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// - (instancetype)copy; + + +// - (void)configureWithDefaultForStyle:(UITabBarItemAppearanceStyle)style; + + +// @property (nonatomic, readonly, strong) UITabBarItemStateAppearance *normal; + + +// @property (nonatomic, readonly, strong) UITabBarItemStateAppearance *selected; + + +// @property (nonatomic, readonly, strong) UITabBarItemStateAppearance *disabled; + + +// @property (nonatomic, readonly, strong) UITabBarItemStateAppearance *focused; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,introduced=13.0))) +#ifndef _REWRITER_typedef_UITabBarAppearance +#define _REWRITER_typedef_UITabBarAppearance +typedef struct objc_object UITabBarAppearance; +typedef struct {} _objc_exc_UITabBarAppearance; +#endif + +struct UITabBarAppearance_IMPL { + struct UIBarAppearance_IMPL UIBarAppearance_IVARS; +}; + + + +// @property (nonatomic, readwrite, copy) UITabBarItemAppearance *stackedLayoutAppearance; + + +// @property (nonatomic, readwrite, copy) UITabBarItemAppearance *inlineLayoutAppearance; + + +// @property (nonatomic, readwrite, copy) UITabBarItemAppearance *compactInlineLayoutAppearance; + + +// @property (nonatomic, readwrite, copy, nullable) UIColor *selectionIndicatorTintColor; + +// @property (nonatomic, readwrite, strong, nullable) UIImage *selectionIndicatorImage; + + +// @property (nonatomic, readwrite, assign) UITabBarItemPositioning stackedItemPositioning; +// @property (nonatomic, readwrite, assign) CGFloat stackedItemWidth; +// @property (nonatomic, readwrite, assign) CGFloat stackedItemSpacing; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UIActivity; +#ifndef _REWRITER_typedef_UIActivity +#define _REWRITER_typedef_UIActivity +typedef struct objc_object UIActivity; +typedef struct {} _objc_exc_UIActivity; +#endif + + +typedef NSString * UIActivityItemsConfigurationMetadataKey __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) UIActivityItemsConfigurationMetadataKey const UIActivityItemsConfigurationMetadataKeyTitle __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityItemsConfigurationMetadataKey const UIActivityItemsConfigurationMetadataKeyMessageBody __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +typedef NSString * UIActivityItemsConfigurationPreviewIntent __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) UIActivityItemsConfigurationPreviewIntent const UIActivityItemsConfigurationPreviewIntentFullSize __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityItemsConfigurationPreviewIntent const UIActivityItemsConfigurationPreviewIntentThumbnail __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +typedef NSString * UIActivityItemsConfigurationInteraction __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +extern "C" __attribute__((visibility ("default"))) UIActivityItemsConfigurationInteraction const UIActivityItemsConfigurationInteractionShare __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @protocol UIActivityItemsConfigurationReading + +// @property (nonatomic, readonly, copy) NSArray *itemProvidersForActivityItemsConfiguration; + +/* @optional */ + +// - (BOOL)activityItemsConfigurationSupportsInteraction:(UIActivityItemsConfigurationInteraction)interaction __attribute__((swift_name("activityItemsConfigurationSupports(interaction:)"))); + +// - (nullable id)activityItemsConfigurationMetadataForKey:(UIActivityItemsConfigurationMetadataKey)key __attribute__((swift_name("activityItemsConfigurationMetadata(key:)"))); + +// - (nullable id)activityItemsConfigurationMetadataForItemAtIndex:(NSInteger)index key:(UIActivityItemsConfigurationMetadataKey)key; + +// - (nullable NSItemProvider *)activityItemsConfigurationPreviewForItemAtIndex:(NSInteger)index intent:(UIActivityItemsConfigurationPreviewIntent)intent suggestedSize:(CGSize)suggestedSize; + +// @property (nonatomic, readonly, nullable, copy) NSArray *applicationActivitiesForActivityItemsConfiguration; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIActivity; +#ifndef _REWRITER_typedef_UIActivity +#define _REWRITER_typedef_UIActivity +typedef struct objc_object UIActivity; +typedef struct {} _objc_exc_UIActivity; +#endif + +// @class UIViewController; +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + +// @class UIView; +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) + +#ifndef _REWRITER_typedef_UIActivityItemsConfiguration +#define _REWRITER_typedef_UIActivityItemsConfiguration +typedef struct objc_object UIActivityItemsConfiguration; +typedef struct {} _objc_exc_UIActivityItemsConfiguration; +#endif + +struct UIActivityItemsConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, strong, nullable) id localObject; +// @property (nonatomic, copy) NSArray *supportedInteractions; +// @property (nonatomic, strong, nullable) id _Nullable (^metadataProvider)(UIActivityItemsConfigurationMetadataKey key); +// @property (nonatomic, strong, nullable) id _Nullable (^perItemMetadataProvider)(NSInteger index, UIActivityItemsConfigurationMetadataKey key); +// @property (nonatomic, strong, nullable) NSItemProvider *_Nullable (^previewProvider)(NSInteger index, UIActivityItemsConfigurationPreviewIntent intent, CGSize suggestedSize); +// @property (nonatomic, strong, nullable) NSArray *(^applicationActivitiesProvider)(void); + +// + (instancetype)activityItemsConfigurationWithObjects:(NSArray > *)objects; +// + (instancetype)activityItemsConfigurationWithItemProviders:(NSArray *)itemProviders; + +// - (instancetype)initWithObjects:(NSArray > *)objects __attribute__((objc_designated_initializer)); +// - (instancetype)initWithItemProviders:(NSArray *)itemProviders __attribute__((objc_designated_initializer)); + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UIActivityItemsConfigurationReading; + +__attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +// @interface UIResponder (UIActivityItemsConfiguration) + +// @property (nonatomic, strong, nullable) id activityItemsConfiguration __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +// @class NSAttributedString; +#ifndef _REWRITER_typedef_NSAttributedString +#define _REWRITER_typedef_NSAttributedString +typedef struct objc_object NSAttributedString; +typedef struct {} _objc_exc_NSAttributedString; +#endif + +// @class NSFileWrapper; +#ifndef _REWRITER_typedef_NSFileWrapper +#define _REWRITER_typedef_NSFileWrapper +typedef struct objc_object NSFileWrapper; +typedef struct {} _objc_exc_NSFileWrapper; +#endif + +// @class NSURL; +#ifndef _REWRITER_typedef_NSURL +#define _REWRITER_typedef_NSURL +typedef struct objc_object NSURL; +typedef struct {} _objc_exc_NSURL; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSFontAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSParagraphStyleAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSForegroundColorAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSBackgroundColorAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSLigatureAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSKernAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSStrikethroughStyleAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSUnderlineStyleAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSStrokeColorAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSStrokeWidthAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSShadowAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSTextEffectAttributeName __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSAttachmentAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSLinkAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSBaselineOffsetAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSUnderlineColorAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSStrikethroughColorAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSObliquenessAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSExpansionAttributeName __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSWritingDirectionAttributeName __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringKey const NSVerticalGlyphFormAttributeName __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=6.0))); + + + + + + +typedef NSInteger NSUnderlineStyle; enum { + NSUnderlineStyleNone = 0x00, + NSUnderlineStyleSingle = 0x01, + NSUnderlineStyleThick __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x02, + NSUnderlineStyleDouble __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x09, + + NSUnderlineStylePatternSolid __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x0000, + NSUnderlineStylePatternDot __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x0100, + NSUnderlineStylePatternDash __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x0200, + NSUnderlineStylePatternDashDot __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x0300, + NSUnderlineStylePatternDashDotDot __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x0400, + + NSUnderlineStyleByWord __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) = 0x8000 +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); + + +typedef NSInteger NSWritingDirectionFormatType; enum { + NSWritingDirectionEmbedding = (0 << 1), + NSWritingDirectionOverride = (1 << 1) +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + + +typedef NSString * NSTextEffectStyle __attribute__((swift_wrapper(enum))); +extern "C" __attribute__((visibility ("default"))) NSTextEffectStyle const NSTextEffectLetterpressStyle __attribute__((availability(macos,introduced=10.10))) __attribute__((availability(ios,introduced=7.0))); + + + + +// @interface NSMutableAttributedString (NSAttributedStringAttributeFixing) + +// - (void)fixAttributesInRange:(NSRange)range __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + + + + +typedef NSString * NSAttributedStringDocumentType __attribute__((swift_wrapper(struct))); + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentType const NSPlainTextDocumentType __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentType const NSRTFTextDocumentType __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentType const NSRTFDTextDocumentType __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentType const NSHTMLTextDocumentType __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +typedef NSString * NSTextLayoutSectionKey __attribute__((swift_wrapper(enum))); + + +extern "C" __attribute__((visibility ("default"))) NSTextLayoutSectionKey const NSTextLayoutSectionOrientation __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSTextLayoutSectionKey const NSTextLayoutSectionRange __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))); + + +typedef NSInteger NSTextScalingType; enum { + NSTextScalingStandard = 0, + NSTextScalingiOS +} __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + +typedef NSString * NSAttributedStringDocumentAttributeKey __attribute__((swift_wrapper(struct))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSDocumentTypeDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSCharacterEncodingDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSDefaultAttributesDocumentAttribute __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSPaperSizeDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSPaperMarginDocumentAttribute __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSViewSizeDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSViewZoomDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSViewModeDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSReadOnlyDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSBackgroundColorDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSHyphenationFactorDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSDefaultTabIntervalDocumentAttribute __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSTextLayoutSectionsAttribute __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))); + + + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSTextScalingDocumentAttribute __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSSourceTextScalingDocumentAttribute __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentAttributeKey const NSCocoaVersionDocumentAttribute __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=13.0))); + +typedef NSString * NSAttributedStringDocumentReadingOptionKey __attribute__((swift_wrapper(struct))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentReadingOptionKey const NSDocumentTypeDocumentOption; +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentReadingOptionKey const NSDefaultAttributesDocumentOption; +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentReadingOptionKey const NSCharacterEncodingDocumentOption; + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentReadingOptionKey const NSTargetTextScalingDocumentOption __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + +extern "C" __attribute__((visibility ("default"))) NSAttributedStringDocumentReadingOptionKey const NSSourceTextScalingDocumentOption __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))); + + +// @interface NSAttributedString (NSAttributedStringDocumentFormats) + +// - (nullable instancetype)initWithURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(macos,introduced=10.4))) __attribute__((availability(ios,introduced=9.0))); +// - (nullable instancetype)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + +// - (nullable NSData *)dataFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + +// - (nullable NSFileWrapper *)fileWrapperFromRange:(NSRange)range documentAttributes:(NSDictionary *)dict error:(NSError **)error __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + +// @interface NSMutableAttributedString (NSMutableAttributedStringDocumentFormats) + +// - (BOOL)readFromURL:(NSURL *)url options:(NSDictionary *)opts documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(macosx,introduced=10.5))) __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); +// - (BOOL)readFromData:(NSData *)data options:(NSDictionary *)opts documentAttributes:(NSDictionary * _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + + + +// @interface NSAttributedString (NSAttributedStringKitAdditions) + +// - (BOOL)containsAttachmentsInRange:(NSRange)range __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); +/* @end */ + + +// @interface NSAttributedString (NSAttributedString_ItemProvider) +/* @end */ + + + + + + +static const NSUnderlineStyle NSUnderlinePatternSolid = NSUnderlineStylePatternSolid; +static const NSUnderlineStyle NSUnderlinePatternDot = NSUnderlineStylePatternDot; +static const NSUnderlineStyle NSUnderlinePatternDash = NSUnderlineStylePatternDash; +static const NSUnderlineStyle NSUnderlinePatternDashDot = NSUnderlineStylePatternDashDot; +static const NSUnderlineStyle NSUnderlinePatternDashDotDot = NSUnderlineStylePatternDashDotDot; +static const NSUnderlineStyle NSUnderlineByWord = NSUnderlineStyleByWord; + + +typedef NSInteger NSTextWritingDirection; enum { + NSTextWritingDirectionEmbedding = (0 << 1), + NSTextWritingDirectionOverride = (1 << 1) +} __attribute__((availability(ios,introduced=7.0,deprecated=9.0,replacement="NSWritingDirectionFormatType"))) __attribute__((availability(tvos,unavailable))); + +// @interface NSAttributedString(NSDeprecatedKitAdditions) +// - (nullable instancetype)initWithFileURL:(NSURL *)url options:(NSDictionary *)options documentAttributes:(NSDictionary* _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(ios,introduced=7.0,deprecated=9.0,replacement="initWithURL:options:documentAttributes:error:"))) __attribute__((availability(tvos,unavailable))); +/* @end */ + + +// @interface NSMutableAttributedString (NSDeprecatedKitAdditions) +// - (BOOL)readFromFileURL:(NSURL *)url options:(NSDictionary *)opts documentAttributes:(NSDictionary* _Nullable * _Nullable)dict error:(NSError **)error __attribute__((availability(ios,introduced=7.0,deprecated=9.0,replacement="readFromURL:options:documentAttributes:error:"))) __attribute__((availability(tvos,unavailable))); +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin +// @class NSLayoutConstraint; +#ifndef _REWRITER_typedef_NSLayoutConstraint +#define _REWRITER_typedef_NSLayoutConstraint +typedef struct objc_object NSLayoutConstraint; +typedef struct {} _objc_exc_NSLayoutConstraint; +#endif + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + +extern "C" __attribute((visibility("default"))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLayoutAnchor +#define _REWRITER_typedef_NSLayoutAnchor +typedef struct objc_object NSLayoutAnchor; +typedef struct {} _objc_exc_NSLayoutAnchor; +#endif + +struct NSLayoutAnchor_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutAnchor *)anchor __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutAnchor *)anchor __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutAnchor *)anchor __attribute__((warn_unused_result)); + + +// - (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutAnchor *)anchor constant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutAnchor *)anchor constant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutAnchor *)anchor constant:(CGFloat)c __attribute__((warn_unused_result)); + + +// @property (readonly, copy) NSString *name __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (readonly, nullable, weak) id item __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (readonly) BOOL hasAmbiguousLayout __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// @property (readonly) NSArray *constraintsAffectingLayout __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,unavailable))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @class NSLayoutXAxisAnchor; +#ifndef _REWRITER_typedef_NSLayoutXAxisAnchor +#define _REWRITER_typedef_NSLayoutXAxisAnchor +typedef struct objc_object NSLayoutXAxisAnchor; +typedef struct {} _objc_exc_NSLayoutXAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutYAxisAnchor +#define _REWRITER_typedef_NSLayoutYAxisAnchor +typedef struct objc_object NSLayoutYAxisAnchor; +typedef struct {} _objc_exc_NSLayoutYAxisAnchor; +#endif + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + + +extern "C" __attribute((visibility("default"))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLayoutXAxisAnchor +#define _REWRITER_typedef_NSLayoutXAxisAnchor +typedef struct objc_object NSLayoutXAxisAnchor; +typedef struct {} _objc_exc_NSLayoutXAxisAnchor; +#endif + +struct NSLayoutXAxisAnchor_IMPL { + struct NSLayoutAnchor_IMPL NSLayoutAnchor_IVARS; +}; + + + +// - (NSLayoutDimension *)anchorWithOffsetToAnchor:(NSLayoutXAxisAnchor *)otherAnchor __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + + +extern "C" __attribute((visibility("default"))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLayoutYAxisAnchor +#define _REWRITER_typedef_NSLayoutYAxisAnchor +typedef struct objc_object NSLayoutYAxisAnchor; +typedef struct {} _objc_exc_NSLayoutYAxisAnchor; +#endif + +struct NSLayoutYAxisAnchor_IMPL { + struct NSLayoutAnchor_IMPL NSLayoutAnchor_IVARS; +}; + + + +// - (NSLayoutDimension *)anchorWithOffsetToAnchor:(NSLayoutYAxisAnchor *)otherAnchor __attribute__((availability(macos,introduced=10.12))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(tvos,introduced=10.0))); + +/* @end */ + + + +extern "C" __attribute((visibility("default"))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_NSLayoutDimension +#define _REWRITER_typedef_NSLayoutDimension +typedef struct objc_object NSLayoutDimension; +typedef struct {} _objc_exc_NSLayoutDimension; +#endif + +struct NSLayoutDimension_IMPL { + struct NSLayoutAnchor_IMPL NSLayoutAnchor_IVARS; +}; + + + +// - (NSLayoutConstraint *)constraintEqualToConstant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToConstant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToConstant:(CGFloat)c __attribute__((warn_unused_result)); + + +// - (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m __attribute__((warn_unused_result)); + + +// - (NSLayoutConstraint *)constraintEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m constant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m constant:(CGFloat)c __attribute__((warn_unused_result)); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToAnchor:(NSLayoutDimension *)anchor multiplier:(CGFloat)m constant:(CGFloat)c __attribute__((warn_unused_result)); + +/* @end */ + + + + +// @interface NSLayoutXAxisAnchor (UIViewDynamicSystemSpacingSupport) + + + + + +// - (NSLayoutConstraint *)constraintEqualToSystemSpacingAfterAnchor:(NSLayoutXAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToSystemSpacingAfterAnchor:(NSLayoutXAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToSystemSpacingAfterAnchor:(NSLayoutXAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); + +/* @end */ + + + +// @interface NSLayoutYAxisAnchor (UIViewDynamicSystemSpacingSupport) + + + + + + + +// - (NSLayoutConstraint *)constraintEqualToSystemSpacingBelowAnchor:(NSLayoutYAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSLayoutConstraint *)constraintGreaterThanOrEqualToSystemSpacingBelowAnchor:(NSLayoutYAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (NSLayoutConstraint *)constraintLessThanOrEqualToSystemSpacingBelowAnchor:(NSLayoutYAxisAnchor *)anchor multiplier:(CGFloat)multiplier __attribute__((warn_unused_result)) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +/* @end */ + +#pragma clang assume_nonnull end + +typedef NSInteger UIStackViewDistribution; enum { + + + + + + + UIStackViewDistributionFill = 0, + + + + + + + UIStackViewDistributionFillEqually, + + + + + UIStackViewDistributionFillProportionally, + + + + + + UIStackViewDistributionEqualSpacing, + UIStackViewDistributionEqualCentering, +} __attribute__((availability(ios,introduced=9.0))); + + + +typedef NSInteger UIStackViewAlignment; enum { + + + + UIStackViewAlignmentFill, + + + + + + UIStackViewAlignmentLeading, + UIStackViewAlignmentTop = UIStackViewAlignmentLeading, + UIStackViewAlignmentFirstBaseline, + + + + + UIStackViewAlignmentCenter, + + + + + + UIStackViewAlignmentTrailing, + UIStackViewAlignmentBottom = UIStackViewAlignmentTrailing, + UIStackViewAlignmentLastBaseline, +} __attribute__((availability(ios,introduced=9.0))); + + + + + + +static const CGFloat UIStackViewSpacingUseDefault __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 3.40282347e+38F; +static const CGFloat UIStackViewSpacingUseSystem __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))) = 1.17549435e-38F; +#pragma clang assume_nonnull begin +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) + +#ifndef _REWRITER_typedef_UIStackView +#define _REWRITER_typedef_UIStackView +typedef struct objc_object UIStackView; +typedef struct {} _objc_exc_UIStackView; +#endif + +struct UIStackView_IMPL { + struct UIView_IMPL UIView_IVARS; +}; + + +// - (instancetype)initWithFrame:(CGRect)frame __attribute__((objc_designated_initializer)); +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); +// - (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views; +// @property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews; +// - (void)addArrangedSubview:(UIView *)view; + + + + + + + +// - (void)removeArrangedSubview:(UIView *)view; + + + + + +// - (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex; + + + + +// @property(nonatomic) UILayoutConstraintAxis axis; + + + +// @property(nonatomic) UIStackViewDistribution distribution; + + + + +// @property(nonatomic) UIStackViewAlignment alignment; +// @property(nonatomic) CGFloat spacing; +// - (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// - (CGFloat)customSpacingAfterView:(UIView *)arrangedSubview __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,introduced=11.0))); +// @property(nonatomic,getter=isBaselineRelativeArrangement) BOOL baselineRelativeArrangement; + + + + +// @property(nonatomic,getter=isLayoutMarginsRelativeArrangement) BOOL layoutMarginsRelativeArrangement; + +/* @end */ + +#pragma clang assume_nonnull end +// @class NSArray; +#ifndef _REWRITER_typedef_NSArray +#define _REWRITER_typedef_NSArray +typedef struct objc_object NSArray; +typedef struct {} _objc_exc_NSArray; +#endif + +#ifndef _REWRITER_typedef_NSLayoutManager +#define _REWRITER_typedef_NSLayoutManager +typedef struct objc_object NSLayoutManager; +typedef struct {} _objc_exc_NSLayoutManager; +#endif + +#ifndef _REWRITER_typedef_NSNotification +#define _REWRITER_typedef_NSNotification +typedef struct objc_object NSNotification; +typedef struct {} _objc_exc_NSNotification; +#endif + + +// @protocol NSTextStorageDelegate; + +#pragma clang assume_nonnull begin + +typedef NSUInteger NSTextStorageEditActions; enum { + NSTextStorageEditedAttributes = (1 << 0), + NSTextStorageEditedCharacters = (1 << 1) +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_NSTextStorage +#define _REWRITER_typedef_NSTextStorage +typedef struct objc_object NSTextStorage; +typedef struct {} _objc_exc_NSTextStorage; +#endif + +struct NSTextStorage_IMPL { + struct NSMutableAttributedString_IMPL NSMutableAttributedString_IVARS; +}; + + + + + +// @property (readonly, copy, nonatomic) NSArray *layoutManagers; + + +// - (void)addLayoutManager:(NSLayoutManager *)aLayoutManager; + + +// - (void)removeLayoutManager:(NSLayoutManager *)aLayoutManager; + + + + + + +// @property (readonly, nonatomic) NSTextStorageEditActions editedMask; + + +// @property (readonly, nonatomic) NSRange editedRange; + + +// @property (readonly, nonatomic) NSInteger changeInLength; + + + + +// @property (nullable, weak, nonatomic) id delegate; + + + + + +// - (void)edited:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta; + + +// - (void)processEditing; + + + + + +// @property (readonly, nonatomic) BOOL fixesAttributesLazily; + + +// - (void)invalidateAttributesInRange:(NSRange)range; + + +// - (void)ensureAttributesAreFixedInRange:(NSRange)range; + +/* @end */ + + + + + +// @protocol NSTextStorageDelegate +/* @optional */ + + +// - (void)textStorage:(NSTextStorage *)textStorage willProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)textStorage:(NSTextStorage *)textStorage didProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const NSTextStorageWillProcessEditingNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const NSTextStorageDidProcessEditingNotification __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +#pragma clang assume_nonnull end + + + + +// @class NSTextContainer; +#ifndef _REWRITER_typedef_NSTextContainer +#define _REWRITER_typedef_NSTextContainer +typedef struct objc_object NSTextContainer; +typedef struct {} _objc_exc_NSTextContainer; +#endif + +// @class UIColor; +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + + +#pragma clang assume_nonnull begin + +// @protocol NSLayoutManagerDelegate; + + + +typedef NSInteger NSTextLayoutOrientation; enum { + NSTextLayoutOrientationHorizontal = 0, + NSTextLayoutOrientationVertical = 1, +} __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +typedef NSInteger NSGlyphProperty; enum { + NSGlyphPropertyNull = (1 << 0), + NSGlyphPropertyControlCharacter = (1 << 1), + NSGlyphPropertyElastic = (1 << 2), + NSGlyphPropertyNonBaseCharacter = (1 << 3) +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + +typedef NSInteger NSControlCharacterAction; enum { + NSControlCharacterActionZeroAdvancement = (1 << 0), + NSControlCharacterActionWhitespace = (1 << 1), + NSControlCharacterActionHorizontalTab = (1 << 2), + NSControlCharacterActionLineBreak = (1 << 3), + NSControlCharacterActionParagraphBreak = (1 << 4), + NSControlCharacterActionContainerBreak = (1 << 5) +} __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + +// @protocol NSTextLayoutOrientationProvider + +// @property (readonly, nonatomic) NSTextLayoutOrientation layoutOrientation __attribute__((availability(macos,introduced=10.7))) __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_NSLayoutManager +#define _REWRITER_typedef_NSLayoutManager +typedef struct objc_object NSLayoutManager; +typedef struct {} _objc_exc_NSLayoutManager; +#endif + +struct NSLayoutManager_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// - (instancetype)init __attribute__((objc_designated_initializer)); + +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + + + + + +// @property (nullable, assign, nonatomic) NSTextStorage *textStorage; + + + + + + +// @property (readonly, nonatomic) NSArray *textContainers; + + +// - (void)addTextContainer:(NSTextContainer *)container; + + +// - (void)insertTextContainer:(NSTextContainer *)container atIndex:(NSUInteger)index; + + +// - (void)removeTextContainerAtIndex:(NSUInteger)index; + + +// - (void)textContainerChangedGeometry:(NSTextContainer *)container; + + + + + +// @property (nullable, weak, nonatomic) id delegate; + + + + + +// @property (nonatomic) BOOL showsInvisibleCharacters; + + +// @property (nonatomic) BOOL showsControlCharacters; + + +// @property (nonatomic) BOOL usesFontLeading; + + +// @property (nonatomic) BOOL allowsNonContiguousLayout __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=7.0))); + + +// @property (readonly, nonatomic) BOOL hasNonContiguousLayout __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=7.0))); + + +// @property BOOL limitsLayoutForSuspiciousContents __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=12.0))) __attribute__((availability(watchos,introduced=5.0))) __attribute__((availability(tvos,introduced=12.0))); + + +// @property BOOL usesDefaultHyphenation __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + + + +// - (void)invalidateGlyphsForCharacterRange:(NSRange)charRange changeInLength:(NSInteger)delta actualCharacterRange:(nullable NSRangePointer)actualCharRange; + + +// - (void)invalidateLayoutForCharacterRange:(NSRange)charRange actualCharacterRange:(nullable NSRangePointer)actualCharRange __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)invalidateDisplayForCharacterRange:(NSRange)charRange; +// - (void)invalidateDisplayForGlyphRange:(NSRange)glyphRange; + + +// - (void)processEditingForTextStorage:(NSTextStorage *)textStorage edited:(NSTextStorageEditActions)editMask range:(NSRange)newCharRange changeInLength:(NSInteger)delta invalidatedRange:(NSRange)invalidatedCharRange __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + +// - (void)ensureGlyphsForCharacterRange:(NSRange)charRange; +// - (void)ensureGlyphsForGlyphRange:(NSRange)glyphRange; +// - (void)ensureLayoutForCharacterRange:(NSRange)charRange; +// - (void)ensureLayoutForGlyphRange:(NSRange)glyphRange; +// - (void)ensureLayoutForTextContainer:(NSTextContainer *)container; +// - (void)ensureLayoutForBoundingRect:(CGRect)bounds inTextContainer:(NSTextContainer *)container; + + + + + +// - (void)setGlyphs:(const CGGlyph *)glyphs properties:(const NSGlyphProperty *)props characterIndexes:(const NSUInteger *)charIndexes font:(UIFont *)aFont forGlyphRange:(NSRange)glyphRange __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + +// @property (readonly, nonatomic) NSUInteger numberOfGlyphs; + + +// - (CGGlyph)CGGlyphAtIndex:(NSUInteger)glyphIndex isValidIndex:(nullable BOOL *)isValidIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +// - (CGGlyph)CGGlyphAtIndex:(NSUInteger)glyphIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +// - (BOOL)isValidGlyphIndex:(NSUInteger)glyphIndex __attribute__((availability(macosx,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(watchos,introduced=2.0))) __attribute__((availability(tvos,introduced=9.0))); + + +// - (NSGlyphProperty)propertyForGlyphAtIndex:(NSUInteger)glyphIndex __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=7.0))); + + +// - (NSUInteger)characterIndexForGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (NSUInteger)glyphIndexForCharacterAtIndex:(NSUInteger)charIndex; + + +// - (NSUInteger)getGlyphsInRange:(NSRange)glyphRange glyphs:(nullable CGGlyph *)glyphBuffer properties:(nullable NSGlyphProperty *)props characterIndexes:(nullable NSUInteger *)charIndexBuffer bidiLevels:(nullable unsigned char *)bidiLevelBuffer __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=7.0))); + + + + + +// - (void)setTextContainer:(NSTextContainer *)container forGlyphRange:(NSRange)glyphRange; + + +// - (void)setLineFragmentRect:(CGRect)fragmentRect forGlyphRange:(NSRange)glyphRange usedRect:(CGRect)usedRect; + + +// - (void)setExtraLineFragmentRect:(CGRect)fragmentRect usedRect:(CGRect)usedRect textContainer:(NSTextContainer *)container; + + +// - (void)setLocation:(CGPoint)location forStartOfGlyphRange:(NSRange)glyphRange; + + +// - (void)setNotShownAttribute:(BOOL)flag forGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (void)setDrawsOutsideLineFragment:(BOOL)flag forGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (void)setAttachmentSize:(CGSize)attachmentSize forGlyphRange:(NSRange)glyphRange; + + + + + +// - (void)getFirstUnlaidCharacterIndex:(nullable NSUInteger *)charIndex glyphIndex:(nullable NSUInteger *)glyphIndex; +// - (NSUInteger)firstUnlaidCharacterIndex; +// - (NSUInteger)firstUnlaidGlyphIndex; + + +// - (nullable NSTextContainer *)textContainerForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange; +// - (nullable NSTextContainer *)textContainerForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + + +// - (CGRect)usedRectForTextContainer:(NSTextContainer *)container; + + +// - (CGRect)lineFragmentRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange; +// - (CGRect)lineFragmentRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + +// - (CGRect)lineFragmentUsedRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange; +// - (CGRect)lineFragmentUsedRectForGlyphAtIndex:(NSUInteger)glyphIndex effectiveRange:(nullable NSRangePointer)effectiveGlyphRange withoutAdditionalLayout:(BOOL)flag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + +// @property (readonly, nonatomic) CGRect extraLineFragmentRect; +// @property (readonly, nonatomic) CGRect extraLineFragmentUsedRect; +// @property (nullable, readonly, nonatomic) NSTextContainer *extraLineFragmentTextContainer; + + + +// - (CGPoint)locationForGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (BOOL)notShownAttributeForGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (BOOL)drawsOutsideLineFragmentForGlyphAtIndex:(NSUInteger)glyphIndex; + + +// - (CGSize)attachmentSizeForGlyphAtIndex:(NSUInteger)glyphIndex; + + + +// - (NSRange)truncatedGlyphRangeInLineFragmentForGlyphAtIndex:(NSUInteger)glyphIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + +// - (NSRange)glyphRangeForCharacterRange:(NSRange)charRange actualCharacterRange:(nullable NSRangePointer)actualCharRange; + + +// - (NSRange)characterRangeForGlyphRange:(NSRange)glyphRange actualGlyphRange:(nullable NSRangePointer)actualGlyphRange; + + +// - (NSRange)glyphRangeForTextContainer:(NSTextContainer *)container; + + +// - (NSRange)rangeOfNominallySpacedGlyphsContainingIndex:(NSUInteger)glyphIndex; + + +// - (CGRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container; + + +// - (NSRange)glyphRangeForBoundingRect:(CGRect)bounds inTextContainer:(NSTextContainer *)container; +// - (NSRange)glyphRangeForBoundingRectWithoutAdditionalLayout:(CGRect)bounds inTextContainer:(NSTextContainer *)container; + + +// - (NSUInteger)glyphIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceThroughGlyph:(nullable CGFloat *)partialFraction; +// - (NSUInteger)glyphIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container; +// - (CGFloat)fractionOfDistanceThroughGlyphForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container; + + +// - (NSUInteger)characterIndexForPoint:(CGPoint)point inTextContainer:(NSTextContainer *)container fractionOfDistanceBetweenInsertionPoints:(nullable CGFloat *)partialFraction; + + +// - (NSUInteger)getLineFragmentInsertionPointsForCharacterAtIndex:(NSUInteger)charIndex alternatePositions:(BOOL)aFlag inDisplayOrder:(BOOL)dFlag positions:(nullable CGFloat *)positions characterIndexes:(nullable NSUInteger *)charIndexes; + + +// - (void)enumerateLineFragmentsForGlyphRange:(NSRange)glyphRange usingBlock:(void (^)(CGRect rect, CGRect usedRect, NSTextContainer *textContainer, NSRange glyphRange, BOOL *stop))block __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)enumerateEnclosingRectsForGlyphRange:(NSRange)glyphRange withinSelectedGlyphRange:(NSRange)selectedRange inTextContainer:(NSTextContainer *)textContainer usingBlock:(void (^)(CGRect rect, BOOL *stop))block __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + +// - (void)drawBackgroundForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin; +// - (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin; + + +// - (void)showCGGlyphs:(const CGGlyph *)glyphs positions:(const CGPoint *)positions count:(NSInteger)glyphCount font:(UIFont *)font textMatrix:(CGAffineTransform)textMatrix attributes:(NSDictionary *)attributes inContext:(CGContextRef)CGContext __attribute__((availability(macos,introduced=10.15))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,introduced=6.0))) __attribute__((availability(tvos,introduced=13.0))); + + +// - (void)fillBackgroundRectArray:(const CGRect *)rectArray count:(NSUInteger)rectCount forCharacterRange:(NSRange)charRange color:(UIColor *)color __attribute__((availability(macos,introduced=10.6))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)drawUnderlineForGlyphRange:(NSRange)glyphRange underlineType:(NSUnderlineStyle)underlineVal baselineOffset:(CGFloat)baselineOffset lineFragmentRect:(CGRect)lineRect lineFragmentGlyphRange:(NSRange)lineGlyphRange containerOrigin:(CGPoint)containerOrigin; +// - (void)underlineGlyphRange:(NSRange)glyphRange underlineType:(NSUnderlineStyle)underlineVal lineFragmentRect:(CGRect)lineRect lineFragmentGlyphRange:(NSRange)lineGlyphRange containerOrigin:(CGPoint)containerOrigin; + + +// - (void)drawStrikethroughForGlyphRange:(NSRange)glyphRange strikethroughType:(NSUnderlineStyle)strikethroughVal baselineOffset:(CGFloat)baselineOffset lineFragmentRect:(CGRect)lineRect lineFragmentGlyphRange:(NSRange)lineGlyphRange containerOrigin:(CGPoint)containerOrigin; +// - (void)strikethroughGlyphRange:(NSRange)glyphRange strikethroughType:(NSUnderlineStyle)strikethroughVal lineFragmentRect:(CGRect)lineRect lineFragmentGlyphRange:(NSRange)lineGlyphRange containerOrigin:(CGPoint)containerOrigin; + +/* @end */ + + + +// @protocol NSLayoutManagerDelegate +/* @optional */ + + + +// - (NSUInteger)layoutManager:(NSLayoutManager *)layoutManager shouldGenerateGlyphs:(const CGGlyph *)glyphs properties:(const NSGlyphProperty *)props characterIndexes:(const NSUInteger *)charIndexes font:(UIFont *)aFont forGlyphRange:(NSRange)glyphRange __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + + + +// - (CGFloat)layoutManager:(NSLayoutManager *)layoutManager lineSpacingAfterGlyphAtIndex:(NSUInteger)glyphIndex withProposedLineFragmentRect:(CGRect)rect __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (CGFloat)layoutManager:(NSLayoutManager *)layoutManager paragraphSpacingBeforeGlyphAtIndex:(NSUInteger)glyphIndex withProposedLineFragmentRect:(CGRect)rect __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (CGFloat)layoutManager:(NSLayoutManager *)layoutManager paragraphSpacingAfterGlyphAtIndex:(NSUInteger)glyphIndex withProposedLineFragmentRect:(CGRect)rect __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (NSControlCharacterAction)layoutManager:(NSLayoutManager *)layoutManager shouldUseAction:(NSControlCharacterAction)action forControlCharacterAtIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (BOOL)layoutManager:(NSLayoutManager *)layoutManager shouldBreakLineByWordBeforeCharacterAtIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (BOOL)layoutManager:(NSLayoutManager *)layoutManager shouldBreakLineByHyphenatingBeforeCharacterAtIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (CGRect)layoutManager:(NSLayoutManager *)layoutManager boundingBoxForControlGlyphAtIndex:(NSUInteger)glyphIndex forTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)proposedRect glyphPosition:(CGPoint)glyphPosition characterIndex:(NSUInteger)charIndex __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// - (BOOL)layoutManager:(NSLayoutManager *)layoutManager shouldSetLineFragmentRect:(inout CGRect *)lineFragmentRect lineFragmentUsedRect:(inout CGRect *)lineFragmentUsedRect baselineOffset:(inout CGFloat *)baselineOffset inTextContainer:(NSTextContainer *)textContainer forGlyphRange:(NSRange)glyphRange __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=9.0))); + + + + +// - (void)layoutManagerDidInvalidateLayout:(NSLayoutManager *)sender __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)layoutManager:(NSLayoutManager *)layoutManager didCompleteLayoutForTextContainer:(nullable NSTextContainer *)textContainer atEnd:(BOOL)layoutFinishedFlag __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); + + +// - (void)layoutManager:(NSLayoutManager *)layoutManager textContainer:(NSTextContainer *)textContainer didChangeGeometryFromSize:(CGSize)oldSize __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + +/* @end */ + + + + +enum { + NSControlCharacterZeroAdvancementAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionZeroAdvancement instead"))) = NSControlCharacterActionZeroAdvancement, + NSControlCharacterWhitespaceAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionWhitespace instead"))) = NSControlCharacterActionWhitespace, + NSControlCharacterHorizontalTabAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionHorizontalTab instead"))) = NSControlCharacterActionHorizontalTab, + NSControlCharacterLineBreakAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionLineBreak instead"))) = NSControlCharacterActionLineBreak, + NSControlCharacterParagraphBreakAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionParagraphBreak instead"))) = NSControlCharacterActionParagraphBreak, + NSControlCharacterContainerBreakAction __attribute__((availability(ios,introduced=7_0,deprecated=9_0,message="" "Use NSControlCharacterActionContainerBreak instead"))) = NSControlCharacterActionContainerBreak +}; + +// @interface NSLayoutManager (NSLayoutManagerDeprecated) + +// - (CGGlyph)glyphAtIndex:(NSUInteger)glyphIndex isValidIndex:(nullable BOOL *)isValidIndex; +// - (CGGlyph)glyphAtIndex:(NSUInteger)glyphIndex; + + +// @property CGFloat hyphenationFactor __attribute__((availability(macos,introduced=10.0,deprecated=10.15,message="Please use usesDefaultHyphenation or -[NSParagraphStyle hyphenationFactor] instead."))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,message="Please use usesDefaultHyphenation or -[NSParagraphStyle hyphenationFactor] instead."))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,message="Please use usesDefaultHyphenation or -[NSParagraphStyle hyphenationFactor] instead."))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,message="Please use usesDefaultHyphenation or -[NSParagraphStyle hyphenationFactor] instead."))) __attribute__((availability(macCatalyst,unavailable))); + + +// - (void)showCGGlyphs:(const CGGlyph *)glyphs positions:(const CGPoint *)positions count:(NSUInteger)glyphCount font:(UIFont *)font matrix:(CGAffineTransform)textMatrix attributes:(NSDictionary *)attributes inContext:(CGContextRef)graphicsContext __attribute__((availability(macos,introduced=10.7,deprecated=10.15,replacement="showCGGlyphs:positions:count:font:textMatrix:attributes:inContext:"))) __attribute__((availability(ios,introduced=7.0,deprecated=13.0,replacement="showCGGlyphs:positions:count:font:textMatrix:attributes:inContext:"))) __attribute__((availability(watchos,introduced=2.0,deprecated=6.0,replacement="showCGGlyphs:positions:count:font:textMatrix:attributes:inContext:"))) __attribute__((availability(tvos,introduced=9.0,deprecated=13.0,replacement="showCGGlyphs:positions:count:font:textMatrix:attributes:inContext:"))) __attribute__((availability(macCatalyst,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +#pragma clang assume_nonnull begin + + + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_NSShadow +#define _REWRITER_typedef_NSShadow +typedef struct objc_object NSShadow; +typedef struct {} _objc_exc_NSShadow; +#endif + +struct NSShadow_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + +// @property (nonatomic, assign) CGSize shadowOffset; +// @property (nonatomic, assign) CGFloat shadowBlurRadius; +// @property (nullable, nonatomic, strong) id shadowColor; + +/* @end */ + +#pragma clang assume_nonnull end + + +// @class NSStringDrawingContext; +#ifndef _REWRITER_typedef_NSStringDrawingContext +#define _REWRITER_typedef_NSStringDrawingContext +typedef struct objc_object NSStringDrawingContext; +typedef struct {} _objc_exc_NSStringDrawingContext; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=6.0))) +#ifndef _REWRITER_typedef_NSStringDrawingContext +#define _REWRITER_typedef_NSStringDrawingContext +typedef struct objc_object NSStringDrawingContext; +typedef struct {} _objc_exc_NSStringDrawingContext; +#endif + +struct NSStringDrawingContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic) CGFloat minimumScaleFactor; + + +// @property (readonly, nonatomic) CGFloat actualScaleFactor; + + +// @property (readonly, nonatomic) CGRect totalBounds; + +/* @end */ + + +// @interface NSString(NSStringDrawing) +// - (CGSize)sizeWithAttributes:(nullable NSDictionary *)attrs __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +// - (void)drawAtPoint:(CGPoint)point withAttributes:(nullable NSDictionary *)attrs __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +// - (void)drawInRect:(CGRect)rect withAttributes:(nullable NSDictionary *)attrs __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + +// @interface NSAttributedString(NSStringDrawing) +// - (CGSize)size __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +// - (void)drawAtPoint:(CGPoint)point __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +// - (void)drawInRect:(CGRect)rect __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + +typedef NSInteger NSStringDrawingOptions; enum { + NSStringDrawingUsesLineFragmentOrigin = 1 << 0, + NSStringDrawingUsesFontLeading = 1 << 1, + NSStringDrawingUsesDeviceMetrics = 1 << 3, + NSStringDrawingTruncatesLastVisibleLine __attribute__((availability(macos,introduced=10.5))) __attribute__((availability(ios,introduced=6.0))) = 1 << 5, + +} __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=6.0))); + + + + +// @interface NSString (NSExtendedStringDrawing) +// - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +// - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +/* @end */ + + +// @interface NSAttributedString (NSExtendedStringDrawing) +// - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=6.0))); +// - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(nullable NSStringDrawingContext *)context __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=6.0))); +/* @end */ + + + +// @interface NSStringDrawingContext (NSStringDrawingContextDeprecated) +// @property (nonatomic) CGFloat minimumTrackingAdjustment __attribute__((availability(ios,introduced=6.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, readonly) CGFloat actualTrackingAdjustment __attribute__((availability(ios,introduced=6.0,deprecated=7.0,message=""))) __attribute__((availability(tvos,unavailable))); +/* @end */ + +#pragma clang assume_nonnull end + + + + +// @class UIBezierPath; +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_NSTextContainer +#define _REWRITER_typedef_NSTextContainer +typedef struct objc_object NSTextContainer; +typedef struct {} _objc_exc_NSTextContainer; +#endif + +struct NSTextContainer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithSize:(CGSize)size __attribute__((objc_designated_initializer)) __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); +// - (instancetype)initWithCoder:(NSCoder *)coder __attribute__((objc_designated_initializer)); + + + + + + +// @property (nullable, assign, nonatomic) NSLayoutManager *layoutManager; + + +// - (void)replaceLayoutManager:(NSLayoutManager *)newLayoutManager __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + + + + +// @property (nonatomic) CGSize size __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// @property (copy, nonatomic) NSArray *exclusionPaths __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// @property (nonatomic) NSLineBreakMode lineBreakMode __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + +// @property (nonatomic) CGFloat lineFragmentPadding; + + +// @property (nonatomic) NSUInteger maximumNumberOfLines __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + + + +// - (CGRect)lineFragmentRectForProposedRect:(CGRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(nullable CGRect *)remainingRect __attribute__((availability(macos,introduced=10.11))) __attribute__((availability(ios,introduced=7.0))); + + +// @property (getter=isSimpleRectangularTextContainer, readonly, nonatomic) BOOL simpleRectangularTextContainer __attribute__((availability(macos,introduced=10.0))) __attribute__((availability(ios,introduced=9.0))); + + + + + +// @property (nonatomic) BOOL widthTracksTextView; +// @property (nonatomic) BOOL heightTracksTextView; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + +#pragma clang assume_nonnull begin + +// @protocol UIPreviewInteractionDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPreviewInteraction +#define _REWRITER_typedef_UIPreviewInteraction +typedef struct objc_object UIPreviewInteraction; +typedef struct {} _objc_exc_UIPreviewInteraction; +#endif + +struct UIPreviewInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithView:(UIView *)view __attribute__((objc_designated_initializer)); +// @property (nonatomic, readonly, weak) UIView *view; + +// - (instancetype)init __attribute__((unavailable)); + +// @property (nonatomic, nullable, weak) id delegate; + +// - (CGPoint)locationInCoordinateSpace:(nullable id )coordinateSpace; +// - (void)cancelInteraction; + +/* @end */ + + +// @protocol UIPreviewInteractionDelegate + +// - (void)previewInteraction:(UIPreviewInteraction *)previewInteraction didUpdatePreviewTransition:(CGFloat)transitionProgress ended:(BOOL)ended __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +// - (void)previewInteractionDidCancel:(UIPreviewInteraction *)previewInteraction __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @optional */ + +// - (BOOL)previewInteractionShouldBegin:(UIPreviewInteraction *)previewInteraction __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// - (void)previewInteraction:(UIPreviewInteraction *)previewInteraction didUpdateCommitTransition:(CGFloat)transitionProgress ended:(BOOL)ended __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPopoverPresentationController; +#ifndef _REWRITER_typedef_UIPopoverPresentationController +#define _REWRITER_typedef_UIPopoverPresentationController +typedef struct objc_object UIPopoverPresentationController; +typedef struct {} _objc_exc_UIPopoverPresentationController; +#endif + + +__attribute__((availability(tvos,unavailable))) +// @protocol UIPopoverPresentationControllerDelegate +/* @optional */ + +// - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popoverPresentationController; + + + +// - (BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController __attribute__((availability(ios,introduced=8.0,deprecated=13.0,replacement="presentationControllerShouldDismiss:")));; + + +// - (void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController __attribute__((availability(ios,introduced=8.0,deprecated=13.0,replacement="presentationControllerDidDismiss:"))); + + + +// - (void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView * _Nonnull * _Nonnull)view; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=8.0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPopoverPresentationController +#define _REWRITER_typedef_UIPopoverPresentationController +typedef struct objc_object UIPopoverPresentationController; +typedef struct {} _objc_exc_UIPopoverPresentationController; +#endif + +struct UIPopoverPresentationController_IMPL { + struct UIPresentationController_IMPL UIPresentationController_IVARS; +}; + + +// @property (nullable, nonatomic, weak) id delegate; + +// @property (nonatomic, assign) UIPopoverArrowDirection permittedArrowDirections; + +// @property (nullable, nonatomic, strong) UIView *sourceView; + + + + +// @property (nonatomic, assign) CGRect sourceRect; + + + +// @property (nonatomic, assign) BOOL canOverlapSourceViewRect __attribute__((availability(ios,introduced=9.0))); + +// @property (nullable, nonatomic, strong) UIBarButtonItem *barButtonItem; + + +// @property (nonatomic, readonly) UIPopoverArrowDirection arrowDirection; + + + + +// @property (nullable, nonatomic, copy) NSArray *passthroughViews; + + +// @property (nullable, nonatomic, copy) UIColor *backgroundColor; + + + + + +// @property (nonatomic, readwrite) UIEdgeInsets popoverLayoutMargins; + + + +// @property (nullable, nonatomic, readwrite, strong) Class popoverBackgroundViewClass; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIDynamicBehavior; +#ifndef _REWRITER_typedef_UIDynamicBehavior +#define _REWRITER_typedef_UIDynamicBehavior +typedef struct objc_object UIDynamicBehavior; +typedef struct {} _objc_exc_UIDynamicBehavior; +#endif + +// @class UIDynamicAnimator; +#ifndef _REWRITER_typedef_UIDynamicAnimator +#define _REWRITER_typedef_UIDynamicAnimator +typedef struct objc_object UIDynamicAnimator; +typedef struct {} _objc_exc_UIDynamicAnimator; +#endif + + +// @protocol UIDynamicAnimatorDelegate + +/* @optional */ +// - (void)dynamicAnimatorWillResume:(UIDynamicAnimator *)animator; +// - (void)dynamicAnimatorDidPause:(UIDynamicAnimator *)animator; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIDynamicAnimator +#define _REWRITER_typedef_UIDynamicAnimator +typedef struct objc_object UIDynamicAnimator; +typedef struct {} _objc_exc_UIDynamicAnimator; +#endif + +struct UIDynamicAnimator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (instancetype)initWithReferenceView:(UIView *)view __attribute__((objc_designated_initializer)); + +// - (void)addBehavior:(UIDynamicBehavior *)behavior; +// - (void)removeBehavior:(UIDynamicBehavior *)behavior; +// - (void)removeAllBehaviors; + +// @property (nullable, nonatomic, readonly) UIView *referenceView; +// @property (nonatomic, readonly, copy) NSArray<__kindof UIDynamicBehavior*> *behaviors; + + +// - (NSArray> *)itemsInRect:(CGRect)rect; + +// - (void)updateItemUsingCurrentState:(id )item; + +// @property (nonatomic, readonly, getter = isRunning) BOOL running; +// @property (nonatomic, readonly) NSTimeInterval elapsedTime; + +// @property (nullable, nonatomic, weak) id delegate; + +/* @end */ + + +// @interface UIDynamicAnimator (UICollectionViewAdditions) + + + +// - (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout; + + +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForCellAtIndexPath:(NSIndexPath *)indexPath; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath; +// - (nullable UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind atIndexPath:(NSIndexPath *)indexPath; + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +typedef NSInteger UIPushBehaviorMode; enum { + UIPushBehaviorModeContinuous, + UIPushBehaviorModeInstantaneous +} __attribute__((availability(ios,introduced=7.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIPushBehavior +#define _REWRITER_typedef_UIPushBehavior +typedef struct objc_object UIPushBehavior; +typedef struct {} _objc_exc_UIPushBehavior; +#endif + +struct UIPushBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)initWithItems:(NSArray> *)items mode:(UIPushBehaviorMode)mode __attribute__((objc_designated_initializer)); + +// - (void)addItem:(id )item; +// - (void)removeItem:(id )item; +// @property (nonatomic, readonly, copy) NSArray> *items; + +// - (UIOffset)targetOffsetFromCenterForItem:(id )item; +// - (void)setTargetOffsetFromCenter:(UIOffset)o forItem:(id )item; + +// @property (nonatomic, readonly) UIPushBehaviorMode mode; +// @property (nonatomic, readwrite) BOOL active; + +// @property (readwrite, nonatomic) CGFloat angle; + +// @property (readwrite, nonatomic) CGFloat magnitude; +// @property (readwrite, nonatomic) CGVector pushDirection; + +// - (void)setAngle:(CGFloat)angle magnitude:(CGFloat)magnitude; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UISnapBehavior +#define _REWRITER_typedef_UISnapBehavior +typedef struct objc_object UISnapBehavior; +typedef struct {} _objc_exc_UISnapBehavior; +#endif + +struct UISnapBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + + +// - (instancetype)initWithItem:(id )item snapToPoint:(CGPoint)point __attribute__((objc_designated_initializer)); + +// @property (nonatomic, assign) CGPoint snapPoint __attribute__((availability(ios,introduced=9.0))); +// @property (nonatomic, assign) CGFloat damping; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIDynamicItemBehavior +#define _REWRITER_typedef_UIDynamicItemBehavior +typedef struct objc_object UIDynamicItemBehavior; +typedef struct {} _objc_exc_UIDynamicItemBehavior; +#endif + +struct UIDynamicItemBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)initWithItems:(NSArray> *)items __attribute__((objc_designated_initializer)); + +// - (void)addItem:(id )item; +// - (void)removeItem:(id )item; +// @property (nonatomic, readonly, copy) NSArray> *items; + +// @property (readwrite, nonatomic) CGFloat elasticity; +// @property (readwrite, nonatomic) CGFloat friction; +// @property (readwrite, nonatomic) CGFloat density; +// @property (readwrite, nonatomic) CGFloat resistance; +// @property (readwrite, nonatomic) CGFloat angularResistance; + + + + + + +// @property (readwrite, nonatomic) CGFloat charge __attribute__((availability(ios,introduced=9.0))); + + + + + + +// @property (nonatomic, getter = isAnchored) BOOL anchored __attribute__((availability(ios,introduced=9.0))); + +// @property (readwrite, nonatomic) BOOL allowsRotation; + + + +// - (void)addLinearVelocity:(CGPoint)velocity forItem:(id )item; +// - (CGPoint)linearVelocityForItem:(id )item; + + + +// - (void)addAngularVelocity:(CGFloat)velocity forItem:(id )item; +// - (CGFloat)angularVelocityForItem:(id )item; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIRegion; +#ifndef _REWRITER_typedef_UIRegion +#define _REWRITER_typedef_UIRegion +typedef struct objc_object UIRegion; +typedef struct {} _objc_exc_UIRegion; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIFieldBehavior +#define _REWRITER_typedef_UIFieldBehavior +typedef struct objc_object UIFieldBehavior; +typedef struct {} _objc_exc_UIFieldBehavior; +#endif + +struct UIFieldBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); + +// - (void)addItem:(id )item; +// - (void)removeItem:(id )item; + +// @property (nonatomic, readonly, copy) NSArray> *items; + + + + +// @property (nonatomic, assign) CGPoint position; + + + + + +// @property (nonatomic, strong) UIRegion *region; + + +// @property (nonatomic, assign) CGFloat strength; + + + + + + +// @property (nonatomic, assign) CGFloat falloff; + + +// @property (nonatomic, assign) CGFloat minimumRadius; + + + + + + +// @property (nonatomic, assign) CGVector direction; + + + + + +// @property (nonatomic, assign) CGFloat smoothness; + + + + + +// @property (nonatomic, assign) CGFloat animationSpeed; + + + + + +// + (instancetype)dragField; + + + + + + +// + (instancetype)vortexField; + + + + + + + +// + (instancetype)radialGravityFieldWithPosition:(CGPoint)position; +// + (instancetype)linearGravityFieldWithVector:(CGVector)direction; + + + + + + + +// + (instancetype)velocityFieldWithVector:(CGVector)direction; +// + (instancetype)noiseFieldWithSmoothness:(CGFloat)smoothness animationSpeed:(CGFloat)speed; +// + (instancetype)turbulenceFieldWithSmoothness:(CGFloat)smoothness animationSpeed:(CGFloat)speed; + + + + + + +// + (instancetype)springField; + + + + + + + +// + (instancetype)electricField; +// + (instancetype)magneticField; +// + (instancetype)fieldWithEvaluationBlock:(CGVector(^)(UIFieldBehavior *field, CGPoint position, CGVector velocity, CGFloat mass, CGFloat charge, NSTimeInterval deltaTime))block; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIGravityBehavior +#define _REWRITER_typedef_UIGravityBehavior +typedef struct objc_object UIGravityBehavior; +typedef struct {} _objc_exc_UIGravityBehavior; +#endif + +struct UIGravityBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)initWithItems:(NSArray> *)items __attribute__((objc_designated_initializer)); + +// - (void)addItem:(id )item; +// - (void)removeItem:(id )item; +// @property (nonatomic, readonly, copy) NSArray> *items; + + + +// @property (readwrite, nonatomic) CGVector gravityDirection; + +// @property (readwrite, nonatomic) CGFloat angle; +// @property (readwrite, nonatomic) CGFloat magnitude; +// - (void)setAngle:(CGFloat)angle magnitude:(CGFloat)magnitude; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIAttachmentBehaviorType; enum { + UIAttachmentBehaviorTypeItems, + UIAttachmentBehaviorTypeAnchor +} __attribute__((availability(ios,introduced=7.0))); + +typedef struct { + CGFloat minimum; + CGFloat maximum; +} UIFloatRange; + +extern "C" __attribute__((visibility ("default"))) const UIFloatRange UIFloatRangeZero __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) const UIFloatRange UIFloatRangeInfinite __attribute__((availability(ios,introduced=9.0))); +extern "C" __attribute__((visibility ("default"))) BOOL UIFloatRangeIsInfinite(UIFloatRange range) __attribute__((availability(ios,introduced=9.0))); + +static inline UIFloatRange UIFloatRangeMake(CGFloat minimum, CGFloat maximum) { + return (UIFloatRange){minimum, maximum}; +} + +static inline BOOL UIFloatRangeIsEqualToRange(UIFloatRange range, UIFloatRange otherRange) { + return range.minimum == otherRange.minimum && range.maximum == otherRange.maximum; +} + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UIAttachmentBehavior +#define _REWRITER_typedef_UIAttachmentBehavior +typedef struct objc_object UIAttachmentBehavior; +typedef struct {} _objc_exc_UIAttachmentBehavior; +#endif + +struct UIAttachmentBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)initWithItem:(id )item attachedToAnchor:(CGPoint)point; +// - (instancetype)initWithItem:(id )item offsetFromCenter:(UIOffset)offset attachedToAnchor:(CGPoint)point __attribute__((objc_designated_initializer)); + +// - (instancetype)initWithItem:(id )item1 attachedToItem:(id )item2; +// - (instancetype)initWithItem:(id )item1 offsetFromCenter:(UIOffset)offset1 attachedToItem:(id )item2 offsetFromCenter:(UIOffset)offset2 __attribute__((objc_designated_initializer)); +// + (instancetype)slidingAttachmentWithItem:(id )item1 attachedToItem:(id )item2 attachmentAnchor:(CGPoint)point axisOfTranslation:(CGVector)axis __attribute__((availability(ios,introduced=9.0))); +// + (instancetype)slidingAttachmentWithItem:(id )item attachmentAnchor:(CGPoint)point axisOfTranslation:(CGVector)axis __attribute__((availability(ios,introduced=9.0))); +// + (instancetype)limitAttachmentWithItem:(id )item1 offsetFromCenter:(UIOffset)offset1 attachedToItem:(id )item2 offsetFromCenter:(UIOffset)offset2 __attribute__((availability(ios,introduced=9.0))); +// + (instancetype)fixedAttachmentWithItem:(id )item1 attachedToItem:(id )item2 attachmentAnchor:(CGPoint)point __attribute__((availability(ios,introduced=9.0))); +// + (instancetype)pinAttachmentWithItem:(id )item1 attachedToItem:(id )item2 attachmentAnchor:(CGPoint)point __attribute__((availability(ios,introduced=9.0))); + +// @property (nonatomic, readonly, copy) NSArray> *items; + +// @property (readonly, nonatomic) UIAttachmentBehaviorType attachedBehaviorType; + +// @property (readwrite, nonatomic) CGPoint anchorPoint; + +// @property (readwrite, nonatomic) CGFloat length; +// @property (readwrite, nonatomic) CGFloat damping; +// @property (readwrite, nonatomic) CGFloat frequency; +// @property (readwrite, nonatomic) CGFloat frictionTorque __attribute__((availability(ios,introduced=9.0))); +// @property (readwrite, nonatomic) UIFloatRange attachmentRange __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UICollisionBehavior; +#ifndef _REWRITER_typedef_UICollisionBehavior +#define _REWRITER_typedef_UICollisionBehavior +typedef struct objc_object UICollisionBehavior; +typedef struct {} _objc_exc_UICollisionBehavior; +#endif + + +typedef NSUInteger UICollisionBehaviorMode; enum { + UICollisionBehaviorModeItems = 1 << 0, + UICollisionBehaviorModeBoundaries = 1 << 1, + UICollisionBehaviorModeEverything = (9223372036854775807L *2UL+1UL) +} __attribute__((availability(ios,introduced=7.0))); + +// @protocol UICollisionBehaviorDelegate +/* @optional */ + +// - (void)collisionBehavior:(UICollisionBehavior *)behavior beganContactForItem:(id )item1 withItem:(id )item2 atPoint:(CGPoint)p; +// - (void)collisionBehavior:(UICollisionBehavior *)behavior endedContactForItem:(id )item1 withItem:(id )item2; + + +// - (void)collisionBehavior:(UICollisionBehavior*)behavior beganContactForItem:(id )item withBoundaryIdentifier:(nullable id )identifier atPoint:(CGPoint)p; +// - (void)collisionBehavior:(UICollisionBehavior*)behavior endedContactForItem:(id )item withBoundaryIdentifier:(nullable id )identifier; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=7.0))) +#ifndef _REWRITER_typedef_UICollisionBehavior +#define _REWRITER_typedef_UICollisionBehavior +typedef struct objc_object UICollisionBehavior; +typedef struct {} _objc_exc_UICollisionBehavior; +#endif + +struct UICollisionBehavior_IMPL { + struct UIDynamicBehavior_IMPL UIDynamicBehavior_IVARS; +}; + + +// - (instancetype)initWithItems:(NSArray> *)items __attribute__((objc_designated_initializer)); + +// - (void)addItem:(id )item; +// - (void)removeItem:(id )item; + +// @property (nonatomic, readonly, copy) NSArray> *items; + +// @property (nonatomic, readwrite) UICollisionBehaviorMode collisionMode; + +// @property (nonatomic, readwrite) BOOL translatesReferenceBoundsIntoBoundary; +// - (void)setTranslatesReferenceBoundsIntoBoundaryWithInsets:(UIEdgeInsets)insets; + +// - (void)addBoundaryWithIdentifier:(id )identifier forPath:(UIBezierPath *)bezierPath; +// - (void)addBoundaryWithIdentifier:(id )identifier fromPoint:(CGPoint)p1 toPoint:(CGPoint)p2; +// - (nullable UIBezierPath *)boundaryWithIdentifier:(id )identifier; +// - (void)removeBoundaryWithIdentifier:(id )identifier; +// @property (nullable, nonatomic, readonly, copy) NSArray> *boundaryIdentifiers; +// - (void)removeAllBoundaries; + +// @property (nullable, nonatomic, weak, readwrite) id collisionDelegate; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=9.0))) +#ifndef _REWRITER_typedef_UIRegion +#define _REWRITER_typedef_UIRegion +typedef struct objc_object UIRegion; +typedef struct {} _objc_exc_UIRegion; +#endif + +struct UIRegion_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +@property(class, nonatomic, readonly) UIRegion *infiniteRegion; + + + +// - (instancetype)initWithRadius:(CGFloat)radius; + + + +// - (instancetype)initWithSize:(CGSize)size; + + + + + +// - (instancetype)inverseRegion; + + + +// - (instancetype)regionByUnionWithRegion:(UIRegion *)region; + + + +// - (instancetype)regionByDifferenceFromRegion:(UIRegion *)region; + + + +// - (instancetype)regionByIntersectionWithRegion:(UIRegion *)region; + + + +// - (BOOL)containsPoint:(CGPoint)point; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UITextDragPreviewRenderer +#define _REWRITER_typedef_UITextDragPreviewRenderer +typedef struct objc_object UITextDragPreviewRenderer; +typedef struct {} _objc_exc_UITextDragPreviewRenderer; +#endif + +struct UITextDragPreviewRenderer_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)initWithLayoutManager:(NSLayoutManager*)layoutManager range:(NSRange)range; +// - (instancetype)initWithLayoutManager:(NSLayoutManager*)layoutManager range:(NSRange)range unifyRects:(BOOL)unifyRects __attribute__((objc_designated_initializer)); + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + +// @property (nonatomic, readonly) NSLayoutManager *layoutManager; +// @property (nonatomic, readonly) UIImage *image; +// @property (nonatomic, readonly) CGRect firstLineRect; +// @property (nonatomic, readonly) CGRect bodyRect; +// @property (nonatomic, readonly) CGRect lastLineRect; + +// - (void)adjustFirstLineRect:(inout CGRect*)firstLineRect bodyRect:(inout CGRect*)bodyRect lastLineRect:(inout CGRect*)lastLineRect textOrigin:(CGPoint)origin; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + + + + + + +// @interface UIDragPreview (URLPreviews) + +// + (instancetype)previewForURL:(NSURL *)url __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// + (instancetype)previewForURL:(NSURL *)url title:(NSString * _Nullable)title __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + + + +// @interface UITargetedDragPreview (URLPreviews) + +// + (instancetype)previewForURL:(NSURL *)url target:(UIDragPreviewTarget*)target __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +// + (instancetype)previewForURL:(NSURL *)url title:(NSString * _Nullable)title target:(UIDragPreviewTarget*)target __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10.0))) +#ifndef _REWRITER_typedef_UIViewPropertyAnimator +#define _REWRITER_typedef_UIViewPropertyAnimator +typedef struct objc_object UIViewPropertyAnimator; +typedef struct {} _objc_exc_UIViewPropertyAnimator; +#endif + +struct UIViewPropertyAnimator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property(nullable, nonatomic, copy, readonly) id timingParameters; + +// @property(nonatomic, readonly) NSTimeInterval duration; + + +// @property(nonatomic, readonly) NSTimeInterval delay; + + +// @property(nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled; + + +// @property(nonatomic, getter=isManualHitTestingEnabled) BOOL manualHitTestingEnabled; + + +// @property(nonatomic, getter=isInterruptible) BOOL interruptible; + + +// @property(nonatomic) BOOL scrubsLinearly __attribute__((availability(ios,introduced=11.0))); + + +// @property(nonatomic) BOOL pausesOnCompletion __attribute__((availability(ios,introduced=11.0))); + +// - (instancetype)initWithDuration:(NSTimeInterval)duration timingParameters:(id )parameters __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithDuration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve animations:(void (^ _Nullable)(void))animations; +// - (instancetype)initWithDuration:(NSTimeInterval)duration controlPoint1:(CGPoint)point1 controlPoint2:(CGPoint)point2 animations:(void (^ _Nullable)(void))animations; +// - (instancetype)initWithDuration:(NSTimeInterval)duration dampingRatio:(CGFloat)ratio animations:(void (^ _Nullable)(void))animations; +#if 0 ++ (instancetype)runningPropertyAnimatorWithDuration:(NSTimeInterval)duration + delay:(NSTimeInterval)delay + options:(UIViewAnimationOptions)options + animations:(void (^)(void))animations + completion:(void (^ _Nullable)(UIViewAnimatingPosition finalPosition))completion; +#endif + + + + + + +// - (void)addAnimations:(void (^)(void))animation delayFactor:(CGFloat)delayFactor; +// - (void)addAnimations:(void (^)(void))animation; + +// - (void)addCompletion:(void (^)(UIViewAnimatingPosition finalPosition))completion; + + + + + + + +// - (void)continueAnimationWithTimingParameters:(nullable id )parameters durationFactor:(CGFloat)durationFactor; + + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIFeedbackGenerator +#define _REWRITER_typedef_UIFeedbackGenerator +typedef struct objc_object UIFeedbackGenerator; +typedef struct {} _objc_exc_UIFeedbackGenerator; +#endif + +struct UIFeedbackGenerator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + +// - (void)prepare; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UISelectionFeedbackGenerator +#define _REWRITER_typedef_UISelectionFeedbackGenerator +typedef struct objc_object UISelectionFeedbackGenerator; +typedef struct {} _objc_exc_UISelectionFeedbackGenerator; +#endif + +struct UISelectionFeedbackGenerator_IMPL { + struct UIFeedbackGenerator_IMPL UIFeedbackGenerator_IVARS; +}; + + + +// - (void)selectionChanged; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UIImpactFeedbackStyle; enum { + UIImpactFeedbackStyleLight, + UIImpactFeedbackStyleMedium, + UIImpactFeedbackStyleHeavy, + UIImpactFeedbackStyleSoft __attribute__((availability(ios,introduced=13.0))), + UIImpactFeedbackStyleRigid __attribute__((availability(ios,introduced=13.0))) +}; + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIImpactFeedbackGenerator +#define _REWRITER_typedef_UIImpactFeedbackGenerator +typedef struct objc_object UIImpactFeedbackGenerator; +typedef struct {} _objc_exc_UIImpactFeedbackGenerator; +#endif + +struct UIImpactFeedbackGenerator_IMPL { + struct UIFeedbackGenerator_IMPL UIFeedbackGenerator_IVARS; +}; + + +// - (instancetype)initWithStyle:(UIImpactFeedbackStyle)style; + + +// - (void)impactOccurred; + + +// - (void)impactOccurredWithIntensity:(CGFloat)intensity __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef NSInteger UINotificationFeedbackType; enum { + UINotificationFeedbackTypeSuccess, + UINotificationFeedbackTypeWarning, + UINotificationFeedbackTypeError +}; + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=10_0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UINotificationFeedbackGenerator +#define _REWRITER_typedef_UINotificationFeedbackGenerator +typedef struct objc_object UINotificationFeedbackGenerator; +typedef struct {} _objc_exc_UINotificationFeedbackGenerator; +#endif + +struct UINotificationFeedbackGenerator_IMPL { + struct UIFeedbackGenerator_IMPL UIFeedbackGenerator_IVARS; +}; + + + +// - (void)notificationOccurred:(UINotificationFeedbackType)notificationType; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UITextInteraction; +#ifndef _REWRITER_typedef_UITextInteraction +#define _REWRITER_typedef_UITextInteraction +typedef struct objc_object UITextInteraction; +typedef struct {} _objc_exc_UITextInteraction; +#endif + + +typedef NSInteger UITextInteractionMode; enum { + UITextInteractionModeEditable, + UITextInteractionModeNonEditable, +}; + +// @protocol UITextInteractionDelegate +/* @optional */ +// - (BOOL)interactionShouldBegin:(UITextInteraction *)interaction atPoint:(CGPoint)point; +// - (void)interactionWillBegin:(UITextInteraction *)interaction; +// - (void)interactionDidEnd:(UITextInteraction *)interaction; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) __attribute__((availability(watchos,unavailable))) +#ifndef _REWRITER_typedef_UITextInteraction +#define _REWRITER_typedef_UITextInteraction +typedef struct objc_object UITextInteraction; +typedef struct {} _objc_exc_UITextInteraction; +#endif + +struct UITextInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, weak) id delegate; +// @property (nonatomic, weak) UIResponder *textInput; + +// @property (nonatomic, readonly) UITextInteractionMode textInteractionMode; +// @property (nonatomic, readonly) NSArray *gesturesForFailureRequirements; + +// + (instancetype)textInteractionForMode:(UITextInteractionMode)mode; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIPressesEvent; +#ifndef _REWRITER_typedef_UIPressesEvent +#define _REWRITER_typedef_UIPressesEvent +typedef struct objc_object UIPressesEvent; +typedef struct {} _objc_exc_UIPressesEvent; +#endif + +// @class UIPress; +#ifndef _REWRITER_typedef_UIPress +#define _REWRITER_typedef_UIPress +typedef struct objc_object UIPress; +typedef struct {} _objc_exc_UIPress; +#endif + + + + + +// @interface UIGestureRecognizer (UIGestureRecognizerProtected) + + +// @property(nonatomic,readwrite) UIGestureRecognizerState state; + +// - (void)ignoreTouch:(UITouch*)touch forEvent:(UIEvent*)event; + +// - (void)ignorePress:(UIPress *)button forEvent:(UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); + + + + + + + +// - (void)reset; + + + +// - (BOOL)canPreventGestureRecognizer:(UIGestureRecognizer *)preventedGestureRecognizer; +// - (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer; + + +// - (BOOL)shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer __attribute__((availability(ios,introduced=7.0))); +// - (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer __attribute__((availability(ios,introduced=7.0))); + + +// - (BOOL)shouldReceiveEvent:(UIEvent *)event __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(tvos,introduced=13.4))) __attribute__((availability(watchos,unavailable))); + + + + +// - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; +// - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; +// - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; +// - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; +// - (void)touchesEstimatedPropertiesUpdated:(NSSet *)touches __attribute__((availability(ios,introduced=9.1))); + +// - (void)pressesBegan:(NSSet *)presses withEvent:(UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesChanged:(NSSet *)presses withEvent:(UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesEnded:(NSSet *)presses withEvent:(UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); +// - (void)pressesCancelled:(NSSet *)presses withEvent:(UIPressesEvent *)event __attribute__((availability(ios,introduced=9.0))); + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef void (*UIGraphicsDrawingActions)(__kindof UIGraphicsRendererContext *rendererContext) __attribute__((availability(ios,introduced=10.0))); + + + + + + +// @interface UIGraphicsRenderer (UIGraphicsRendererProtected) + +// + (Class)rendererContextClass __attribute__((availability(ios,introduced=10.0))); + + +// + (nullable CGContextRef)contextWithFormat:(UIGraphicsRendererFormat *)format __attribute__((cf_returns_retained)) __attribute__((availability(ios,introduced=10.0))); + + +// + (void)prepareCGContext:(CGContextRef)context withRendererContext:(UIGraphicsRendererContext *)rendererContext __attribute__((availability(ios,introduced=10.0))); + + + +// - (BOOL)runDrawingActions:(__attribute__((noescape)) UIGraphicsDrawingActions)drawingActions completionActions:(nullable __attribute__((noescape)) UIGraphicsDrawingActions)completionActions error:(NSError **)error __attribute__((availability(ios,introduced=10.0))); +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + +#pragma clang assume_nonnull begin + + + +typedef NSInteger UIPencilPreferredAction; enum { + + UIPencilPreferredActionIgnore = 0, + + + UIPencilPreferredActionSwitchEraser, + + + UIPencilPreferredActionSwitchPrevious, + + + UIPencilPreferredActionShowColorPalette, + +} __attribute__((availability(ios,introduced=12.1))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + +// @protocol UIPencilInteractionDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=12.1))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPencilInteraction +#define _REWRITER_typedef_UIPencilInteraction +typedef struct objc_object UIPencilInteraction; +typedef struct {} _objc_exc_UIPencilInteraction; +#endif + +struct UIPencilInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +@property (class, nonatomic, readonly) UIPencilPreferredAction preferredTapAction; + +// @property (nonatomic, weak, nullable) id delegate; + +// @property (nonatomic, getter=isEnabled) BOOL enabled; + +/* @end */ + + + +__attribute__((availability(ios,introduced=12.1))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIPencilInteractionDelegate + +/* @optional */ + + + + + + +// - (void)pencilInteractionDidTap:(UIPencilInteraction *)interaction; + +/* @end */ + +#pragma clang assume_nonnull end + + + + +// @class UIScene; +#ifndef _REWRITER_typedef_UIScene +#define _REWRITER_typedef_UIScene +typedef struct objc_object UIScene; +typedef struct {} _objc_exc_UIScene; +#endif + +#ifndef _REWRITER_typedef_UIOpenURLContext +#define _REWRITER_typedef_UIOpenURLContext +typedef struct objc_object UIOpenURLContext; +typedef struct {} _objc_exc_UIOpenURLContext; +#endif + +#ifndef _REWRITER_typedef_UNNotificationResponse +#define _REWRITER_typedef_UNNotificationResponse +typedef struct objc_object UNNotificationResponse; +typedef struct {} _objc_exc_UNNotificationResponse; +#endif + +#ifndef _REWRITER_typedef_UIApplicationShortcutItem +#define _REWRITER_typedef_UIApplicationShortcutItem +typedef struct objc_object UIApplicationShortcutItem; +typedef struct {} _objc_exc_UIApplicationShortcutItem; +#endif + +#ifndef _REWRITER_typedef_CKShareMetadata +#define _REWRITER_typedef_CKShareMetadata +typedef struct objc_object CKShareMetadata; +typedef struct {} _objc_exc_CKShareMetadata; +#endif + + +#pragma clang assume_nonnull begin + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneConnectionOptions +#define _REWRITER_typedef_UISceneConnectionOptions +typedef struct objc_object UISceneConnectionOptions; +typedef struct {} _objc_exc_UISceneConnectionOptions; +#endif + +struct UISceneConnectionOptions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + +// @property (nonatomic, readonly, copy) NSSet *URLContexts; + + + +// @property (nullable, nonatomic, readonly) NSString *sourceApplication; + + + +// @property (nullable, nonatomic, readonly) NSString *handoffUserActivityType; + + + + + +// @property (nonatomic, readonly, copy) NSSet *userActivities; + + +// @property (nullable, nonatomic, readonly) UNNotificationResponse *notificationResponse __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, readonly) UIApplicationShortcutItem *shortcutItem __attribute__((availability(tvos,unavailable))); + + +// @property (nullable, nonatomic, readonly) CKShareMetadata *cloudKitShareMetadata; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneOpenURLOptions +#define _REWRITER_typedef_UISceneOpenURLOptions +typedef struct objc_object UISceneOpenURLOptions; +typedef struct {} _objc_exc_UISceneOpenURLOptions; +#endif + +struct UISceneOpenURLOptions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + + +// @property (nullable, nonatomic, readonly) NSString *sourceApplication; + + +// @property (nullable, nonatomic, readonly) id annotation; + + +// @property (nonatomic, readonly) BOOL openInPlace; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneOpenExternalURLOptions +#define _REWRITER_typedef_UISceneOpenExternalURLOptions +typedef struct objc_object UISceneOpenExternalURLOptions; +typedef struct {} _objc_exc_UISceneOpenExternalURLOptions; +#endif + +struct UISceneOpenExternalURLOptions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readwrite) BOOL universalLinksOnly; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneActivationRequestOptions +#define _REWRITER_typedef_UISceneActivationRequestOptions +typedef struct objc_object UISceneActivationRequestOptions; +typedef struct {} _objc_exc_UISceneActivationRequestOptions; +#endif + +struct UISceneActivationRequestOptions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nullable, nonatomic, readwrite, strong) UIScene *requestingScene; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneDestructionRequestOptions +#define _REWRITER_typedef_UISceneDestructionRequestOptions +typedef struct objc_object UISceneDestructionRequestOptions; +typedef struct {} _objc_exc_UISceneDestructionRequestOptions; +#endif + +struct UISceneDestructionRequestOptions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UISceneSession; +#ifndef _REWRITER_typedef_UISceneSession +#define _REWRITER_typedef_UISceneSession +typedef struct objc_object UISceneSession; +typedef struct {} _objc_exc_UISceneSession; +#endif + +#ifndef _REWRITER_typedef_UISceneConnectionOptions +#define _REWRITER_typedef_UISceneConnectionOptions +typedef struct objc_object UISceneConnectionOptions; +typedef struct {} _objc_exc_UISceneConnectionOptions; +#endif + +#ifndef _REWRITER_typedef_UIOpenURLContext +#define _REWRITER_typedef_UIOpenURLContext +typedef struct objc_object UIOpenURLContext; +typedef struct {} _objc_exc_UIOpenURLContext; +#endif + +#ifndef _REWRITER_typedef_UISceneOpenExternalURLOptions +#define _REWRITER_typedef_UISceneOpenExternalURLOptions +typedef struct objc_object UISceneOpenExternalURLOptions; +typedef struct {} _objc_exc_UISceneOpenExternalURLOptions; +#endif + +#ifndef _REWRITER_typedef_UISceneActivationConditions +#define _REWRITER_typedef_UISceneActivationConditions +typedef struct objc_object UISceneActivationConditions; +typedef struct {} _objc_exc_UISceneActivationConditions; +#endif + +// @protocol UISceneDelegate; + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIScene +#define _REWRITER_typedef_UIScene +typedef struct objc_object UIScene; +typedef struct {} _objc_exc_UIScene; +#endif + +struct UIScene_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + +// - (instancetype)initWithSession:(UISceneSession *)session connectionOptions:(UISceneConnectionOptions *)connectionOptions __attribute__((objc_designated_initializer)); + + + +// @property (nonatomic, readonly) UISceneSession *session; + + + + +// @property (nullable, nonatomic, strong) id delegate; + + + +// @property (nonatomic, readonly) UISceneActivationState activationState; + + + + + + +// - (void)openURL:(NSURL*)url options:(nullable UISceneOpenExternalURLOptions *)options completionHandler:(void (^ _Nullable)(BOOL success))completion; + + + +// @property (null_resettable, nonatomic, copy) NSString *title; + + +// @property (nonatomic, strong) UISceneActivationConditions *activationConditions; + +/* @end */ + + +__attribute__((availability(ios,introduced=13.0))) // @protocol UISceneDelegate +/* @optional */ + +// - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions; +// - (void)sceneDidDisconnect:(UIScene *)scene; + +// - (void)sceneDidBecomeActive:(UIScene *)scene; +// - (void)sceneWillResignActive:(UIScene *)scene; + +// - (void)sceneWillEnterForeground:(UIScene *)scene; +// - (void)sceneDidEnterBackground:(UIScene *)scene; + + +// - (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts; +// - (nullable NSUserActivity *)stateRestorationActivityForScene:(UIScene *)scene; + + +// - (void)scene:(UIScene *)scene willContinueUserActivityWithType:(NSString *)userActivityType; +// - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity; +// - (void)scene:(UIScene *)scene didFailToContinueUserActivityWithType:(NSString *)userActivityType error:(NSError *)error; +// - (void)scene:(UIScene *)scene didUpdateUserActivity:(NSUserActivity *)userActivity; +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneWillConnectNotification __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneDidDisconnectNotification __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneDidActivateNotification __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneWillDeactivateNotification __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneWillEnterForegroundNotification __attribute__((availability(ios,introduced=13.0))); +extern "C" __attribute__((visibility ("default"))) NSNotificationName const UISceneDidEnterBackgroundNotification __attribute__((availability(ios,introduced=13.0))); +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIScreen; +#ifndef _REWRITER_typedef_UIScreen +#define _REWRITER_typedef_UIScreen +typedef struct objc_object UIScreen; +typedef struct {} _objc_exc_UIScreen; +#endif + +#ifndef _REWRITER_typedef_UIWindow +#define _REWRITER_typedef_UIWindow +typedef struct objc_object UIWindow; +typedef struct {} _objc_exc_UIWindow; +#endif + +#ifndef _REWRITER_typedef_UIWindowSceneDelegate +#define _REWRITER_typedef_UIWindowSceneDelegate +typedef struct objc_object UIWindowSceneDelegate; +typedef struct {} _objc_exc_UIWindowSceneDelegate; +#endif + +#ifndef _REWRITER_typedef_UISceneDestructionRequestOptions +#define _REWRITER_typedef_UISceneDestructionRequestOptions +typedef struct objc_object UISceneDestructionRequestOptions; +typedef struct {} _objc_exc_UISceneDestructionRequestOptions; +#endif + +#ifndef _REWRITER_typedef_CKShareMetadata +#define _REWRITER_typedef_CKShareMetadata +typedef struct objc_object CKShareMetadata; +typedef struct {} _objc_exc_CKShareMetadata; +#endif + +#ifndef _REWRITER_typedef_UISceneSizeRestrictions +#define _REWRITER_typedef_UISceneSizeRestrictions +typedef struct objc_object UISceneSizeRestrictions; +typedef struct {} _objc_exc_UISceneSizeRestrictions; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIWindowScene +#define _REWRITER_typedef_UIWindowScene +typedef struct objc_object UIWindowScene; +typedef struct {} _objc_exc_UIWindowScene; +#endif + +struct UIWindowScene_IMPL { + struct UIScene_IMPL UIScene_IVARS; +}; + + + +// @property (nonatomic, readonly) UIScreen *screen; +// @property (nonatomic, readonly) UIInterfaceOrientation interfaceOrientation __attribute__((availability(tvos,unavailable))); +// @property (nonatomic, readonly) id coordinateSpace; +// @property (nonatomic, readonly) UITraitCollection *traitCollection; + + +// @property (nonatomic, readonly, nullable) UISceneSizeRestrictions *sizeRestrictions __attribute__((availability(ios,introduced=13.0))); + + + +// @property (nonatomic, readonly) NSArray *windows; + +/* @end */ + + + +__attribute__((availability(ios,introduced=13.0))) // @protocol UIWindowSceneDelegate +/* @optional */ +// @property (nullable, nonatomic, strong) UIWindow *window; + +// - (void)windowScene:(UIWindowScene *)windowScene didUpdateCoordinateSpace:(id)previousCoordinateSpace interfaceOrientation:(UIInterfaceOrientation)previousInterfaceOrientation traitCollection:(UITraitCollection *)previousTraitCollection __attribute__((availability(tvos,unavailable))); + + + + +// - (void)windowScene:(UIWindowScene *)windowScene performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler __attribute__((availability(tvos,unavailable))); + + + + + +// - (void)windowScene:(UIWindowScene *)windowScene userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata; +/* @end */ + + + + +extern "C" __attribute__((visibility ("default"))) UISceneSessionRole const UIWindowSceneSessionRoleApplication __attribute__((availability(ios,introduced=13.0))); + + +extern "C" __attribute__((visibility ("default"))) UISceneSessionRole const UIWindowSceneSessionRoleExternalDisplay __attribute__((availability(ios,introduced=13.0))); + + +typedef NSInteger UIWindowSceneDismissalAnimation; enum { + UIWindowSceneDismissalAnimationStandard = 1, + UIWindowSceneDismissalAnimationCommit = 2, + UIWindowSceneDismissalAnimationDecline = 3 +} __attribute__((availability(ios,introduced=13.0))); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIWindowSceneDestructionRequestOptions +#define _REWRITER_typedef_UIWindowSceneDestructionRequestOptions +typedef struct objc_object UIWindowSceneDestructionRequestOptions; +typedef struct {} _objc_exc_UIWindowSceneDestructionRequestOptions; +#endif + +struct UIWindowSceneDestructionRequestOptions_IMPL { + struct UISceneDestructionRequestOptions_IMPL UISceneDestructionRequestOptions_IVARS; +}; + +// @property (nonatomic, readwrite) UIWindowSceneDismissalAnimation windowDismissalAnimation; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneSizeRestrictions +#define _REWRITER_typedef_UISceneSizeRestrictions +typedef struct objc_object UISceneSizeRestrictions; +typedef struct {} _objc_exc_UISceneSizeRestrictions; +#endif + +struct UISceneSizeRestrictions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, assign) CGSize minimumSize; +// @property (nonatomic, assign) CGSize maximumSize; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIScene; +#ifndef _REWRITER_typedef_UIScene +#define _REWRITER_typedef_UIScene +typedef struct objc_object UIScene; +typedef struct {} _objc_exc_UIScene; +#endif + +#ifndef _REWRITER_typedef_UIStoryboard +#define _REWRITER_typedef_UIStoryboard +typedef struct objc_object UIStoryboard; +typedef struct {} _objc_exc_UIStoryboard; +#endif + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneConfiguration +#define _REWRITER_typedef_UISceneConfiguration +typedef struct objc_object UISceneConfiguration; +typedef struct {} _objc_exc_UISceneConfiguration; +#endif + +struct UISceneConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + + +// + (instancetype)configurationWithName:(nullable NSString *)name sessionRole:(UISceneSessionRole)sessionRole; +// - (instancetype)initWithName:(nullable NSString *)name sessionRole:(UISceneSessionRole)sessionRole __attribute__((objc_designated_initializer)); + +// @property (nonatomic, nullable, readonly) NSString *name; +// @property (nonatomic, readonly) UISceneSessionRole role; + +// @property (nonatomic, nullable) Class sceneClass; +// @property (nonatomic, nullable) Class delegateClass; +// @property (nonatomic, nullable, strong) UIStoryboard *storyboard; +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneSession +#define _REWRITER_typedef_UISceneSession +typedef struct objc_object UISceneSession; +typedef struct {} _objc_exc_UISceneSession; +#endif + +struct UISceneSession_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + +// @property (nonatomic, readonly, nullable) UIScene *scene; + +// @property (nonatomic, readonly) UISceneSessionRole role; +// @property (nonatomic, readonly, copy) UISceneConfiguration *configuration; + +// @property (nonatomic, readonly) NSString *persistentIdentifier; + + + +// @property (nonatomic, nullable, strong) NSUserActivity *stateRestorationActivity; + + +// @property (nonatomic, nullable, copy) NSDictionary *userInfo; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UISceneActivationConditions +#define _REWRITER_typedef_UISceneActivationConditions +typedef struct objc_object UISceneActivationConditions; +typedef struct {} _objc_exc_UISceneActivationConditions; +#endif + +struct UISceneActivationConditions_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((objc_designated_initializer)); +// - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder __attribute__((objc_designated_initializer)); + + + + + + + +// @property(nonatomic, copy) NSPredicate *canActivateForTargetContentIdentifierPredicate; +// @property(nonatomic, copy) NSPredicate *prefersToActivateForTargetContentIdentifierPredicate; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) // @interface NSUserActivity (UISceneActivationConditions) + +// @property (nullable, nonatomic, copy) NSString *targetContentIdentifier __attribute__((availability(ios,introduced=13.0))); +/* @end */ + +#pragma clang assume_nonnull end +// @class UISceneOpenURLOptions; +#ifndef _REWRITER_typedef_UISceneOpenURLOptions +#define _REWRITER_typedef_UISceneOpenURLOptions +typedef struct objc_object UISceneOpenURLOptions; +typedef struct {} _objc_exc_UISceneOpenURLOptions; +#endif + + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIOpenURLContext +#define _REWRITER_typedef_UIOpenURLContext +typedef struct objc_object UIOpenURLContext; +typedef struct {} _objc_exc_UIOpenURLContext; +#endif + +struct UIOpenURLContext_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + +// @property (nonatomic, readonly, copy) NSURL *URL; +// @property (nonatomic, readonly, strong) UISceneOpenURLOptions *options; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIStatusBarManager +#define _REWRITER_typedef_UIStatusBarManager +typedef struct objc_object UIStatusBarManager; +typedef struct {} _objc_exc_UIStatusBarManager; +#endif + +struct UIStatusBarManager_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +// @property (nonatomic, readonly) UIStatusBarStyle statusBarStyle; +// @property (nonatomic, readonly, getter=isStatusBarHidden) BOOL statusBarHidden; +// @property (nonatomic, readonly) CGRect statusBarFrame; + +/* @end */ + + + +// @interface UIWindowScene (StatusBarManager) + +// @property (nonatomic, readonly, nullable) UIStatusBarManager *statusBarManager __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(tvos,unavailable))); + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UIScreenshotServiceDelegate; + + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIScreenshotService +#define _REWRITER_typedef_UIScreenshotService +typedef struct objc_object UIScreenshotService; +typedef struct {} _objc_exc_UIScreenshotService; +#endif + +struct UIScreenshotService_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + + +// @property (nonatomic, weak, nullable) id delegate; + + + + +// @property (nonatomic, weak, readonly, nullable) UIWindowScene *windowScene; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) // @interface UIWindowScene (UIScreenshotService) + + + + +// @property (nonatomic, readonly, nullable) UIScreenshotService *screenshotService; + +/* @end */ + + + +// @protocol UIScreenshotServiceDelegate + +/* @optional */ + + + + + + + +// - (void)screenshotService:(UIScreenshotService *)screenshotService generatePDFRepresentationWithCompletion:(void (^)(NSData *_Nullable PDFData, NSInteger indexOfCurrentPage, CGRect rectInCurrentPage))completionHandler; + +/* @end */ + +#pragma clang assume_nonnull end + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @interface NSUserActivity (NSItemProvider) +/* @end */ + + + + +// @class UNNotification; +#ifndef _REWRITER_typedef_UNNotification +#define _REWRITER_typedef_UNNotification +typedef struct objc_object UNNotification; +typedef struct {} _objc_exc_UNNotification; +#endif + + +#pragma clang assume_nonnull begin + +extern NSString *const UNNotificationDefaultActionIdentifier __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,unavailable))); +extern NSString *const UNNotificationDismissActionIdentifier __attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,unavailable))); + +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UNNotificationResponse +#define _REWRITER_typedef_UNNotificationResponse +typedef struct objc_object UNNotificationResponse; +typedef struct {} _objc_exc_UNNotificationResponse; +#endif + +struct UNNotificationResponse_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readonly, copy) UNNotification *notification; + + + + + +// @property (nonatomic, readonly, copy) NSString *actionIdentifier; + +// - (instancetype)init __attribute__((unavailable)); + +/* @end */ + + +__attribute__((availability(macos,introduced=10.14))) __attribute__((availability(ios,introduced=10.0))) __attribute__((availability(watchos,introduced=3.0))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UNTextInputNotificationResponse +#define _REWRITER_typedef_UNTextInputNotificationResponse +typedef struct objc_object UNTextInputNotificationResponse; +typedef struct {} _objc_exc_UNTextInputNotificationResponse; +#endif + +struct UNTextInputNotificationResponse_IMPL { + struct UNNotificationResponse_IMPL UNNotificationResponse_IVARS; +}; + + + +// @property (nonatomic, readonly, copy) NSString *userText; + +/* @end */ + +#pragma clang assume_nonnull end + +// @class UIScene; +#ifndef _REWRITER_typedef_UIScene +#define _REWRITER_typedef_UIScene +typedef struct objc_object UIScene; +typedef struct {} _objc_exc_UIScene; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) // @interface UNNotificationResponse (UIKitAdditions) + +// @property (nullable, nonatomic, readonly) UIScene *targetScene __attribute__((availability(ios,introduced=13_0))); +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +typedef NSString *UIActionIdentifier __attribute__((swift_name("UIAction.Identifier"))) __attribute__((swift_wrapper(struct))) __attribute__((availability(ios,introduced=13.0))); + +// @class UIAction; +#ifndef _REWRITER_typedef_UIAction +#define _REWRITER_typedef_UIAction +typedef struct objc_object UIAction; +typedef struct {} _objc_exc_UIAction; +#endif + + +typedef void (*UIActionHandler)(__kindof UIAction *action); + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIAction +#define _REWRITER_typedef_UIAction +typedef struct objc_object UIAction; +typedef struct {} _objc_exc_UIAction; +#endif + +struct UIAction_IMPL { + struct UIMenuElement_IMPL UIMenuElement_IVARS; +}; + + + +// @property (nonatomic, copy) NSString *title; + + +// @property (nullable, nonatomic, copy) UIImage *image; + + +// @property (nullable, nonatomic, copy) NSString *discoverabilityTitle; + + +// @property (nonatomic, readonly) UIActionIdentifier identifier; + + +// @property (nonatomic) UIMenuElementAttributes attributes; + + +// @property (nonatomic) UIMenuElementState state; +#if 0 ++ (instancetype)actionWithTitle:(NSString *)title + image:(nullable UIImage *)image + identifier:(nullable UIActionIdentifier)identifier + handler:(UIActionHandler)handler + __attribute__((availability(swift, unavailable, message="Use init(title:image:identifier:discoverabilityTitle:attributes:state:handler:) instead."))); +#endif + + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end + + + + +// @class UICommand; +#ifndef _REWRITER_typedef_UICommand +#define _REWRITER_typedef_UICommand +typedef struct objc_object UICommand; +typedef struct {} _objc_exc_UICommand; +#endif + +// @class UIMenuSystem; +#ifndef _REWRITER_typedef_UIMenuSystem +#define _REWRITER_typedef_UIMenuSystem +typedef struct objc_object UIMenuSystem; +typedef struct {} _objc_exc_UIMenuSystem; +#endif + + +#pragma clang assume_nonnull begin + + +__attribute__((availability(ios,introduced=13.0))) // @protocol UIMenuBuilder + + +// @property (nonatomic, readonly) UIMenuSystem *system; + + + + + +// - (nullable UIMenu *)menuForIdentifier:(UIMenuIdentifier)identifier __attribute__((swift_name("menu(for:)"))); + + + + + +// - (nullable UIAction *)actionForIdentifier:(UIActionIdentifier)identifier __attribute__((swift_name("action(for:)"))); + + + + + + +// - (nullable UICommand *)commandForAction:(SEL)action propertyList:(nullable id)propertyList __attribute__((swift_private)); + + + + + +// - (void)replaceMenuForIdentifier:(UIMenuIdentifier)replacedIdentifier withMenu:(UIMenu *)replacementMenu __attribute__((swift_name("replace(menu:with:)"))); + + + + + +#if 0 +- (void)replaceChildrenOfMenuForIdentifier:(UIMenuIdentifier)parentIdentifier + fromChildrenBlock:(NSArray *(__attribute__((noescape)) ^)(NSArray *))childrenBlock __attribute__((swift_name("replaceChildren(ofMenu:from:)"))); +#endif + + + + + + +// - (void)insertSiblingMenu:(UIMenu *)siblingMenu beforeMenuForIdentifier:(UIMenuIdentifier)siblingIdentifier __attribute__((swift_name("insertSibling(_:beforeMenu:)"))); + + + + + +// - (void)insertSiblingMenu:(UIMenu *)siblingMenu afterMenuForIdentifier:(UIMenuIdentifier)siblingIdentifier __attribute__((swift_name("insertSibling(_:afterMenu:)"))); + + + + + +// - (void)insertChildMenu:(UIMenu *)childMenu atStartOfMenuForIdentifier:(UIMenuIdentifier)parentIdentifier __attribute__((swift_name("insertChild(_:atStartOfMenu:)"))); + + + + + +// - (void)insertChildMenu:(UIMenu *)childMenu atEndOfMenuForIdentifier:(UIMenuIdentifier)parentIdentifier __attribute__((swift_name("insertChild(_:atEndOfMenu:)"))); + + + + +// - (void)removeMenuForIdentifier:(UIMenuIdentifier)removedIdentifier __attribute__((swift_name("remove(menu:)"))); + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) +#ifndef _REWRITER_typedef_UIMenuSystem +#define _REWRITER_typedef_UIMenuSystem +typedef struct objc_object UIMenuSystem; +typedef struct {} _objc_exc_UIMenuSystem; +#endif + +struct UIMenuSystem_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +@property (class, nonatomic, readonly) UIMenuSystem *mainSystem; + + +@property (class, nonatomic, readonly) UIMenuSystem *contextSystem; + +// + (instancetype)new __attribute__((unavailable)); +// - (instancetype)init __attribute__((unavailable)); + + +// - (void)setNeedsRebuild; + + +// - (void)setNeedsRevalidate; + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +// @class UIViewController; +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + + + + + + + + +typedef UIMenu * _Nullable (*UIContextMenuActionProvider)(NSArray *suggestedActions); + + + + +typedef UIViewController * _Nullable (*UIContextMenuContentPreviewProvider)(void); + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIContextMenuConfiguration +#define _REWRITER_typedef_UIContextMenuConfiguration +typedef struct objc_object UIContextMenuConfiguration; +typedef struct {} _objc_exc_UIContextMenuConfiguration; +#endif + +struct UIContextMenuConfiguration_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) id identifier; +#if 0 ++ (instancetype)configurationWithIdentifier:(nullable id)identifier + previewProvider:(nullable UIContextMenuContentPreviewProvider)previewProvider + actionProvider:(nullable UIContextMenuActionProvider)actionProvider; +#endif + + +/* @end */ + +#pragma clang assume_nonnull end + +#pragma clang assume_nonnull begin + +// @class UITargetedPreview; +#ifndef _REWRITER_typedef_UITargetedPreview +#define _REWRITER_typedef_UITargetedPreview +typedef struct objc_object UITargetedPreview; +typedef struct {} _objc_exc_UITargetedPreview; +#endif + +// @protocol UIContextMenuInteractionDelegate; + +typedef NSInteger UIContextMenuInteractionCommitStyle; enum { + UIContextMenuInteractionCommitStyleDismiss = 0, + UIContextMenuInteractionCommitStylePop, +} __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIContextMenuInteraction +#define _REWRITER_typedef_UIContextMenuInteraction +typedef struct objc_object UIContextMenuInteraction; +typedef struct {} _objc_exc_UIContextMenuInteraction; +#endif + +struct UIContextMenuInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, weak, readonly) id delegate; + +// - (instancetype)initWithDelegate:(id)delegate __attribute__((objc_designated_initializer)); + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + + + + + + +// - (CGPoint)locationInView:(nullable UIView *)view; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIContextMenuInteractionAnimating + + +// @property (nonatomic, readonly, nullable) UIViewController *previewViewController; + +// - (void)addAnimations:(void (^)(void))animations; +// - (void)addCompletion:(void (^)(void))completion; + +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIContextMenuInteractionCommitAnimating + + +// @property (nonatomic) UIContextMenuInteractionCommitStyle preferredCommitStyle; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIContextMenuInteractionDelegate +// - (nullable UIContextMenuConfiguration *)contextMenuInteraction:(UIContextMenuInteraction *)interaction configurationForMenuAtLocation:(CGPoint)location; + +/* @optional */ + + + + + + + +// - (nullable UITargetedPreview *)contextMenuInteraction:(UIContextMenuInteraction *)interaction previewForHighlightingMenuWithConfiguration:(UIContextMenuConfiguration *)configuration; +// - (nullable UITargetedPreview *)contextMenuInteraction:(UIContextMenuInteraction *)interaction previewForDismissingMenuWithConfiguration:(UIContextMenuConfiguration *)configuration; +// - (void)contextMenuInteraction:(UIContextMenuInteraction *)interaction willPerformPreviewActionForMenuWithConfiguration:(UIContextMenuConfiguration *)configuration animator:(id)animator; +// - (void)contextMenuInteraction:(UIContextMenuInteraction *)interaction willDisplayMenuForConfiguration:(UIContextMenuConfiguration *)configuration animator:(nullable id)animator; +// - (void)contextMenuInteraction:(UIContextMenuInteraction *)interaction willEndForConfiguration:(UIContextMenuConfiguration *)configuration animator:(nullable id)animator; + +/* @end */ + +#pragma clang assume_nonnull end + + + + +#pragma clang assume_nonnull begin + +// @class UIWindowScene; +#ifndef _REWRITER_typedef_UIWindowScene +#define _REWRITER_typedef_UIWindowScene +typedef struct objc_object UIWindowScene; +typedef struct {} _objc_exc_UIWindowScene; +#endif + + +__attribute__((availability(ios,introduced=13.0))) // @protocol UITextFormattingCoordinatorDelegate +// - (void)updateTextAttributesWithConversionHandler:(__attribute__((noescape)) UITextAttributesConversionHandler _Nonnull)conversionHandler __attribute__((availability(ios,introduced=13.0))); +/* @end */ + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.0))) + + +#ifndef _REWRITER_typedef_UITextFormattingCoordinator +#define _REWRITER_typedef_UITextFormattingCoordinator +typedef struct objc_object UITextFormattingCoordinator; +typedef struct {} _objc_exc_UITextFormattingCoordinator; +#endif + +struct UITextFormattingCoordinator_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// @property(nullable, nonatomic, weak) id delegate; +@property(class, readonly, getter=isFontPanelVisible) BOOL fontPanelVisible; + +// + (instancetype)textFormattingCoordinatorForWindowScene:(UIWindowScene *)windowScene; + +// - (instancetype)initWithWindowScene:(UIWindowScene *)windowScene __attribute__((objc_designated_initializer)); +// - (instancetype)init __attribute__((unavailable)); + + +#if 0 +- (void)setSelectedAttributes:(NSDictionary *)attributes + isMultiple:(BOOL)flag; +#endif + + + +// + (void)toggleFontPanel:(id)sender; + +/* @end */ + +#pragma clang assume_nonnull end + + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPointerRegion +#define _REWRITER_typedef_UIPointerRegion +typedef struct objc_object UIPointerRegion; +typedef struct {} _objc_exc_UIPointerRegion; +#endif + +struct UIPointerRegion_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, readonly) CGRect rect; +// @property (nonatomic, readonly, nullable) id identifier __attribute__((swift_private)); + + + + + + + +// + (instancetype)regionWithRect:(CGRect)rect identifier:(nullable id)identifier __attribute__((swift_private)); +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end +// @class UITargetedPreview; +#ifndef _REWRITER_typedef_UITargetedPreview +#define _REWRITER_typedef_UITargetedPreview +typedef struct objc_object UITargetedPreview; +typedef struct {} _objc_exc_UITargetedPreview; +#endif + +#ifndef _REWRITER_typedef_UIBezierPath +#define _REWRITER_typedef_UIBezierPath +typedef struct objc_object UIBezierPath; +typedef struct {} _objc_exc_UIBezierPath; +#endif + +#ifndef _REWRITER_typedef_UIPointerEffect +#define _REWRITER_typedef_UIPointerEffect +typedef struct objc_object UIPointerEffect; +typedef struct {} _objc_exc_UIPointerEffect; +#endif + +#ifndef _REWRITER_typedef_UIPointerShape +#define _REWRITER_typedef_UIPointerShape +typedef struct objc_object UIPointerShape; +typedef struct {} _objc_exc_UIPointerShape; +#endif + + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPointerStyle +#define _REWRITER_typedef_UIPointerStyle +typedef struct objc_object UIPointerStyle; +typedef struct {} _objc_exc_UIPointerStyle; +#endif + +struct UIPointerStyle_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + + + + +// + (instancetype)styleWithEffect:(UIPointerEffect *)effect shape:(nullable UIPointerShape *)shape __attribute__((swift_private)); + + + + + + + +// + (instancetype)styleWithShape:(UIPointerShape *)shape constrainedAxes:(UIAxis)axes __attribute__((swift_private)); + + + + +// + (instancetype)hiddenPointerStyle; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)) +#ifndef _REWRITER_typedef_UIPointerEffect +#define _REWRITER_typedef_UIPointerEffect +typedef struct objc_object UIPointerEffect; +typedef struct {} _objc_exc_UIPointerEffect; +#endif + +struct UIPointerEffect_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, copy, readonly) UITargetedPreview *preview; +// + (instancetype)effectWithPreview:(UITargetedPreview *)preview; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)) +#ifndef _REWRITER_typedef_UIPointerHighlightEffect +#define _REWRITER_typedef_UIPointerHighlightEffect +typedef struct objc_object UIPointerHighlightEffect; +typedef struct {} _objc_exc_UIPointerHighlightEffect; +#endif + +struct UIPointerHighlightEffect_IMPL { + struct UIPointerEffect_IMPL UIPointerEffect_IVARS; +}; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)) +#ifndef _REWRITER_typedef_UIPointerLiftEffect +#define _REWRITER_typedef_UIPointerLiftEffect +typedef struct objc_object UIPointerLiftEffect; +typedef struct {} _objc_exc_UIPointerLiftEffect; +#endif + +struct UIPointerLiftEffect_IMPL { + struct UIPointerEffect_IMPL UIPointerEffect_IVARS; +}; + +/* @end */ + + +typedef NSInteger UIPointerEffectTintMode; enum { + UIPointerEffectTintModeNone = 0, + UIPointerEffectTintModeOverlay, + UIPointerEffectTintModeUnderlay, +} __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)); + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)) +#ifndef _REWRITER_typedef_UIPointerHoverEffect +#define _REWRITER_typedef_UIPointerHoverEffect +typedef struct objc_object UIPointerHoverEffect; +typedef struct {} _objc_exc_UIPointerHoverEffect; +#endif + +struct UIPointerHoverEffect_IMPL { + struct UIPointerEffect_IMPL UIPointerEffect_IVARS; +}; + + +// @property (nonatomic) UIPointerEffectTintMode preferredTintMode; +// @property (nonatomic) BOOL prefersShadow; +// @property (nonatomic) BOOL prefersScaledContent; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_private)) +#ifndef _REWRITER_typedef_UIPointerShape +#define _REWRITER_typedef_UIPointerShape +typedef struct objc_object UIPointerShape; +typedef struct {} _objc_exc_UIPointerShape; +#endif + +struct UIPointerShape_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + + + +// + (instancetype)shapeWithPath:(UIBezierPath *)path; +// + (instancetype)shapeWithRoundedRect:(CGRect)rect; +// + (instancetype)shapeWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; + + + + + + + +// + (instancetype)beamWithPreferredLength:(CGFloat)length axis:(UIAxis)axis; + +// - (instancetype)init __attribute__((unavailable)); +// + (instancetype)new __attribute__((unavailable)); + +/* @end */ + +#pragma clang assume_nonnull end + +// @class UIPointerRegionRequest; +#ifndef _REWRITER_typedef_UIPointerRegionRequest +#define _REWRITER_typedef_UIPointerRegionRequest +typedef struct objc_object UIPointerRegionRequest; +typedef struct {} _objc_exc_UIPointerRegionRequest; +#endif + +// @protocol UIPointerInteractionDelegate, UIPointerInteractionAnimating; + +#pragma clang assume_nonnull begin + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPointerInteraction +#define _REWRITER_typedef_UIPointerInteraction +typedef struct objc_object UIPointerInteraction; +typedef struct {} _objc_exc_UIPointerInteraction; +#endif + +struct UIPointerInteraction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// @property (nonatomic, weak, readonly, nullable) id delegate; +// @property (nonatomic, getter=isEnabled) BOOL enabled; + +// - (instancetype)initWithDelegate:(nullable id)delegate __attribute__((objc_designated_initializer)); + + + + +// - (void)invalidate; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIPointerInteractionDelegate + +/* @optional */ +// - (nullable UIPointerRegion *)pointerInteraction:(UIPointerInteraction *)interaction regionForRequest:(UIPointerRegionRequest *)request defaultRegion:(UIPointerRegion *)defaultRegion; +// - (nullable UIPointerStyle *)pointerInteraction:(UIPointerInteraction *)interaction styleForRegion:(UIPointerRegion *)region; +// - (void)pointerInteraction:(UIPointerInteraction *)interaction willEnterRegion:(UIPointerRegion *)region animator:(id)animator; +// - (void)pointerInteraction:(UIPointerInteraction *)interaction willExitRegion:(UIPointerRegion *)region animator:(id)animator __attribute__((swift_name("pointerInteraction(_:willExit:animator:)"))); + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIPointerRegionRequest +#define _REWRITER_typedef_UIPointerRegionRequest +typedef struct objc_object UIPointerRegionRequest; +typedef struct {} _objc_exc_UIPointerRegionRequest; +#endif + +struct UIPointerRegionRequest_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +// @property (nonatomic, readonly) CGPoint location; + + +// @property (nonatomic, readonly) UIKeyModifierFlags modifiers; + +/* @end */ + + + +extern "C" __attribute__((visibility ("default"))) __attribute__((availability(ios,introduced=13.4))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) // @protocol UIPointerInteractionAnimating + +// - (void)addAnimations:(void (^)(void))animations; +// - (void)addCompletion:(void (^)(BOOL finished))completion; + +/* @end */ + +#pragma clang assume_nonnull end + + +#pragma clang assume_nonnull begin + +// @protocol UIDocumentBrowserViewControllerDelegate; +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIColor +#define _REWRITER_typedef_UIColor +typedef struct objc_object UIColor; +typedef struct {} _objc_exc_UIColor; +#endif + +#ifndef _REWRITER_typedef_UIActivity +#define _REWRITER_typedef_UIActivity +typedef struct objc_object UIActivity; +typedef struct {} _objc_exc_UIActivity; +#endif + +#ifndef _REWRITER_typedef_UIActivityViewController +#define _REWRITER_typedef_UIActivityViewController +typedef struct objc_object UIActivityViewController; +typedef struct {} _objc_exc_UIActivityViewController; +#endif + +#ifndef _REWRITER_typedef_UIDocumentBrowserAction +#define _REWRITER_typedef_UIDocumentBrowserAction +typedef struct objc_object UIDocumentBrowserAction; +typedef struct {} _objc_exc_UIDocumentBrowserAction; +#endif + +#ifndef _REWRITER_typedef_UIDocumentBrowserTransitionController +#define _REWRITER_typedef_UIDocumentBrowserTransitionController +typedef struct objc_object UIDocumentBrowserTransitionController; +typedef struct {} _objc_exc_UIDocumentBrowserTransitionController; +#endif + + +extern NSErrorDomain const UIDocumentBrowserErrorDomain __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); +typedef NSInteger UIDocumentBrowserErrorCode; enum { + UIDocumentBrowserErrorGeneric = 1, + UIDocumentBrowserErrorNoLocationAvailable __attribute__((availability(ios,introduced=12.0))) = 2, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))); + +typedef NSUInteger UIDocumentBrowserImportMode; enum { + UIDocumentBrowserImportModeNone, + UIDocumentBrowserImportModeCopy, + UIDocumentBrowserImportModeMove, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_name("UIDocumentBrowserViewController.ImportMode"))); + +typedef NSUInteger UIDocumentBrowserUserInterfaceStyle; enum { + UIDocumentBrowserUserInterfaceStyleWhite = 0, + UIDocumentBrowserUserInterfaceStyleLight, + UIDocumentBrowserUserInterfaceStyleDark, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_name("UIDocumentBrowserViewController.BrowserUserInterfaceStyle"))); + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIDocumentBrowserViewController +#define _REWRITER_typedef_UIDocumentBrowserViewController +typedef struct objc_object UIDocumentBrowserViewController; +typedef struct {} _objc_exc_UIDocumentBrowserViewController; +#endif + +struct UIDocumentBrowserViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + + +// - (instancetype)initForOpeningFilesWithContentTypes:(nullable NSArray *)allowedContentTypes __attribute__((objc_designated_initializer)); + + +// - (instancetype)initWithNibName:(nullable NSString *)nibName bundle:(nullable NSBundle *)bundle __attribute__((unavailable)); + +// @property (nullable, nonatomic, weak) id delegate; + + + + + +// @property (assign, nonatomic) BOOL allowsDocumentCreation; + + +// @property (assign, nonatomic) BOOL allowsPickingMultipleItems; + +// @property (readonly, copy, nonatomic) NSArray *allowedContentTypes; + + + + + +// @property (readonly, copy, nonatomic) NSArray *recentDocumentsContentTypes __attribute__((availability(ios,introduced=13.0))); + + +// @property (assign, nonatomic) BOOL shouldShowFileExtensions __attribute__((availability(ios,introduced=13.0))); + + + + +// @property (strong, nonatomic) NSArray *additionalLeadingNavigationBarButtonItems; + + +// @property (strong, nonatomic) NSArray *additionalTrailingNavigationBarButtonItems; + + + + + + +// - (void)revealDocumentAtURL:(NSURL *)url importIfNeeded:(BOOL)importIfNeeded completion:(nullable void(^)(NSURL * _Nullable revealedDocumentURL, NSError * _Nullable error))completion; + + + + + +// - (void)importDocumentAtURL:(NSURL *)documentURL nextToDocumentAtURL:(NSURL *)neighbourURL mode:(UIDocumentBrowserImportMode)importMode completionHandler:(void (^)(NSURL * _Nullable, NSError * _Nullable))completion; + + + + + +// - (UIDocumentBrowserTransitionController *)transitionControllerForDocumentAtURL:(NSURL *)documentURL __attribute__((availability(ios,introduced=12.0))) __attribute__((swift_name("transitionController(forDocumentAt:)"))); + +// - (UIDocumentBrowserTransitionController *)transitionControllerForDocumentURL:(NSURL *)documentURL __attribute__((availability(ios,introduced=11.0,deprecated=12.0,replacement="transitionControllerForDocumentAtURL:"))); + + + + + +// @property (copy, nonatomic) NSArray *customActions; + + + + +// @property (assign, nonatomic) UIDocumentBrowserUserInterfaceStyle browserUserInterfaceStyle; + + +// @property(copy, nonatomic) NSString * localizedCreateDocumentActionTitle __attribute__((availability(ios,introduced=13.0))); + + +// @property(assign, nonatomic) CGFloat defaultDocumentAspectRatio __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +// @protocol UIDocumentBrowserViewControllerDelegate + +/* @optional */ + + + +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller didPickDocumentURLs:(NSArray *)documentURLs __attribute__((availability(ios,introduced=11.0,deprecated=12.0,replacement="documentBrowser:didPickDocumentsAtURLs:"))); + +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller didPickDocumentsAtURLs:(NSArray *)documentURLs __attribute__((availability(ios,introduced=12.0))); +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller didRequestDocumentCreationWithHandler:(void(^)(NSURL *_Nullable urlToImport, UIDocumentBrowserImportMode importMode))importHandler; +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller didImportDocumentAtURL:(NSURL *)sourceURL toDestinationURL:(NSURL *)destinationURL; +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller failedToImportDocumentAtURL:(NSURL *)documentURL error:(NSError * _Nullable)error; + + + + +// - (NSArray<__kindof UIActivity *> *)documentBrowser:(UIDocumentBrowserViewController *)controller applicationActivitiesForDocumentURLs:(NSArray *)documentURLs; + + +// - (void)documentBrowser:(UIDocumentBrowserViewController *)controller willPresentActivityViewController:(UIActivityViewController *)activityViewController; + +/* @end */ + + + + + + + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) + +#ifndef _REWRITER_typedef_UIDocumentBrowserTransitionController +#define _REWRITER_typedef_UIDocumentBrowserTransitionController +typedef struct objc_object UIDocumentBrowserTransitionController; +typedef struct {} _objc_exc_UIDocumentBrowserTransitionController; +#endif + +struct UIDocumentBrowserTransitionController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); + + +// @property (strong, nonatomic, nullable) NSProgress *loadingProgress; + + + + + +// @property (weak, nullable, nonatomic) UIView *targetView; + +/* @end */ + +#pragma clang assume_nonnull end +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + + +#pragma clang assume_nonnull begin + +typedef NSInteger UIDocumentBrowserActionAvailability; enum { + UIDocumentBrowserActionAvailabilityMenu = 1, + UIDocumentBrowserActionAvailabilityNavigationBar = 1 << 1, +} __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) __attribute__((swift_name("UIDocumentBrowserAction.Availability"))); + + +__attribute__((availability(ios,introduced=11.0))) __attribute__((availability(watchos,unavailable))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocumentBrowserAction +#define _REWRITER_typedef_UIDocumentBrowserAction +typedef struct objc_object UIDocumentBrowserAction; +typedef struct {} _objc_exc_UIDocumentBrowserAction; +#endif + +struct UIDocumentBrowserAction_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initWithIdentifier:(NSString *)identifier localizedTitle:(NSString *)localizedTitle availability:(UIDocumentBrowserActionAvailability)availability handler:(void(^)(NSArray *))handler __attribute__((objc_designated_initializer)); + +// @property (nonatomic, readonly) NSString *identifier; +// @property (nonatomic, readonly) NSString *localizedTitle; +// @property (nonatomic, readonly) UIDocumentBrowserActionAvailability availability; + +// @property (nonatomic, strong, nullable) UIImage *image; + + +// @property (nonatomic, copy) NSArray *supportedContentTypes; + + +// @property (nonatomic, assign) BOOL supportsMultipleItems; + +/* @end */ + +#pragma clang assume_nonnull end + + + + + + + + + + + +#pragma clang assume_nonnull begin + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIViewController +#define _REWRITER_typedef_UIViewController +typedef struct objc_object UIViewController; +typedef struct {} _objc_exc_UIViewController; +#endif + + +typedef NSString * UIActivityType __attribute__((swift_wrapper(struct))); + +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToFacebook __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToTwitter __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToWeibo __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeMessage __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeMail __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePrint __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeCopyToPasteboard __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeAssignToContact __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeSaveToCameraRoll __attribute__((availability(ios,introduced=6.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeAddToReadingList __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToFlickr __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToVimeo __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypePostToTencentWeibo __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeAirDrop __attribute__((availability(ios,introduced=7.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeOpenInIBooks __attribute__((availability(ios,introduced=9.0))) __attribute__((availability(tvos,unavailable))); +extern "C" __attribute__((visibility ("default"))) UIActivityType const UIActivityTypeMarkupAsPDF __attribute__((availability(ios,introduced=11.0))) __attribute__((availability(tvos,unavailable))); + +typedef NSInteger UIActivityCategory; enum { + UIActivityCategoryAction, + UIActivityCategoryShare, +} __attribute__((availability(ios,introduced=7_0))) __attribute__((availability(tvos,unavailable))); + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=6_0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIActivity +#define _REWRITER_typedef_UIActivity +typedef struct objc_object UIActivity; +typedef struct {} _objc_exc_UIActivity; +#endif + +struct UIActivity_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + + +@property(class, nonatomic, readonly) UIActivityCategory activityCategory __attribute__((availability(ios,introduced=7.0))); + +// @property(nonatomic, readonly, nullable) UIActivityType activityType; +// @property(nonatomic, readonly, nullable) NSString *activityTitle; +// @property(nonatomic, readonly, nullable) UIImage *activityImage; + +// - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems; +// - (void)prepareWithActivityItems:(NSArray *)activityItems; + +// @property(nonatomic, readonly, nullable) UIViewController *activityViewController; +// - (void)performActivity; + + + +// - (void)activityDidFinish:(BOOL)completed; +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @class UIActivityViewController; +#ifndef _REWRITER_typedef_UIActivityViewController +#define _REWRITER_typedef_UIActivityViewController +typedef struct objc_object UIActivityViewController; +typedef struct {} _objc_exc_UIActivityViewController; +#endif + +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_LPLinkMetadata +#define _REWRITER_typedef_LPLinkMetadata +typedef struct objc_object LPLinkMetadata; +typedef struct {} _objc_exc_LPLinkMetadata; +#endif + + +// @protocol UIActivityItemSource + +/* @required */ + +// - (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController; +// - (nullable id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(nullable UIActivityType)activityType; + +/* @optional */ + +// - (NSString *)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(nullable UIActivityType)activityType; +// - (NSString *)activityViewController:(UIActivityViewController *)activityViewController dataTypeIdentifierForActivityType:(nullable UIActivityType)activityType; +// - (nullable UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(nullable UIActivityType)activityType suggestedSize:(CGSize)size; +// - (nullable LPLinkMetadata *)activityViewControllerLinkMetadata:(UIActivityViewController *)activityViewController __attribute__((availability(ios,introduced=13.0))); + +/* @end */ + + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=6_0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIActivityItemProvider +#define _REWRITER_typedef_UIActivityItemProvider +typedef struct objc_object UIActivityItemProvider; +typedef struct {} _objc_exc_UIActivityItemProvider; +#endif + +struct UIActivityItemProvider_IMPL { + struct NSOperation_IMPL NSOperation_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initWithPlaceholderItem:(id)placeholderItem __attribute__((objc_designated_initializer)); + +// @property(nullable,nonatomic,strong,readonly) id placeholderItem; +// @property(nullable,nonatomic,copy,readonly) UIActivityType activityType; + +// @property(nonnull, nonatomic, readonly) id item; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +typedef void (*UIActivityViewControllerCompletionHandler)(UIActivityType _Nullable activityType, BOOL completed); +typedef void (*UIActivityViewControllerCompletionWithItemsHandler)(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError); + +__attribute__((visibility("default"))) __attribute__((availability(ios,introduced=6_0))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIActivityViewController +#define _REWRITER_typedef_UIActivityViewController +typedef struct objc_object UIActivityViewController; +typedef struct {} _objc_exc_UIActivityViewController; +#endif + +struct UIActivityViewController_IMPL { + struct UIViewController_IMPL UIViewController_IVARS; +}; + + +// - (instancetype)init __attribute__((unavailable)); +// - (instancetype)initWithNibName:(nullable NSString *)nibNameOrNil bundle:(nullable NSBundle *)nibBundleOrNil __attribute__((unavailable)); +// - (nullable instancetype)initWithCoder:(NSCoder *)coder __attribute__((unavailable)); +// - (instancetype)initWithActivityItems:(NSArray *)activityItems applicationActivities:(nullable NSArray<__kindof UIActivity *> *)applicationActivities __attribute__((objc_designated_initializer)); + +// @property(nullable, nonatomic, copy) UIActivityViewControllerCompletionHandler completionHandler __attribute__((availability(ios,introduced=6.0,deprecated=8.0,replacement="completionWithItemsHandler"))); +// @property(nullable, nonatomic, copy) UIActivityViewControllerCompletionWithItemsHandler completionWithItemsHandler __attribute__((availability(ios,introduced=8.0))); + +// @property(nullable, nonatomic, copy) NSArray *excludedActivityTypes; + +/* @end */ + +#pragma clang assume_nonnull end +#pragma clang assume_nonnull begin + +// @protocol UIDocumentInteractionControllerDelegate; + +// @class UIImage; +#ifndef _REWRITER_typedef_UIImage +#define _REWRITER_typedef_UIImage +typedef struct objc_object UIImage; +typedef struct {} _objc_exc_UIImage; +#endif + +#ifndef _REWRITER_typedef_UIView +#define _REWRITER_typedef_UIView +typedef struct objc_object UIView; +typedef struct {} _objc_exc_UIView; +#endif + +#ifndef _REWRITER_typedef_UIPopoverController +#define _REWRITER_typedef_UIPopoverController +typedef struct objc_object UIPopoverController; +typedef struct {} _objc_exc_UIPopoverController; +#endif + + +__attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))) +#ifndef _REWRITER_typedef_UIDocumentInteractionController +#define _REWRITER_typedef_UIDocumentInteractionController +typedef struct objc_object UIDocumentInteractionController; +typedef struct {} _objc_exc_UIDocumentInteractionController; +#endif + +struct UIDocumentInteractionController_IMPL { + struct NSObject_IMPL NSObject_IVARS; +}; + + +// + (UIDocumentInteractionController *)interactionControllerWithURL:(NSURL *)url; + +// @property(nullable, nonatomic, weak) id delegate; + +// @property(nullable, strong) NSURL *URL; +// @property(nullable, nonatomic, copy) NSString *UTI; +// @property(nullable, copy) NSString *name; +// @property(nonatomic, readonly) NSArray *icons; +// @property(nullable, nonatomic, strong) id annotation; + + + + + + +// - (BOOL)presentOptionsMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated; +// - (BOOL)presentOptionsMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated; + + + +// - (BOOL)presentPreviewAnimated:(BOOL)animated; + + + + +// - (BOOL)presentOpenInMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated; +// - (BOOL)presentOpenInMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated; + + +// - (void)dismissPreviewAnimated:(BOOL)animated; + + +// - (void)dismissMenuAnimated:(BOOL)animated; + + + +// @property(nonatomic, readonly) NSArray<__kindof UIGestureRecognizer *> *gestureRecognizers; + +/* @end */ + + +__attribute__((availability(ios,introduced=3.2))) __attribute__((availability(tvos,unavailable))) // @protocol UIDocumentInteractionControllerDelegate + +/* @optional */ + + + + +// - (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller; + + + + + +// - (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller; +// - (nullable UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller; + + +// - (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller; +// - (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller; + + +// - (void)documentInteractionControllerWillPresentOptionsMenu:(UIDocumentInteractionController *)controller; +// - (void)documentInteractionControllerDidDismissOptionsMenu:(UIDocumentInteractionController *)controller; + + +// - (void)documentInteractionControllerWillPresentOpenInMenu:(UIDocumentInteractionController *)controller; +// - (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller; + + +// - (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(nullable NSString *)application; +// - (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(nullable NSString *)application; + + +// - (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller canPerformAction:(nullable SEL)action __attribute__((availability(ios,introduced=3_2,deprecated=6_0,message="" ))); +// - (BOOL)documentInteractionController:(UIDocumentInteractionController *)controller performAction:(nullable SEL)action __attribute__((availability(ios,introduced=3_2,deprecated=6_0,message="" ))); + +/* @end */ + +#pragma clang assume_nonnull end + +#ifndef _REWRITER_typedef_AppDelegate +#define _REWRITER_typedef_AppDelegate +typedef struct objc_object AppDelegate; +typedef struct {} _objc_exc_AppDelegate; +#endif + +struct AppDelegate_IMPL { + struct UIResponder_IMPL UIResponder_IVARS; +}; + + + +/* @end */ + + +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; + + appDelegateClassName = NSStringFromClass(((Class (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("AppDelegate"), sel_registerName("class"))); + NSArray *a = ((NSArray *(*)(Class, SEL, ObjectType _Nonnull const * _Nonnull, NSUInteger))(void *)objc_msgSend)(objc_getClass("NSArray"), sel_registerName("arrayWithObjects:count:"), (const id *)__NSContainer_literal(3U, ((NSNumber *(*)(Class, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), 1), ((NSNumber *(*)(Class, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), 2), ((NSNumber *(*)(Class, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), 3)).arr, 3U); + uint32_t count = ((NSUInteger (*)(id, SEL))(void *)objc_msgSend)((id)a, sel_registerName("count")) - 1; + for (int32_t i = -1; i < count; ++i) { + NSLog((NSString *)&__NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_0, __func__, ((id (*)(id, SEL, NSUInteger))(void *)objc_msgSend)((id)a, sel_registerName("objectAtIndexedSubscript:"), (NSUInteger)i + 1)); + } + for (int32_t i = -1; (int32_t)i < (int32_t)count; ++i) { + NSLog((NSString *)&__NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_1, __func__, ((id (*)(id, SEL, NSUInteger))(void *)objc_msgSend)((id)a, sel_registerName("objectAtIndexedSubscript:"), (NSUInteger)i + 1));//仅仅执行了该行 + } + for (int32_t i = -1; (uint32_t)i < (uint32_t)count; ++i) { + NSLog((NSString *)&__NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_8dcc5f_mi_2, __func__, ((id (*)(id, SEL, NSUInteger))(void *)objc_msgSend)((id)a, sel_registerName("objectAtIndexedSubscript:"), (NSUInteger)i + 1)); + } + } + return UIApplicationMain(argc, argv, __null, appDelegateClassName); +} +static struct IMAGE_INFO { unsigned version; unsigned flag; } _OBJC_IMAGE_INFO = { 0, 2 }; diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.m" new file mode 100644 index 0000000..5820d62 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyle/main.m" @@ -0,0 +1,30 @@ +// +// main.m +// Demo_01_CodeStyle +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + // Setup code that might create autoreleased objects goes here. + appDelegateClassName = NSStringFromClass([AppDelegate class]); + NSArray *a = @[@1,@2,@3]; + uint32_t count = a.count - 1; + for (int32_t i = -1; i < count; ++i) { + NSLog(@"%s %@", __func__, a[i + 1]); + } + for (int32_t i = -1; (int32_t)i < (int32_t)count; ++i) { + NSLog(@"%s %@", __func__, a[i + 1]); + } + for (int32_t i = -1; (uint32_t)i < (uint32_t)count; ++i) { + NSLog(@"%s %@", __func__, a[i + 1]); + } + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Demo_01_CodeStyleTests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Demo_01_CodeStyleTests.m" new file mode 100644 index 0000000..770b181 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Demo_01_CodeStyleTests.m" @@ -0,0 +1,37 @@ +// +// Demo_01_CodeStyleTests.m +// Demo_01_CodeStyleTests +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Demo_01_CodeStyleTests : XCTestCase + +@end + +@implementation Demo_01_CodeStyleTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleTests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Demo_01_CodeStyleUITests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Demo_01_CodeStyleUITests.m" new file mode 100644 index 0000000..c4e4d91 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Demo_01_CodeStyleUITests.m" @@ -0,0 +1,48 @@ +// +// Demo_01_CodeStyleUITests.m +// Demo_01_CodeStyleUITests +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Demo_01_CodeStyleUITests : XCTestCase + +@end + +@implementation Demo_01_CodeStyleUITests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + self.continueAfterFailure = NO; + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // UI tests must launch the application that they test. + XCUIApplication *app = [[XCUIApplication alloc] init]; + [app launch]; + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testLaunchPerformance { + if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) { + // This measures how long it takes to launch your application. + [self measureWithMetrics:@[XCTOSSignpostMetric.applicationLaunchMetric] block:^{ + [[[XCUIApplication alloc] init] launch]; + }]; + } +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_01_CodeStyle/Demo_01_CodeStyleUITests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..9f961e4 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.pbxproj" @@ -0,0 +1,301 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9A9420F21BB5A3CB005C8F29 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9420E81BB5A3CB005C8F29 /* AppDelegate.m */; settings = {ASSET_TAGS = (); }; }; + 9A9420F31BB5A3CB005C8F29 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A9420E91BB5A3CB005C8F29 /* Assets.xcassets */; settings = {ASSET_TAGS = (); }; }; + 9A9420F41BB5A3CB005C8F29 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A9420EA1BB5A3CB005C8F29 /* LaunchScreen.storyboard */; settings = {ASSET_TAGS = (); }; }; + 9A9420F51BB5A3CB005C8F29 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A9420EC1BB5A3CB005C8F29 /* Main.storyboard */; settings = {ASSET_TAGS = (); }; }; + 9A9420F61BB5A3CB005C8F29 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A9420EE1BB5A3CB005C8F29 /* Info.plist */; settings = {ASSET_TAGS = (); }; }; + 9A9420F71BB5A3CB005C8F29 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9420EF1BB5A3CB005C8F29 /* main.m */; settings = {ASSET_TAGS = (); }; }; + 9A9420F81BB5A3CB005C8F29 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9420F11BB5A3CB005C8F29 /* ViewController.m */; settings = {ASSET_TAGS = (); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 9A9420CC1BB58F17005C8F29 /* CYLArrayCopyDmo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CYLArrayCopyDmo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A9420E71BB5A3CB005C8F29 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9A9420E81BB5A3CB005C8F29 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9A9420E91BB5A3CB005C8F29 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A9420EB1BB5A3CB005C8F29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9A9420ED1BB5A3CB005C8F29 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A9420EE1BB5A3CB005C8F29 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A9420EF1BB5A3CB005C8F29 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9A9420F01BB5A3CB005C8F29 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9A9420F11BB5A3CB005C8F29 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A9420C91BB58F17005C8F29 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A9420C31BB58F17005C8F29 = { + isa = PBXGroup; + children = ( + 9A9420E61BB5A3CB005C8F29 /* CYLArrayCopyDmo */, + 9A9420CD1BB58F17005C8F29 /* Products */, + ); + sourceTree = ""; + }; + 9A9420CD1BB58F17005C8F29 /* Products */ = { + isa = PBXGroup; + children = ( + 9A9420CC1BB58F17005C8F29 /* CYLArrayCopyDmo.app */, + ); + name = Products; + sourceTree = ""; + }; + 9A9420E61BB5A3CB005C8F29 /* CYLArrayCopyDmo */ = { + isa = PBXGroup; + children = ( + 9A9420E71BB5A3CB005C8F29 /* AppDelegate.h */, + 9A9420E81BB5A3CB005C8F29 /* AppDelegate.m */, + 9A9420E91BB5A3CB005C8F29 /* Assets.xcassets */, + 9A9420EA1BB5A3CB005C8F29 /* LaunchScreen.storyboard */, + 9A9420EC1BB5A3CB005C8F29 /* Main.storyboard */, + 9A9420EE1BB5A3CB005C8F29 /* Info.plist */, + 9A9420EF1BB5A3CB005C8F29 /* main.m */, + 9A9420F01BB5A3CB005C8F29 /* ViewController.h */, + 9A9420F11BB5A3CB005C8F29 /* ViewController.m */, + ); + path = CYLArrayCopyDmo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A9420CB1BB58F17005C8F29 /* CYLArrayCopyDmo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A9420E31BB58F18005C8F29 /* Build configuration list for PBXNativeTarget "CYLArrayCopyDmo" */; + buildPhases = ( + 9A9420C81BB58F17005C8F29 /* Sources */, + 9A9420C91BB58F17005C8F29 /* Frameworks */, + 9A9420CA1BB58F17005C8F29 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CYLArrayCopyDmo; + productName = CYLMutableArrayCopyDmo; + productReference = 9A9420CC1BB58F17005C8F29 /* CYLArrayCopyDmo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A9420C41BB58F17005C8F29 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0700; + ORGANIZATIONNAME = "http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁"; + TargetAttributes = { + 9A9420CB1BB58F17005C8F29 = { + CreatedOnToolsVersion = 7.0; + }; + }; + }; + buildConfigurationList = 9A9420C71BB58F17005C8F29 /* Build configuration list for PBXProject "CYLArrayCopyDmo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A9420C31BB58F17005C8F29; + productRefGroup = 9A9420CD1BB58F17005C8F29 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A9420CB1BB58F17005C8F29 /* CYLArrayCopyDmo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A9420CA1BB58F17005C8F29 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A9420F61BB5A3CB005C8F29 /* Info.plist in Resources */, + 9A9420F51BB5A3CB005C8F29 /* Main.storyboard in Resources */, + 9A9420F31BB5A3CB005C8F29 /* Assets.xcassets in Resources */, + 9A9420F41BB5A3CB005C8F29 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A9420C81BB58F17005C8F29 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A9420F81BB5A3CB005C8F29 /* ViewController.m in Sources */, + 9A9420F71BB5A3CB005C8F29 /* main.m in Sources */, + 9A9420F21BB5A3CB005C8F29 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 9A9420EA1BB5A3CB005C8F29 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A9420EB1BB5A3CB005C8F29 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + 9A9420EC1BB5A3CB005C8F29 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A9420ED1BB5A3CB005C8F29 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A9420E11BB58F18005C8F29 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A9420E21BB58F18005C8F29 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A9420E41BB58F18005C8F29 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = CYLArrayCopyDmo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = ChenYilong.CYLMutableArrayCopyDmo; + PRODUCT_NAME = CYLArrayCopyDmo; + }; + name = Debug; + }; + 9A9420E51BB58F18005C8F29 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = CYLArrayCopyDmo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = ChenYilong.CYLMutableArrayCopyDmo; + PRODUCT_NAME = CYLArrayCopyDmo; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A9420C71BB58F17005C8F29 /* Build configuration list for PBXProject "CYLArrayCopyDmo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A9420E11BB58F18005C8F29 /* Debug */, + 9A9420E21BB58F18005C8F29 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A9420E31BB58F18005C8F29 /* Build configuration list for PBXNativeTarget "CYLArrayCopyDmo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A9420E41BB58F18005C8F29 /* Debug */, + 9A9420E51BB58F18005C8F29 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A9420C41BB58F17005C8F29 /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..e0dd5ce --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..97240f7 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" @@ -0,0 +1,5 @@ + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/CYLArrayCopyDmo.xcscheme" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/CYLArrayCopyDmo.xcscheme" new file mode 100644 index 0000000..02e1cac --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/CYLArrayCopyDmo.xcscheme" @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..0e74360 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + CYLArrayCopyDmo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9A9420CB1BB58F17005C8F29 + + primary + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.h" new file mode 100644 index 0000000..e9baf85 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.h" @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// CYLMutableArrayCopyDmo +// +// Created by 陈宜龙 on 15/9/25. +// Copyright © 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.m" new file mode 100644 index 0000000..db5e444 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/AppDelegate.m" @@ -0,0 +1,45 @@ +// +// AppDelegate.m +// CYLMutableArrayCopyDmo +// +// Created by 陈宜龙 on 15/9/25. +// Copyright © 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Images.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Assets.xcassets/AppIcon.appiconset/Contents.json" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Images.xcassets/AppIcon.appiconset/Contents.json" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Assets.xcassets/AppIcon.appiconset/Contents.json" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Base.lproj/LaunchScreen.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Base.lproj/Main.storyboard" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/Main.storyboard" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Base.lproj/Main.storyboard" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Info.plist" new file mode 100644 index 0000000..40c6215 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/Info.plist" @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.h" new file mode 100644 index 0000000..7f0ae48 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// CYLMutableArrayCopyDmo +// +// Created by 陈宜龙 on 15/9/25. +// Copyright © 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.m" new file mode 100644 index 0000000..ee0b776 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/ViewController.m" @@ -0,0 +1,32 @@ +// +// ViewController.m +// CYLMutableArrayCopyDmo +// +// Created by 陈宜龙 on 15/9/25. +// Copyright © 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () +@property (nonatomic ,readwrite, strong) NSArray *array; +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + NSArray *array = @[ @1, @2, @3, @4 ]; + NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array]; + + self.array = mutableArray; + [mutableArray removeAllObjects];; + NSLog(@"%@",self.array); + + [mutableArray addObjectsFromArray:array]; + self.array = [mutableArray copy]; + [mutableArray removeAllObjects];; + NSLog(@"%@",self.array); +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/main.m" new file mode 100644 index 0000000..c107e48 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_13\351\242\230_\347\224\250@property\345\243\260\346\230\216\347\232\204NSString\346\210\226NSArray_NSDictionary_\347\273\217\345\270\270\344\275\277\347\224\250copy\345\205\263\351\224\256\345\255\227_\344\270\272\344\273\200\344\271\210_\345\246\202\346\236\234\346\224\271\347\224\250strong\345\205\263\351\224\256\345\255\227_\345\217\257\350\203\275\351\200\240\346\210\220\344\273\200\344\271\210\351\227\256\351\242\230/CYLMutableArrayCopyDmo/CYLArrayCopyDmo/main.m" @@ -0,0 +1,16 @@ +// +// main.m +// CYLMutableArrayCopyDmo +// +// Created by 陈宜龙 on 15/9/25. +// Copyright © 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" similarity index 56% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" index fbcd50a..df754ee 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.pbxproj" @@ -7,39 +7,32 @@ objects = { /* Begin PBXBuildFile section */ - 9AF373531B920A1300889D8B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF373521B920A1300889D8B /* main.m */; }; - 9AF373561B920A1300889D8B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF373551B920A1300889D8B /* AppDelegate.m */; }; - 9AF373591B920A1300889D8B /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF373581B920A1300889D8B /* ViewController.m */; }; - 9AF3735C1B920A1300889D8B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AF3735A1B920A1300889D8B /* Main.storyboard */; }; - 9AF3735E1B920A1300889D8B /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AF3735D1B920A1300889D8B /* Images.xcassets */; }; - 9AF373611B920A1300889D8B /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9AF3735F1B920A1300889D8B /* LaunchScreen.xib */; }; - 9AF373781B920A2300889D8B /* Person.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF373771B920A2300889D8B /* Person.m */; }; - 9AF3737B1B9212B100889D8B /* MaPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF3737A1B9212B100889D8B /* MaPerson.m */; }; - 9AF899671B928FC400043F71 /* SuperView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF899661B928FC400043F71 /* SuperView.m */; }; - 9AF8996A1B928FD900043F71 /* SubView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AF899691B928FD900043F71 /* SubView.m */; }; + 9A9508C61BBC315200658616 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9508B81BBC315200658616 /* AppDelegate.m */; settings = {ASSET_TAGS = (); }; }; + 9A9508C71BBC315200658616 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A9508B91BBC315200658616 /* LaunchScreen.xib */; settings = {ASSET_TAGS = (); }; }; + 9A9508C81BBC315200658616 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A9508BB1BBC315200658616 /* Main.storyboard */; settings = {ASSET_TAGS = (); }; }; + 9A9508C91BBC315200658616 /* ChenPerson.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9508BE1BBC315200658616 /* ChenPerson.m */; settings = {ASSET_TAGS = (); }; }; + 9A9508CA1BBC315200658616 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A9508BF1BBC315200658616 /* Images.xcassets */; settings = {ASSET_TAGS = (); }; }; + 9A9508CB1BBC315200658616 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9A9508C01BBC315200658616 /* Info.plist */; settings = {ASSET_TAGS = (); }; }; + 9A9508CC1BBC315200658616 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9508C11BBC315200658616 /* main.m */; settings = {ASSET_TAGS = (); }; }; + 9A9508CD1BBC315200658616 /* Person.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9508C31BBC315200658616 /* Person.m */; settings = {ASSET_TAGS = (); }; }; + 9A9508CE1BBC315200658616 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A9508C51BBC315200658616 /* ViewController.m */; settings = {ASSET_TAGS = (); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 9A9508B71BBC315200658616 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9A9508B81BBC315200658616 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9A9508BA1BBC315200658616 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 9A9508BC1BBC315200658616 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A9508BD1BBC315200658616 /* ChenPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChenPerson.h; sourceTree = ""; }; + 9A9508BE1BBC315200658616 /* ChenPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChenPerson.m; sourceTree = ""; }; + 9A9508BF1BBC315200658616 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 9A9508C01BBC315200658616 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A9508C11BBC315200658616 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9A9508C21BBC315200658616 /* Person.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Person.h; sourceTree = ""; }; + 9A9508C31BBC315200658616 /* Person.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Person.m; sourceTree = ""; }; + 9A9508C41BBC315200658616 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9A9508C51BBC315200658616 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 9AF3734D1B920A1300889D8B /* 为什么不推荐在init方法中使用点语法.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "为什么不推荐在init方法中使用点语法.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9AF373511B920A1300889D8B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9AF373521B920A1300889D8B /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 9AF373541B920A1300889D8B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 9AF373551B920A1300889D8B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 9AF373571B920A1300889D8B /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - 9AF373581B920A1300889D8B /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - 9AF3735B1B920A1300889D8B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 9AF3735D1B920A1300889D8B /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 9AF373601B920A1300889D8B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 9AF3736B1B920A1400889D8B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9AF3736C1B920A1400889D8B /* nil_______Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "nil_______Tests.m"; sourceTree = ""; }; - 9AF373761B920A2300889D8B /* Person.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Person.h; sourceTree = ""; }; - 9AF373771B920A2300889D8B /* Person.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Person.m; sourceTree = ""; }; - 9AF373791B9212B100889D8B /* MaPerson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MaPerson.h; sourceTree = ""; }; - 9AF3737A1B9212B100889D8B /* MaPerson.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MaPerson.m; sourceTree = ""; }; - 9AF899651B928FC400043F71 /* SuperView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SuperView.h; sourceTree = ""; }; - 9AF899661B928FC400043F71 /* SuperView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SuperView.m; sourceTree = ""; }; - 9AF899681B928FD900043F71 /* SubView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubView.h; sourceTree = ""; }; - 9AF899691B928FD900043F71 /* SubView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -53,70 +46,40 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 9AF373441B920A1300889D8B = { - isa = PBXGroup; - children = ( - 9AF3734F1B920A1300889D8B /* nil对象调用点语法 */, - 9AF373691B920A1400889D8B /* nil对象调用点语法Tests */, - 9AF3734E1B920A1300889D8B /* Products */, - ); - sourceTree = ""; - }; - 9AF3734E1B920A1300889D8B /* Products */ = { - isa = PBXGroup; - children = ( - 9AF3734D1B920A1300889D8B /* 为什么不推荐在init方法中使用点语法.app */, - ); - name = Products; - sourceTree = ""; - }; - 9AF3734F1B920A1300889D8B /* nil对象调用点语法 */ = { + 9A9508B61BBC315200658616 /* 为什么不推荐在init方法中使用点语法 */ = { isa = PBXGroup; children = ( - 9AF373541B920A1300889D8B /* AppDelegate.h */, - 9AF373551B920A1300889D8B /* AppDelegate.m */, - 9AF373571B920A1300889D8B /* ViewController.h */, - 9AF373581B920A1300889D8B /* ViewController.m */, - 9AF373761B920A2300889D8B /* Person.h */, - 9AF373771B920A2300889D8B /* Person.m */, - 9AF373791B9212B100889D8B /* MaPerson.h */, - 9AF3737A1B9212B100889D8B /* MaPerson.m */, - 9AF899651B928FC400043F71 /* SuperView.h */, - 9AF899661B928FC400043F71 /* SuperView.m */, - 9AF899681B928FD900043F71 /* SubView.h */, - 9AF899691B928FD900043F71 /* SubView.m */, - 9AF3735A1B920A1300889D8B /* Main.storyboard */, - 9AF3735D1B920A1300889D8B /* Images.xcassets */, - 9AF3735F1B920A1300889D8B /* LaunchScreen.xib */, - 9AF373501B920A1300889D8B /* Supporting Files */, + 9A9508C41BBC315200658616 /* ViewController.h */, + 9A9508C51BBC315200658616 /* ViewController.m */, + 9A9508C21BBC315200658616 /* Person.h */, + 9A9508C31BBC315200658616 /* Person.m */, + 9A9508BD1BBC315200658616 /* ChenPerson.h */, + 9A9508BE1BBC315200658616 /* ChenPerson.m */, + 9A9508B71BBC315200658616 /* AppDelegate.h */, + 9A9508B81BBC315200658616 /* AppDelegate.m */, + 9A9508B91BBC315200658616 /* LaunchScreen.xib */, + 9A9508BB1BBC315200658616 /* Main.storyboard */, + 9A9508BF1BBC315200658616 /* Images.xcassets */, + 9A9508C01BBC315200658616 /* Info.plist */, + 9A9508C11BBC315200658616 /* main.m */, ); - path = "nil对象调用点语法"; + path = "为什么不推荐在init方法中使用点语法"; sourceTree = ""; }; - 9AF373501B920A1300889D8B /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 9AF373511B920A1300889D8B /* Info.plist */, - 9AF373521B920A1300889D8B /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 9AF373691B920A1400889D8B /* nil对象调用点语法Tests */ = { + 9AF373441B920A1300889D8B = { isa = PBXGroup; children = ( - 9AF3736C1B920A1400889D8B /* nil_______Tests.m */, - 9AF3736A1B920A1400889D8B /* Supporting Files */, + 9A9508B61BBC315200658616 /* 为什么不推荐在init方法中使用点语法 */, + 9AF3734E1B920A1300889D8B /* Products */, ); - path = "nil对象调用点语法Tests"; sourceTree = ""; }; - 9AF3736A1B920A1400889D8B /* Supporting Files */ = { + 9AF3734E1B920A1300889D8B /* Products */ = { isa = PBXGroup; children = ( - 9AF3736B1B920A1400889D8B /* Info.plist */, + 9AF3734D1B920A1300889D8B /* 为什么不推荐在init方法中使用点语法.app */, ); - name = "Supporting Files"; + name = Products; sourceTree = ""; }; /* End PBXGroup section */ @@ -176,9 +139,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9AF3735C1B920A1300889D8B /* Main.storyboard in Resources */, - 9AF373611B920A1300889D8B /* LaunchScreen.xib in Resources */, - 9AF3735E1B920A1300889D8B /* Images.xcassets in Resources */, + 9A9508CB1BBC315200658616 /* Info.plist in Resources */, + 9A9508CA1BBC315200658616 /* Images.xcassets in Resources */, + 9A9508C71BBC315200658616 /* LaunchScreen.xib in Resources */, + 9A9508C81BBC315200658616 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -189,33 +153,31 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9AF373591B920A1300889D8B /* ViewController.m in Sources */, - 9AF3737B1B9212B100889D8B /* MaPerson.m in Sources */, - 9AF373561B920A1300889D8B /* AppDelegate.m in Sources */, - 9AF373781B920A2300889D8B /* Person.m in Sources */, - 9AF899671B928FC400043F71 /* SuperView.m in Sources */, - 9AF373531B920A1300889D8B /* main.m in Sources */, - 9AF8996A1B928FD900043F71 /* SubView.m in Sources */, + 9A9508C91BBC315200658616 /* ChenPerson.m in Sources */, + 9A9508CC1BBC315200658616 /* main.m in Sources */, + 9A9508CD1BBC315200658616 /* Person.m in Sources */, + 9A9508C61BBC315200658616 /* AppDelegate.m in Sources */, + 9A9508CE1BBC315200658616 /* ViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ - 9AF3735A1B920A1300889D8B /* Main.storyboard */ = { + 9A9508B91BBC315200658616 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( - 9AF3735B1B920A1300889D8B /* Base */, + 9A9508BA1BBC315200658616 /* Base */, ); - name = Main.storyboard; + name = LaunchScreen.xib; sourceTree = ""; }; - 9AF3735F1B920A1300889D8B /* LaunchScreen.xib */ = { + 9A9508BB1BBC315200658616 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( - 9AF373601B920A1300889D8B /* Base */, + 9A9508BC1BBC315200658616 /* Base */, ); - name = LaunchScreen.xib; + name = Main.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ @@ -307,7 +269,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "nil对象调用点语法/Info.plist"; + INFOPLIST_FILE = "为什么不推荐在init方法中使用点语法/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "为什么不推荐在init方法中使用点语法"; }; @@ -317,7 +279,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "nil对象调用点语法/Info.plist"; + INFOPLIST_FILE = "为什么不推荐在init方法中使用点语法/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "为什么不推荐在init方法中使用点语法"; }; diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/contents.xcworkspacedata" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/contents.xcworkspacedata" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/contents.xcworkspacedata" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..a0beb4d Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcscheme" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcscheme" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcscheme" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcscheme" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.h" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.h" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.h" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.m" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.m" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/AppDelegate.m" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/LaunchScreen.xib" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/LaunchScreen.xib" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/LaunchScreen.xib" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/LaunchScreen.xib" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Base.lproj/Main.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.h" similarity index 73% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.h" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.h" index f7c4c4a..b83d76f 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.h" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.h" @@ -1,6 +1,6 @@ // -// MaPerson.h -// nil对象调用点语法 +// ChenPerson.h +// // // Created by https://github.com/ChenYilong on 15/8/30. // Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. @@ -8,5 +8,5 @@ #import "Person.h" -@interface MaPerson : Person +@interface ChenPerson : Person @end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.m" similarity index 60% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.m" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.m" index bd3975b..dd5f8de 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/MaPerson.m" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ChenPerson.m" @@ -1,14 +1,15 @@ // -// MaPerson.m -// nil对象调用点语法 +// ChenPerson.m +// // // Created by https://github.com/ChenYilong on 15/8/30. // Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. // -#import "MaPerson.h" +#import "ChenPerson.h" + +@implementation ChenPerson -@implementation MaPerson @synthesize lastName = _lastName; - (instancetype)init @@ -23,12 +24,17 @@ - (instancetype)init - (void)setLastName:(NSString*)lastName { -// if (![lastName isEqualToString:@"马"]) + //设置方法一:如果setter采用是这种方式,就可能引起崩溃 +// if (![lastName isEqualToString:@"陈"]) // { -// [NSException raise:NSInvalidArgumentException format:@"姓不是马"]; +// [NSException raise:NSInvalidArgumentException format:@"姓不是陈"]; // } // _lastName = lastName; - _lastName = @"马"; + + //设置方法二:如果setter采用是这种方式,就可能引起崩溃 + _lastName = @"陈"; + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, @"会调用这个方法,想一下为什么?"); + } @end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Images.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Images.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Images.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Info.plist" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Info.plist" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Info.plist" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Person.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Person.h" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Person.h" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Person.h" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" similarity index 51% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" index afd698c..bf1275f 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/Person.m" @@ -14,15 +14,17 @@ - (instancetype)init { self = [super init]; if (self) { - self.lastName = @"瞎写的"; - NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, NSStringFromClass([self class])); - NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, self.lastName); + self.lastName = @""; + //NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, NSStringFromClass([self class])); + //NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, self.lastName); } return self; } - (void)setLastName:(NSString*)lastName { + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, @"根本不会调用这个方法"); _lastName = @"炎黄"; } + @end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.h" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.h" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.h" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" new file mode 100644 index 0000000..5d643a2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" @@ -0,0 +1,27 @@ +// +// ViewController.m +// nil对象调用点语法 +// +// Created by https://github.com/ChenYilong on 15/8/29. +// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import "ViewController.h" +#import "Person.h" +#import "ChenPerson.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + ChenPerson *chen = [[ChenPerson alloc] init]; +} + +@end + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/main.m" similarity index 100% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/main.m" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_21\351\242\230_\344\270\213\351\235\242\347\232\204\344\273\243\347\240\201\350\276\223\345\207\272\344\273\200\344\271\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/main.m" diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..497e655 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.pbxproj" @@ -0,0 +1,451 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9A1F62A71BA1DE240073F83D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62A61BA1DE240073F83D /* main.m */; }; + 9A1F62AA1BA1DE240073F83D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62A91BA1DE240073F83D /* AppDelegate.m */; }; + 9A1F62AD1BA1DE240073F83D /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62AC1BA1DE240073F83D /* ViewController.m */; }; + 9A1F62B01BA1DE240073F83D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1F62AE1BA1DE240073F83D /* Main.storyboard */; }; + 9A1F62B21BA1DE240073F83D /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A1F62B11BA1DE240073F83D /* Images.xcassets */; }; + 9A1F62B51BA1DE240073F83D /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A1F62B31BA1DE240073F83D /* LaunchScreen.xib */; }; + 9A1F62C11BA1DE240073F83D /* _objc_msgForward_demoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62C01BA1DE240073F83D /* _objc_msgForward_demoTests.m */; }; + 9A1F62D01BA1DE320073F83D /* Father.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62CB1BA1DE320073F83D /* Father.m */; }; + 9A1F62D11BA1DE330073F83D /* Son.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62CD1BA1DE320073F83D /* Son.m */; }; + 9A1F62D21BA1DE330073F83D /* ForwardingTarge.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1F62CF1BA1DE320073F83D /* ForwardingTarge.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A1F62BB1BA1DE240073F83D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A1F62991BA1DE230073F83D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A1F62A01BA1DE240073F83D; + remoteInfo = _objc_msgForward_demo; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A1F62A11BA1DE240073F83D /* _objc_msgForward_demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = _objc_msgForward_demo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A1F62A51BA1DE240073F83D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A1F62A61BA1DE240073F83D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9A1F62A81BA1DE240073F83D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9A1F62A91BA1DE240073F83D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9A1F62AB1BA1DE240073F83D /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9A1F62AC1BA1DE240073F83D /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9A1F62AF1BA1DE240073F83D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A1F62B11BA1DE240073F83D /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 9A1F62B41BA1DE240073F83D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 9A1F62BA1BA1DE240073F83D /* _objc_msgForward_demoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = _objc_msgForward_demoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A1F62BF1BA1DE240073F83D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A1F62C01BA1DE240073F83D /* _objc_msgForward_demoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = _objc_msgForward_demoTests.m; sourceTree = ""; }; + 9A1F62CA1BA1DE320073F83D /* Father.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Father.h; sourceTree = ""; }; + 9A1F62CB1BA1DE320073F83D /* Father.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Father.m; sourceTree = ""; }; + 9A1F62CC1BA1DE320073F83D /* Son.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Son.h; sourceTree = ""; }; + 9A1F62CD1BA1DE320073F83D /* Son.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Son.m; sourceTree = ""; }; + 9A1F62CE1BA1DE320073F83D /* ForwardingTarge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ForwardingTarge.h; sourceTree = ""; }; + 9A1F62CF1BA1DE320073F83D /* ForwardingTarge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ForwardingTarge.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A1F629E1BA1DE240073F83D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A1F62B71BA1DE240073F83D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A1F62981BA1DE230073F83D = { + isa = PBXGroup; + children = ( + 9A1F62A31BA1DE240073F83D /* _objc_msgForward_demo */, + 9A1F62BD1BA1DE240073F83D /* _objc_msgForward_demoTests */, + 9A1F62A21BA1DE240073F83D /* Products */, + ); + sourceTree = ""; + }; + 9A1F62A21BA1DE240073F83D /* Products */ = { + isa = PBXGroup; + children = ( + 9A1F62A11BA1DE240073F83D /* _objc_msgForward_demo.app */, + 9A1F62BA1BA1DE240073F83D /* _objc_msgForward_demoTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9A1F62A31BA1DE240073F83D /* _objc_msgForward_demo */ = { + isa = PBXGroup; + children = ( + 9A1F62CA1BA1DE320073F83D /* Father.h */, + 9A1F62CB1BA1DE320073F83D /* Father.m */, + 9A1F62CC1BA1DE320073F83D /* Son.h */, + 9A1F62CD1BA1DE320073F83D /* Son.m */, + 9A1F62CE1BA1DE320073F83D /* ForwardingTarge.h */, + 9A1F62CF1BA1DE320073F83D /* ForwardingTarge.m */, + 9A1F62A81BA1DE240073F83D /* AppDelegate.h */, + 9A1F62A91BA1DE240073F83D /* AppDelegate.m */, + 9A1F62AB1BA1DE240073F83D /* ViewController.h */, + 9A1F62AC1BA1DE240073F83D /* ViewController.m */, + 9A1F62AE1BA1DE240073F83D /* Main.storyboard */, + 9A1F62B11BA1DE240073F83D /* Images.xcassets */, + 9A1F62B31BA1DE240073F83D /* LaunchScreen.xib */, + 9A1F62A41BA1DE240073F83D /* Supporting Files */, + ); + path = _objc_msgForward_demo; + sourceTree = ""; + }; + 9A1F62A41BA1DE240073F83D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9A1F62A51BA1DE240073F83D /* Info.plist */, + 9A1F62A61BA1DE240073F83D /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 9A1F62BD1BA1DE240073F83D /* _objc_msgForward_demoTests */ = { + isa = PBXGroup; + children = ( + 9A1F62C01BA1DE240073F83D /* _objc_msgForward_demoTests.m */, + 9A1F62BE1BA1DE240073F83D /* Supporting Files */, + ); + path = _objc_msgForward_demoTests; + sourceTree = ""; + }; + 9A1F62BE1BA1DE240073F83D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9A1F62BF1BA1DE240073F83D /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A1F62A01BA1DE240073F83D /* _objc_msgForward_demo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A1F62C41BA1DE240073F83D /* Build configuration list for PBXNativeTarget "_objc_msgForward_demo" */; + buildPhases = ( + 9A1F629D1BA1DE240073F83D /* Sources */, + 9A1F629E1BA1DE240073F83D /* Frameworks */, + 9A1F629F1BA1DE240073F83D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = _objc_msgForward_demo; + productName = _objc_msgForward_demo; + productReference = 9A1F62A11BA1DE240073F83D /* _objc_msgForward_demo.app */; + productType = "com.apple.product-type.application"; + }; + 9A1F62B91BA1DE240073F83D /* _objc_msgForward_demoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A1F62C71BA1DE240073F83D /* Build configuration list for PBXNativeTarget "_objc_msgForward_demoTests" */; + buildPhases = ( + 9A1F62B61BA1DE240073F83D /* Sources */, + 9A1F62B71BA1DE240073F83D /* Frameworks */, + 9A1F62B81BA1DE240073F83D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A1F62BC1BA1DE240073F83D /* PBXTargetDependency */, + ); + name = _objc_msgForward_demoTests; + productName = _objc_msgForward_demoTests; + productReference = 9A1F62BA1BA1DE240073F83D /* _objc_msgForward_demoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A1F62991BA1DE230073F83D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = "微博@iOS程序犭袁"; + TargetAttributes = { + 9A1F62A01BA1DE240073F83D = { + CreatedOnToolsVersion = 6.3; + }; + 9A1F62B91BA1DE240073F83D = { + CreatedOnToolsVersion = 6.3; + TestTargetID = 9A1F62A01BA1DE240073F83D; + }; + }; + }; + buildConfigurationList = 9A1F629C1BA1DE230073F83D /* Build configuration list for PBXProject "_objc_msgForward_demo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A1F62981BA1DE230073F83D; + productRefGroup = 9A1F62A21BA1DE240073F83D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A1F62A01BA1DE240073F83D /* _objc_msgForward_demo */, + 9A1F62B91BA1DE240073F83D /* _objc_msgForward_demoTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A1F629F1BA1DE240073F83D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1F62B01BA1DE240073F83D /* Main.storyboard in Resources */, + 9A1F62B51BA1DE240073F83D /* LaunchScreen.xib in Resources */, + 9A1F62B21BA1DE240073F83D /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A1F62B81BA1DE240073F83D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A1F629D1BA1DE240073F83D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1F62AD1BA1DE240073F83D /* ViewController.m in Sources */, + 9A1F62D11BA1DE330073F83D /* Son.m in Sources */, + 9A1F62D21BA1DE330073F83D /* ForwardingTarge.m in Sources */, + 9A1F62D01BA1DE320073F83D /* Father.m in Sources */, + 9A1F62AA1BA1DE240073F83D /* AppDelegate.m in Sources */, + 9A1F62A71BA1DE240073F83D /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A1F62B61BA1DE240073F83D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1F62C11BA1DE240073F83D /* _objc_msgForward_demoTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A1F62BC1BA1DE240073F83D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A1F62A01BA1DE240073F83D /* _objc_msgForward_demo */; + targetProxy = 9A1F62BB1BA1DE240073F83D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9A1F62AE1BA1DE240073F83D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A1F62AF1BA1DE240073F83D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9A1F62B31BA1DE240073F83D /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 9A1F62B41BA1DE240073F83D /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A1F62C21BA1DE240073F83D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A1F62C31BA1DE240073F83D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A1F62C51BA1DE240073F83D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = _objc_msgForward_demo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9A1F62C61BA1DE240073F83D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = _objc_msgForward_demo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 9A1F62C81BA1DE240073F83D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = _objc_msgForward_demoTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/_objc_msgForward_demo.app/_objc_msgForward_demo"; + }; + name = Debug; + }; + 9A1F62C91BA1DE240073F83D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = _objc_msgForward_demoTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/_objc_msgForward_demo.app/_objc_msgForward_demo"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A1F629C1BA1DE230073F83D /* Build configuration list for PBXProject "_objc_msgForward_demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A1F62C21BA1DE240073F83D /* Debug */, + 9A1F62C31BA1DE240073F83D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A1F62C41BA1DE240073F83D /* Build configuration list for PBXNativeTarget "_objc_msgForward_demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A1F62C51BA1DE240073F83D /* Debug */, + 9A1F62C61BA1DE240073F83D /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; + 9A1F62C71BA1DE240073F83D /* Build configuration list for PBXNativeTarget "_objc_msgForward_demoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A1F62C81BA1DE240073F83D /* Debug */, + 9A1F62C91BA1DE240073F83D /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A1F62991BA1DE230073F83D /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..dbab8fd --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" new file mode 100644 index 0000000..18d9810 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..933d902 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" new file mode 100644 index 0000000..659c876 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/WorkspaceSettings.xcsettings" @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/_objc_msgForward_demo.xcscheme" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/_objc_msgForward_demo.xcscheme" new file mode 100644 index 0000000..9ac2a98 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/_objc_msgForward_demo.xcscheme" @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..919f4c8 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + _objc_msgForward_demo.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9A1F62A01BA1DE240073F83D + + primary + + + 9A1F62B91BA1DE240073F83D + + primary + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.h" new file mode 100644 index 0000000..39bc1a2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.h" @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// _objc_msgForward_demo +// +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.m" new file mode 100644 index 0000000..362dc3e --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/AppDelegate.m" @@ -0,0 +1,45 @@ +// +// AppDelegate.m +// _objc_msgForward_demo +// +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/LaunchScreen.xib" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/LaunchScreen.xib" new file mode 100644 index 0000000..21035d9 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/LaunchScreen.xib" @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Base.lproj/Main.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.h" new file mode 100644 index 0000000..9035313 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.h" @@ -0,0 +1,13 @@ +// +// Father.h +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import + +@interface Father : NSObject + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.m" new file mode 100644 index 0000000..490d42b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Father.m" @@ -0,0 +1,13 @@ +// +// Father.m +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "Father.h" + +@implementation Father + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.h" new file mode 100644 index 0000000..a2e296f --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.h" @@ -0,0 +1,13 @@ +// +// ForwardingTarge.h +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import + +@interface ForwardingTarge : NSObject + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.m" new file mode 100644 index 0000000..586946f --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ForwardingTarge.m" @@ -0,0 +1,44 @@ +// +// ForwardingTarge.m +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "ForwardingTarge.h" +#import + +@implementation ForwardingTarge + +id dynamicMethod(id self, SEL _cmd) { + NSLog(@"🔴类名与方法名:%@(在第%@行),描述:%@", @(__PRETTY_FUNCTION__), @(__LINE__), @"动态添加的方法"); + return @0; +} + ++ (BOOL)resolveInstanceMethod:(SEL)sel { + class_addMethod(self.class, sel, (IMP)dynamicMethod, "@@:"); + BOOL result = [super resolveInstanceMethod:sel]; + result = YES; + return result; +} + +- (id)forwardingTargetForSelector:(SEL)aSelector { + id result = [super forwardingTargetForSelector:aSelector]; + return result; +} + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { + id result = [super methodSignatureForSelector:aSelector]; + return result; +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation { + [super forwardInvocation:anInvocation]; +} + +- (void)doesNotRecognizeSelector:(SEL)aSelector { + [super doesNotRecognizeSelector:aSelector]; // crash +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Images.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Images.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Images.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Info.plist" new file mode 100644 index 0000000..2a7b8ff --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Info.plist" @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + CYL.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.h" new file mode 100644 index 0000000..f180817 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.h" @@ -0,0 +1,13 @@ +// +// Son.h +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "Father.h" + +@interface Son : Father + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.m" new file mode 100644 index 0000000..52fbeb2 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/Son.m" @@ -0,0 +1,66 @@ +// +// Son.m +// Runtime +// +// Created by http://weibo.com/luohanchenyilong/(微博@iOS程序犭袁)on 15/9/9. +// Copyright © 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "Son.h" +#import +#import "ForwardingTarge.h" + +@interface Son () + +@property (nonatomic, strong) ForwardingTarge *target; + +@end + +@implementation Son + +- (instancetype)init { + self = [super init]; + if (self) { + _target = [ForwardingTarge new]; + [self performSelector:@selector(sel) withObject:nil]; + [self performSelector:@selector(sel2) withObject:nil]; + } + return self; +} + +id dynamicMethodIMP(id self, SEL _cmd) { + NSLog(@"%s:动态添加的方法",__FUNCTION__); + return @0; +} + ++ (BOOL)resolveInstanceMethod:(SEL)sel { + class_addMethod(self.class, sel, (IMP)dynamicMethodIMP, "@@:"); + BOOL result = [super resolveInstanceMethod:sel]; + result = YES; + return result; // 1 +} + +- (id)forwardingTargetForSelector:(SEL)aSelector { + id result = [super forwardingTargetForSelector:aSelector]; + result = self.target; + return result; // 2 +} + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector { + id result = [super methodSignatureForSelector:aSelector]; + NSMethodSignature *signature = [NSMethodSignature signatureWithObjCTypes:"v@:"]; + result = signature; + return result; // 3 +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation { +// [super forwardInvocation:anInvocation]; + [self.target forwardInvocation:anInvocation]; +} + +- (void)doesNotRecognizeSelector:(SEL)aSelector { + // 在crash前 保存crash数据,供分析 + [super doesNotRecognizeSelector:aSelector]; // crash +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.h" new file mode 100644 index 0000000..547e5bd --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// _objc_msgForward_demo +// +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.m" new file mode 100644 index 0000000..6d6562e --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/ViewController.m" @@ -0,0 +1,29 @@ +// +// ViewController.m +// _objc_msgForward_demo +// +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import "ViewController.h" +#import "Son.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [[Son alloc] init]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/main.m" new file mode 100644 index 0000000..65f080c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demo/main.m" @@ -0,0 +1,16 @@ +// +// main.m +// _objc_msgForward_demo +// +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/Info.plist" similarity index 91% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/Info.plist" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/Info.plist" index 518c62f..b5cf088 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/Info.plist" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/Info.plist" @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - ChenYilong.$(PRODUCT_NAME:rfc1034identifier) + CYL.$(PRODUCT_NAME:rfc1034identifier) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/nil_______Tests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/_objc_msgForward_demoTests.m" similarity index 67% rename from "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/nil_______Tests.m" rename to "01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/_objc_msgForward_demoTests.m" index 00ea84c..a0f8a48 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225Tests/nil_______Tests.m" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_25\351\242\230__objc_msgForward\345\207\275\346\225\260\346\230\257\345\201\232\344\273\200\344\271\210\347\232\204_\347\233\264\346\216\245\350\260\203\347\224\250\345\256\203\345\260\206\344\274\232\345\217\221\347\224\237\344\273\200\344\271\210/_objc_msgForward_demo/_objc_msgForward_demoTests/_objc_msgForward_demoTests.m" @@ -1,19 +1,19 @@ // -// nil_______Tests.m -// nil对象调用点语法Tests +// _objc_msgForward_demoTests.m +// _objc_msgForward_demoTests // -// Created by https://github.com/ChenYilong on 15/8/29. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// Created by http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁)on 15/9/10. +// Copyright (c) 2015年 https://github.com/ChenYilong . All rights reserved. // #import #import -@interface nil_______Tests : XCTestCase +@interface _objc_msgForward_demoTests : XCTestCase @end -@implementation nil_______Tests +@implementation _objc_msgForward_demoTests - (void)setUp { [super setUp]; diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..c7b68e7 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.pbxproj" @@ -0,0 +1,594 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9A04F67E2A6848D3000F8B74 /* main-in-cpp.zip in Resources */ = {isa = PBXBuildFile; fileRef = 9A04F67D2A6848D3000F8B74 /* main-in-cpp.zip */; }; + 9AC995372487DC510097E1D6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC995362487DC510097E1D6 /* AppDelegate.m */; }; + 9AC9953A2487DC510097E1D6 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC995392487DC510097E1D6 /* SceneDelegate.m */; }; + 9AC9953D2487DC510097E1D6 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC9953C2487DC510097E1D6 /* ViewController.m */; }; + 9AC995402487DC510097E1D6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AC9953E2487DC510097E1D6 /* Main.storyboard */; }; + 9AC995422487DC520097E1D6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AC995412487DC520097E1D6 /* Assets.xcassets */; }; + 9AC995452487DC520097E1D6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AC995432487DC520097E1D6 /* LaunchScreen.storyboard */; }; + 9AC995482487DC520097E1D6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC995472487DC520097E1D6 /* main.m */; }; + 9AC995522487DC530097E1D6 /* Demo_38_block_edit_varTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC995512487DC530097E1D6 /* Demo_38_block_edit_varTests.m */; }; + 9AC9955D2487DC530097E1D6 /* Demo_38_block_edit_varUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AC9955C2487DC530097E1D6 /* Demo_38_block_edit_varUITests.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9AC9954E2487DC520097E1D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AC9952A2487DC510097E1D6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AC995312487DC510097E1D6; + remoteInfo = Demo_38_block_edit_var; + }; + 9AC995592487DC530097E1D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AC9952A2487DC510097E1D6 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AC995312487DC510097E1D6; + remoteInfo = Demo_38_block_edit_var; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A04F67D2A6848D3000F8B74 /* main-in-cpp.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = "main-in-cpp.zip"; sourceTree = ""; }; + 9AC995322487DC510097E1D6 /* Demo_38_block_edit_var.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo_38_block_edit_var.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC995352487DC510097E1D6 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9AC995362487DC510097E1D6 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9AC995382487DC510097E1D6 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SceneDelegate.h; sourceTree = ""; }; + 9AC995392487DC510097E1D6 /* SceneDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SceneDelegate.m; sourceTree = ""; }; + 9AC9953B2487DC510097E1D6 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9AC9953C2487DC510097E1D6 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9AC9953F2487DC510097E1D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9AC995412487DC520097E1D6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9AC995442487DC520097E1D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9AC995462487DC520097E1D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AC995472487DC520097E1D6 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9AC9954D2487DC520097E1D6 /* Demo_38_block_edit_varTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Demo_38_block_edit_varTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC995512487DC530097E1D6 /* Demo_38_block_edit_varTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Demo_38_block_edit_varTests.m; sourceTree = ""; }; + 9AC995532487DC530097E1D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AC995582487DC530097E1D6 /* Demo_38_block_edit_varUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Demo_38_block_edit_varUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC9955C2487DC530097E1D6 /* Demo_38_block_edit_varUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Demo_38_block_edit_varUITests.m; sourceTree = ""; }; + 9AC9955E2487DC530097E1D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9AC9952F2487DC510097E1D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC9954A2487DC520097E1D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC995552487DC530097E1D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9AC995292487DC510097E1D6 = { + isa = PBXGroup; + children = ( + 9AC995342487DC510097E1D6 /* Demo_38_block_edit_var */, + 9AC995502487DC530097E1D6 /* Demo_38_block_edit_varTests */, + 9AC9955B2487DC530097E1D6 /* Demo_38_block_edit_varUITests */, + 9AC995332487DC510097E1D6 /* Products */, + ); + sourceTree = ""; + }; + 9AC995332487DC510097E1D6 /* Products */ = { + isa = PBXGroup; + children = ( + 9AC995322487DC510097E1D6 /* Demo_38_block_edit_var.app */, + 9AC9954D2487DC520097E1D6 /* Demo_38_block_edit_varTests.xctest */, + 9AC995582487DC530097E1D6 /* Demo_38_block_edit_varUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9AC995342487DC510097E1D6 /* Demo_38_block_edit_var */ = { + isa = PBXGroup; + children = ( + 9AC995352487DC510097E1D6 /* AppDelegate.h */, + 9AC995362487DC510097E1D6 /* AppDelegate.m */, + 9AC995382487DC510097E1D6 /* SceneDelegate.h */, + 9AC995392487DC510097E1D6 /* SceneDelegate.m */, + 9AC9953B2487DC510097E1D6 /* ViewController.h */, + 9AC9953C2487DC510097E1D6 /* ViewController.m */, + 9AC9953E2487DC510097E1D6 /* Main.storyboard */, + 9AC995412487DC520097E1D6 /* Assets.xcassets */, + 9AC995432487DC520097E1D6 /* LaunchScreen.storyboard */, + 9AC995462487DC520097E1D6 /* Info.plist */, + 9AC995472487DC520097E1D6 /* main.m */, + 9A04F67D2A6848D3000F8B74 /* main-in-cpp.zip */, + ); + path = Demo_38_block_edit_var; + sourceTree = ""; + }; + 9AC995502487DC530097E1D6 /* Demo_38_block_edit_varTests */ = { + isa = PBXGroup; + children = ( + 9AC995512487DC530097E1D6 /* Demo_38_block_edit_varTests.m */, + 9AC995532487DC530097E1D6 /* Info.plist */, + ); + path = Demo_38_block_edit_varTests; + sourceTree = ""; + }; + 9AC9955B2487DC530097E1D6 /* Demo_38_block_edit_varUITests */ = { + isa = PBXGroup; + children = ( + 9AC9955C2487DC530097E1D6 /* Demo_38_block_edit_varUITests.m */, + 9AC9955E2487DC530097E1D6 /* Info.plist */, + ); + path = Demo_38_block_edit_varUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9AC995312487DC510097E1D6 /* Demo_38_block_edit_var */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC995612487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_var" */; + buildPhases = ( + 9AC9952E2487DC510097E1D6 /* Sources */, + 9AC9952F2487DC510097E1D6 /* Frameworks */, + 9AC995302487DC510097E1D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Demo_38_block_edit_var; + productName = Demo_38_block_edit_var; + productReference = 9AC995322487DC510097E1D6 /* Demo_38_block_edit_var.app */; + productType = "com.apple.product-type.application"; + }; + 9AC9954C2487DC520097E1D6 /* Demo_38_block_edit_varTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC995642487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_varTests" */; + buildPhases = ( + 9AC995492487DC520097E1D6 /* Sources */, + 9AC9954A2487DC520097E1D6 /* Frameworks */, + 9AC9954B2487DC520097E1D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AC9954F2487DC520097E1D6 /* PBXTargetDependency */, + ); + name = Demo_38_block_edit_varTests; + productName = Demo_38_block_edit_varTests; + productReference = 9AC9954D2487DC520097E1D6 /* Demo_38_block_edit_varTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9AC995572487DC530097E1D6 /* Demo_38_block_edit_varUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC995672487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_varUITests" */; + buildPhases = ( + 9AC995542487DC530097E1D6 /* Sources */, + 9AC995552487DC530097E1D6 /* Frameworks */, + 9AC995562487DC530097E1D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AC9955A2487DC530097E1D6 /* PBXTargetDependency */, + ); + name = Demo_38_block_edit_varUITests; + productName = Demo_38_block_edit_varUITests; + productReference = 9AC995582487DC530097E1D6 /* Demo_38_block_edit_varUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9AC9952A2487DC510097E1D6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1140; + ORGANIZATIONNAME = ChenYilong; + TargetAttributes = { + 9AC995312487DC510097E1D6 = { + CreatedOnToolsVersion = 11.4.1; + }; + 9AC9954C2487DC520097E1D6 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9AC995312487DC510097E1D6; + }; + 9AC995572487DC530097E1D6 = { + CreatedOnToolsVersion = 11.4.1; + TestTargetID = 9AC995312487DC510097E1D6; + }; + }; + }; + buildConfigurationList = 9AC9952D2487DC510097E1D6 /* Build configuration list for PBXProject "Demo_38_block_edit_var" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9AC995292487DC510097E1D6; + productRefGroup = 9AC995332487DC510097E1D6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9AC995312487DC510097E1D6 /* Demo_38_block_edit_var */, + 9AC9954C2487DC520097E1D6 /* Demo_38_block_edit_varTests */, + 9AC995572487DC530097E1D6 /* Demo_38_block_edit_varUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9AC995302487DC510097E1D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC995452487DC520097E1D6 /* LaunchScreen.storyboard in Resources */, + 9AC995422487DC520097E1D6 /* Assets.xcassets in Resources */, + 9AC995402487DC510097E1D6 /* Main.storyboard in Resources */, + 9A04F67E2A6848D3000F8B74 /* main-in-cpp.zip in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC9954B2487DC520097E1D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC995562487DC530097E1D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9AC9952E2487DC510097E1D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC9953D2487DC510097E1D6 /* ViewController.m in Sources */, + 9AC995372487DC510097E1D6 /* AppDelegate.m in Sources */, + 9AC995482487DC520097E1D6 /* main.m in Sources */, + 9AC9953A2487DC510097E1D6 /* SceneDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC995492487DC520097E1D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC995522487DC530097E1D6 /* Demo_38_block_edit_varTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC995542487DC530097E1D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC9955D2487DC530097E1D6 /* Demo_38_block_edit_varUITests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9AC9954F2487DC520097E1D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AC995312487DC510097E1D6 /* Demo_38_block_edit_var */; + targetProxy = 9AC9954E2487DC520097E1D6 /* PBXContainerItemProxy */; + }; + 9AC9955A2487DC530097E1D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AC995312487DC510097E1D6 /* Demo_38_block_edit_var */; + targetProxy = 9AC995592487DC530097E1D6 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9AC9953E2487DC510097E1D6 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AC9953F2487DC510097E1D6 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9AC995432487DC520097E1D6 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AC995442487DC520097E1D6 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9AC9955F2487DC530097E1D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 9AC995602487DC530097E1D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9AC995622487DC530097E1D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_var/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-var"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9AC995632487DC530097E1D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_var/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-var"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9AC995652487DC530097E1D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_varTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-varTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo_38_block_edit_var.app/Demo_38_block_edit_var"; + }; + name = Debug; + }; + 9AC995662487DC530097E1D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_varTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 13.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-varTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo_38_block_edit_var.app/Demo_38_block_edit_var"; + }; + name = Release; + }; + 9AC995682487DC530097E1D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_varUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-varUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Demo_38_block_edit_var; + }; + name = Debug; + }; + 9AC995692487DC530097E1D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + INFOPLIST_FILE = Demo_38_block_edit_varUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.iteatime.Demo-38-block-edit-varUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Demo_38_block_edit_var; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9AC9952D2487DC510097E1D6 /* Build configuration list for PBXProject "Demo_38_block_edit_var" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC9955F2487DC530097E1D6 /* Debug */, + 9AC995602487DC530097E1D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC995612487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_var" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC995622487DC530097E1D6 /* Debug */, + 9AC995632487DC530097E1D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC995642487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_varTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC995652487DC530097E1D6 /* Debug */, + 9AC995662487DC530097E1D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC995672487DC530097E1D6 /* Build configuration list for PBXNativeTarget "Demo_38_block_edit_varUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC995682487DC530097E1D6 /* Debug */, + 9AC995692487DC530097E1D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9AC9952A2487DC510097E1D6 /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..7fb6e9a --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" new file mode 100644 index 0000000..18d9810 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist" @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..2d83d78 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..5a46604 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Demo_38_block_edit_var.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.h" new file mode 100644 index 0000000..0b37808 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.h" @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.m" new file mode 100644 index 0000000..5951d06 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/AppDelegate.m" @@ -0,0 +1,56 @@ +// +// AppDelegate.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () +@property (nonatomic, strong) NSString *nso; + + +@end + +@implementation AppDelegate + +int age1 = 20; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + int a = 10; + NSLog(@"数据段:age %p", &age1); + NSLog(@"栈: a %p", &a); + NSLog(@"堆:obj %p", [[NSObject alloc] init]); + NSLog(@"class:obj %p", NSClassFromString(@"NSObject")); + NSLog(@"class %p", [NSObject class]); +// for (int i = 0; i < 100000; ++i) { +// dispatch_async(dispatch_get_global_queue(0, 0), ^{ +// id o =[NSString stringWithFormat:@"%@%@", @"iTeaTime(技术清谈)", @(i)]; +// self.nso = o; +// }); +// } + return YES; +} + + +#pragma mark - UISceneSession lifecycle + + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; +} + + +- (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet *)sceneSessions { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..9221b9b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/Contents.json" new file mode 100644 index 0000000..73c0059 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Assets.xcassets/Contents.json" @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/LaunchScreen.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..865e932 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..808a21c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Base.lproj/Main.storyboard" @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Info.plist" new file mode 100644 index 0000000..7b6037c --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/Info.plist" @@ -0,0 +1,64 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + SceneDelegate + UISceneStoryboardFile + Main + + + + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.h" new file mode 100644 index 0000000..f049bd5 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.h" @@ -0,0 +1,16 @@ +// +// SceneDelegate.h +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface SceneDelegate : UIResponder + +@property (strong, nonatomic) UIWindow * window; + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.m" new file mode 100644 index 0000000..6739fa6 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/SceneDelegate.m" @@ -0,0 +1,58 @@ +// +// SceneDelegate.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "SceneDelegate.h" + +@interface SceneDelegate () + +@end + +@implementation SceneDelegate + + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). +} + + +- (void)sceneDidDisconnect:(UIScene *)scene { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). +} + + +- (void)sceneDidBecomeActive:(UIScene *)scene { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. +} + + +- (void)sceneWillResignActive:(UIScene *)scene { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). +} + + +- (void)sceneWillEnterForeground:(UIScene *)scene { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. +} + + +- (void)sceneDidEnterBackground:(UIScene *)scene { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.h" new file mode 100644 index 0000000..71094f9 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.m" new file mode 100644 index 0000000..6f50196 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/ViewController.m" @@ -0,0 +1,34 @@ +// +// ViewController.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + __block int a = 0; + int b = 1; + NSLog(@"定义前外部:a:%p", &a); //栈区 + NSLog(@"定义前外部:b:%p", &b); //栈区 + void (^foo)(void) = ^{ + a = 1; + NSLog(@"block内部:a:%p", &a); //堆区 + NSLog(@"block内部:b:%p", &b); //堆区 + }; + NSLog(@"定义后外部:a:%p", &a); //堆区 + NSLog(@"定义后外部:b:%p", &b); //栈区 + foo(); +} + + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main-in-cpp.zip" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main-in-cpp.zip" new file mode 100644 index 0000000..b3d2bb0 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main-in-cpp.zip" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main.m" new file mode 100644 index 0000000..8058998 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_var/main.m" @@ -0,0 +1,24 @@ +// +// main.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" +typedef void (^CYLBlock)(void); +int age = 10; +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + appDelegateClassName = NSStringFromClass([AppDelegate class]); + CYLBlock block = ^{ + age = 20; + NSLog(@"age is %@", @(age)); + }; + block(); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Demo_38_block_edit_varTests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Demo_38_block_edit_varTests.m" new file mode 100644 index 0000000..b07130a --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Demo_38_block_edit_varTests.m" @@ -0,0 +1,37 @@ +// +// Demo_38_block_edit_varTests.m +// Demo_38_block_edit_varTests +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Demo_38_block_edit_varTests : XCTestCase + +@end + +@implementation Demo_38_block_edit_varTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varTests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Demo_38_block_edit_varUITests.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Demo_38_block_edit_varUITests.m" new file mode 100644 index 0000000..ed295bf --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Demo_38_block_edit_varUITests.m" @@ -0,0 +1,48 @@ +// +// Demo_38_block_edit_varUITests.m +// Demo_38_block_edit_varUITests +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import + +@interface Demo_38_block_edit_varUITests : XCTestCase + +@end + +@implementation Demo_38_block_edit_varUITests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + self.continueAfterFailure = NO; + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // UI tests must launch the application that they test. + XCUIApplication *app = [[XCUIApplication alloc] init]; + [app launch]; + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testLaunchPerformance { + if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) { + // This measures how long it takes to launch your application. + [self measureWithMetrics:@[XCTOSSignpostMetric.applicationLaunchMetric] block:^{ + [[[XCUIApplication alloc] init] launch]; + }]; + } +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Info.plist" new file mode 100644 index 0000000..64d65ca --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_38_block_edit_var/Demo_38_block_edit_varUITests/Info.plist" @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.pbxproj" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.pbxproj" new file mode 100644 index 0000000..0a31500 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.pbxproj" @@ -0,0 +1,309 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 9A1530491CB4E4C900EF35B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A1530481CB4E4C900EF35B5 /* main.m */; }; + 9A15304C1CB4E4C900EF35B5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */; }; + 9A15304F1CB4E4C900EF35B5 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A15304E1CB4E4C900EF35B5 /* ViewController.m */; }; + 9A1530521CB4E4C900EF35B5 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530501CB4E4C900EF35B5 /* Main.storyboard */; }; + 9A1530541CB4E4C900EF35B5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530531CB4E4C900EF35B5 /* Assets.xcassets */; }; + 9A1530571CB4E4C900EF35B5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "KVO实现原理.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A1530481CB4E4C900EF35B5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 9A15304A1CB4E4C900EF35B5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 9A15304D1CB4E4C900EF35B5 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 9A15304E1CB4E4C900EF35B5 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 9A1530511CB4E4C900EF35B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A1530531CB4E4C900EF35B5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A1530561CB4E4C900EF35B5 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9A1530581CB4E4C900EF35B5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A1530411CB4E4C900EF35B5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A15303B1CB4E4C900EF35B5 = { + isa = PBXGroup; + children = ( + 9A1530461CB4E4C900EF35B5 /* KVO实现原理 */, + 9A1530451CB4E4C900EF35B5 /* Products */, + ); + sourceTree = ""; + }; + 9A1530451CB4E4C900EF35B5 /* Products */ = { + isa = PBXGroup; + children = ( + 9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */, + ); + name = Products; + sourceTree = ""; + }; + 9A1530461CB4E4C900EF35B5 /* KVO实现原理 */ = { + isa = PBXGroup; + children = ( + 9A15304A1CB4E4C900EF35B5 /* AppDelegate.h */, + 9A15304B1CB4E4C900EF35B5 /* AppDelegate.m */, + 9A15304D1CB4E4C900EF35B5 /* ViewController.h */, + 9A15304E1CB4E4C900EF35B5 /* ViewController.m */, + 9A1530501CB4E4C900EF35B5 /* Main.storyboard */, + 9A1530531CB4E4C900EF35B5 /* Assets.xcassets */, + 9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */, + 9A1530581CB4E4C900EF35B5 /* Info.plist */, + 9A1530471CB4E4C900EF35B5 /* Supporting Files */, + ); + path = "KVO实现原理"; + sourceTree = ""; + }; + 9A1530471CB4E4C900EF35B5 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 9A1530481CB4E4C900EF35B5 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A1530431CB4E4C900EF35B5 /* KVO实现原理 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A15305B1CB4E4C900EF35B5 /* Build configuration list for PBXNativeTarget "KVO实现原理" */; + buildPhases = ( + 9A1530401CB4E4C900EF35B5 /* Sources */, + 9A1530411CB4E4C900EF35B5 /* Frameworks */, + 9A1530421CB4E4C900EF35B5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "KVO实现原理"; + productName = "KVO实现原理"; + productReference = 9A1530441CB4E4C900EF35B5 /* KVO实现原理.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A15303C1CB4E4C900EF35B5 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = ElonChan; + TargetAttributes = { + 9A1530431CB4E4C900EF35B5 = { + CreatedOnToolsVersion = 7.3; + }; + }; + }; + buildConfigurationList = 9A15303F1CB4E4C900EF35B5 /* Build configuration list for PBXProject "KVO实现原理" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A15303B1CB4E4C900EF35B5; + productRefGroup = 9A1530451CB4E4C900EF35B5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A1530431CB4E4C900EF35B5 /* KVO实现原理 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A1530421CB4E4C900EF35B5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1530571CB4E4C900EF35B5 /* LaunchScreen.storyboard in Resources */, + 9A1530541CB4E4C900EF35B5 /* Assets.xcassets in Resources */, + 9A1530521CB4E4C900EF35B5 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A1530401CB4E4C900EF35B5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A15304F1CB4E4C900EF35B5 /* ViewController.m in Sources */, + 9A15304C1CB4E4C900EF35B5 /* AppDelegate.m in Sources */, + 9A1530491CB4E4C900EF35B5 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 9A1530501CB4E4C900EF35B5 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A1530511CB4E4C900EF35B5 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9A1530551CB4E4C900EF35B5 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A1530561CB4E4C900EF35B5 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A1530591CB4E4C900EF35B5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A15305A1CB4E4C900EF35B5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.3; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A15305C1CB4E4C900EF35B5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "KVO实现原理/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "LeanCloud.KVO----"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 9A15305D1CB4E4C900EF35B5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = "KVO实现原理/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "LeanCloud.KVO----"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A15303F1CB4E4C900EF35B5 /* Build configuration list for PBXProject "KVO实现原理" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A1530591CB4E4C900EF35B5 /* Debug */, + 9A15305A1CB4E4C900EF35B5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A15305B1CB4E4C900EF35B5 /* Build configuration list for PBXNativeTarget "KVO实现原理" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A15305C1CB4E4C900EF35B5 /* Debug */, + 9A15305D1CB4E4C900EF35B5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A15303C1CB4E4C900EF35B5 /* Project object */; +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 0000000..d30ee56 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" new file mode 100644 index 0000000..709e008 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist" @@ -0,0 +1,5 @@ + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcscheme" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcscheme" new file mode 100644 index 0000000..567fa8b --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcscheme" @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" new file mode 100644 index 0000000..c678428 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist" @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + KVO实现原理.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9A1530431CB4E4C900EF35B5 + + primary + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.h" new file mode 100644 index 0000000..53f8577 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.h" @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// KVO实现原理 +// +// Created by 陈宜龙 on 16/4/6. +// Copyright © 2016年 ElonChan. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.m" new file mode 100644 index 0000000..02cfedb --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/AppDelegate.m" @@ -0,0 +1,45 @@ +// +// AppDelegate.m +// KVO实现原理 +// +// Created by 陈宜龙 on 16/4/6. +// Copyright © 2016年 ElonChan. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Assets.xcassets/AppIcon.appiconset/Contents.json" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Assets.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 0000000..36d2c80 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Assets.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/LaunchScreen.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/LaunchScreen.storyboard" new file mode 100644 index 0000000..2e721e1 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/LaunchScreen.storyboard" @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/Main.storyboard" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/Main.storyboard" new file mode 100644 index 0000000..f56d2f3 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Base.lproj/Main.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Info.plist" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Info.plist" new file mode 100644 index 0000000..40c6215 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/Info.plist" @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.h" new file mode 100644 index 0000000..1ac38a0 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// KVO实现原理 +// +// Created by 陈宜龙 on 16/4/6. +// Copyright © 2016年 ElonChan. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + +@end + diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.m" new file mode 100644 index 0000000..c2d85f0 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/ViewController.m" @@ -0,0 +1,36 @@ +// +// ViewController.m +// KVO实现原理 +// +// Created by 微博@iOS程序犭袁 on 16/4/6. +// Copyright © 2016年 ElonChan. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () +@property (nonatomic, strong) NSDate *now; +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self addObserver:self forKeyPath:@"now" options:NSKeyValueObservingOptionNew context:nil]; + NSLog(@"1"); + [self willChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"2"); + [self didChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"4"); +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + NSLog(@"3"); +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/main.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/main.m" new file mode 100644 index 0000000..9a7da91 --- /dev/null +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/Demo_46\351\242\230\344\270\21651\351\242\230_KVO\345\216\237\347\220\206_\345\246\202\344\275\225\346\211\213\345\212\250\350\247\246\345\217\221\344\270\200\344\270\252value\347\232\204KVO/KVO\345\256\236\347\216\260\345\216\237\347\220\206/main.m" @@ -0,0 +1,16 @@ +// +// main.m +// KVO实现原理 +// +// Created by 陈宜龙 on 16/4/6. +// Copyright © 2016年 ElonChan. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/16909544760924.jpg" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/16909544760924.jpg" new file mode 100644 index 0000000..6180680 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/16909544760924.jpg" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error.jpg" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error.jpg" new file mode 100644 index 0000000..ab51dc8 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error.jpg" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_01.jpg" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_01.jpg" new file mode 100644 index 0000000..e1fe397 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_01.jpg" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_02.jpg" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_02.jpg" new file mode 100644 index 0000000..8194d7c Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/54_How to_debug_the_BAD_ACCESS_error_02.jpg" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/Screen Shot 2023-08-02 at 20.15.47.png" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/Screen Shot 2023-08-02 at 20.15.47.png" new file mode 100644 index 0000000..6122ad5 Binary files /dev/null and "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/assets/Screen Shot 2023-08-02 at 20.15.47.png" differ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\212\357\274\211.md" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\212\357\274\211.md" index 697382d..83beaa4 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\212\357\274\211.md" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\212\357\274\211.md" @@ -1,4 +1,6 @@ -[《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/)—参考答案(上) +# [《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/)—参考答案(上) + +

说明:面试题来源是[微博@我就叫Sunny怎么了](http://weibo.com/u/1364395395)的这篇博文:[《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/),其中共55题,除第一题为纠错题外,其他54道均为简答题。 @@ -10,53 +12,116 @@ ---------- +# 索引 + + - [1. 风格纠错题](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#1-风格纠错题) + + 1. [优化部分](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#优化部分) + 2. [硬伤部分](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#硬伤部分) + + ![https://github.com/ChenYilong](http://i.imgur.com/O7Zev94.png) + + - [2. 什么情况使用 weak 关键字,相比 assign 有什么不同?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#2-什么情况使用-weak-关键字相比-assign-有什么不同) + - [3. 怎么用 copy 关键字?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#3-怎么用-copy-关键字) + - [4. 这个写法会出什么问题: @property (copy) NSMutableArray *array;](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#4-这个写法会出什么问题-property-copy-nsmutablearray-array) + - [5. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#5-如何让自己的类用-copy-修饰符如何重写带-copy-关键字的-setter) + - [6. @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#6-property-的本质是什么ivargettersetter-是如何生成并添加到这个类中的) + - [7. @protocol 和 category 中如何使用 @property](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#7-protocol-和-category-中如何使用-property) + - [8. runtime 如何实现 weak 属性](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#8-runtime-如何实现-weak-属性) + - [9. @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#9-property中有哪些属性关键字-property-后面可以有哪些修饰符) + - [10. weak属性需要在dealloc中置nil么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#10-weak属性需要在dealloc中置nil么) + - [11. @synthesize和@dynamic分别有什么作用?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#11-synthesize和dynamic分别有什么作用) + - [12. ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#12-arc下不显式指定任何属性关键字时默认的关键字都有哪些) + - [13. 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#13-用property声明的nsstring或nsarraynsdictionary经常使用copy关键字为什么如果改用strong关键字可能造成什么问题) + 1. [对非集合类对象的copy操作](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#1-对非集合类对象的copy操作) + 2. [集合类对象的copy与mutableCopy](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#2集合类对象的copy与mutablecopy) + - [14. @synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#14-synthesize合成实例变量的规则是什么假如property名为foo存在一个名为_foo的实例变量那么还会自动合成新变量么) + - [15. 在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#15-在有了自动合成属性实例变量之后synthesize还有哪些使用场景) + - [16. objc中向一个nil对象发送消息将会发生什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#16-objc中向一个nil对象发送消息将会发生什么) + - [17. objc中向一个对象发送消息[obj foo]和objc_msgSend()函数之间有什么关系?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#17-objc中向一个对象发送消息obj-foo和objc_msgsend函数之间有什么关系) + - [18. 什么时候会报unrecognized selector的异常?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#18-什么时候会报unrecognized-selector的异常) + - [19. 一个objc对象如何进行内存布局?(考虑有父类的情况)](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#19-一个objc对象如何进行内存布局考虑有父类的情况) + - [20. 一个objc对象的isa的指针指向什么?有什么作用?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#20-一个objc对象的isa的指针指向什么有什么作用) + - [21. 下面的代码输出什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md#21-下面的代码输出什么) + + + ```Objective-C + @implementation Son : Father + - (id)init + { + self = [super init]; + if (self) { + NSLog(@"%@", NSStringFromClass([self class])); + NSLog(@"%@", NSStringFromClass([super class])); + } + return self; + } + @end + ``` + + - [22. runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8A%EF%BC%89.md#22-runtime%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87selector%E6%89%BE%E5%88%B0%E5%AF%B9%E5%BA%94%E7%9A%84imp%E5%9C%B0%E5%9D%80%E5%88%86%E5%88%AB%E8%80%83%E8%99%91%E7%B1%BB%E6%96%B9%E6%B3%95%E5%92%8C%E5%AE%9E%E4%BE%8B%E6%96%B9%E6%B3%95 "") + - [23. 使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8A%EF%BC%89.md#23-%E4%BD%BF%E7%94%A8runtime-associate%E6%96%B9%E6%B3%95%E5%85%B3%E8%81%94%E7%9A%84%E5%AF%B9%E8%B1%A1%E9%9C%80%E8%A6%81%E5%9C%A8%E4%B8%BB%E5%AF%B9%E8%B1%A1dealloc%E7%9A%84%E6%97%B6%E5%80%99%E9%87%8A%E6%94%BE%E4%B9%88 "") + - [24. objc中的类方法和实例方法有什么本质区别和联系?]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8A%EF%BC%89.md#24-objc%E4%B8%AD%E7%9A%84%E7%B1%BB%E6%96%B9%E6%B3%95%E5%92%8C%E5%AE%9E%E4%BE%8B%E6%96%B9%E6%B3%95%E6%9C%89%E4%BB%80%E4%B9%88%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB%E5%92%8C%E8%81%94%E7%B3%BB "") + - 25--55题,请看[下篇]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8B%EF%BC%89.md "") 。 -###1. 风格纠错题 -![enter image description here](http://i.imgur.com/O7Zev94.png) +------- + +## 正文 + +### 1. 风格纠错题 +![https://github.com/ChenYilong](http://i.imgur.com/O7Zev94.png) 修改完的代码: 修改方法有很多种,现给出一种做示例: - // .h文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 - typedef NS_ENUM(NSInteger, CYLSex) { - CYLSexMan, - CYLSexWoman - }; + ```Objective-C +// .h文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 - @interface CYLUser : NSObject +typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale +}; - @property (nonatomic, readonly, copy) NSString *name; - @property (nonatomic, readonly, assign) NSUInteger age; - @property (nonatomic, readonly, assign) CYLSex sex; +@interface CYLUser : NSObject - - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; - + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; +@property (nonatomic, readonly, copy) NSString *name; +@property (nonatomic, readonly, assign) NSUInteger age; +@property (nonatomic, readonly, assign) CYLGender gender; + +- (instancetype)initWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; ++ (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; + +@end + ``` - @end +下面对具体修改的地方,分两部分做下介绍:**硬伤部分** 和 **优化部分** +。因为**硬伤部分**没什么技术含量,为了节省大家时间,放在后面讲,大神请直接看**优化部分**。 -下面对具体修改的地方,分两部分做下介绍:***硬伤部分***和***优化部分*** -。因为***硬伤部分***没什么技术含量,为了节省大家时间,放在后面讲,大神请直接看***优化部分***。 +#### **优化部分** -####***优化部分*** + 1. enum 建议使用 `NS_ENUM` 和 `NS_OPTIONS` 宏来定义枚举类型,参见官方的 [Adopting Modern Objective-C](https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html) 一文: - 4. enum建议使用 `NS_ENUM` 和 `NS_OPTIONS` 宏来定义枚举类型,参见官方的 [Adopting Modern Objective-C](https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html) 一文: - ```objective-c + ```objective-c //定义一个枚举 - typedef NS_ENUM(NSInteger, CYLSex) { - CYLSexMan, - CYLSexWoman + typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale }; -``` - 2. age属性的类型:应避免使用基本类型,建议使Foundation数据类型,对应关系如下: + ``` + (仅仅让性别包含男和女可能并不严谨,最严谨的做法可以参考 [这里](https://github.com/ChenYilong/iOSInterviewQuestions/issues/9) 。) + + 2. age 属性的类型:应避免使用基本类型,建议使用 Foundation 数据类型,对应关系如下: ```Objective-C int -> NSInteger @@ -64,24 +129,27 @@ float -> CGFloat 动画时间 -> NSTimeInterval ``` -同时考虑到age的特点,应使用NSUInteger,而非int。 +同时考虑到 age 的特点,应使用 NSUInteger ,而非 int 。 这样做的是基于64-bit 适配考虑,详情可参考出题者的博文[《64-bit Tips》](http://blog.sunnyxx.com/2014/12/20/64-bit-tips/)。 - 5. 如果工程项目非常庞大,需要拆分成不同的模块,可以在类、typedef宏命名的时候使用前缀。 - 6. doLogIn方法不应写在该类中:虽然`LogIn`的命名不太清晰,但笔者猜测是login的意思,而登录操作属于业务逻辑,观察类名 UserModel ,以及属性的命名方式,该类应该是一个 Model 而不是一个“ MVVM 模式下的 ViewModel ”: + 3. 如果工程项目非常庞大,需要拆分成不同的模块,可以在类、typedef宏命名的时候使用前缀。 + 4. doLogIn方法不应写在该类中:

虽然`LogIn`的命名不太清晰,但笔者猜测是login的意思, (勘误:Login是名词,LogIn 是动词,都表示登陆的意思。见: [ ***Log in vs. login*** ](http://grammarist.com/spelling/log-in-login/))

登录操作属于业务逻辑,观察类名 UserModel ,以及属性的命名方式,该类应该是一个 Model 而不是一个“ MVVM 模式下的 ViewModel ”: - > 无论是MVC模式还是MVVM模式,业务逻辑都不应当写在Model里。 + > 无论是 MVC 模式还是 MVVM 模式,业务逻辑都不应当写在 Model 里:MVC 应在 C,MVVM 应在 VM。 - (如果抛开命名规范,假设该类真的是MVVM模式里的 ViewModel ,那么UserModel这个类可能对应的是用户注册页面,如果有特殊的业务需求,比如:login对应的应当是注册并登录的一个Button,出现login方法也可能是合理的。) + (如果抛开命名规范,假设该类真的是 MVVM 模式里的 ViewModel ,那么 UserModel 这个类可能对应的是用户注册页面,如果有特殊的业务需求,比如: `-logIn` 对应的应当是注册并登录的一个 Button ,出现 `-logIn` 方法也可能是合理的。) - 7. doLogIn方法命名不规范:添加了多余的动词前缀。 + 5. doLogIn 方法命名不规范:添加了多余的动词前缀。 请牢记: - > 如果方法表示让对象执行一个动作,使用动词打头来命名,注意不要使用`do`,`does`这种多余的关键字,动词本身的暗示就足够了。 - 11. `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;`方法中不要用`with`来连接两个参数:`withAge:`应当换为`age:`,`age:`已经足以清晰说明参数的作用,也不建议用`andAge:`:通常情况下,即使有类似`withA:withB:`的命名需求,也通常是使用`withA:andB:`这种命名,用来表示方法执行了两个相对独立的操作(*从设计上来说,这时候也可以拆分成两个独立的方法*),它不应该用作阐明有多个参数,比如下面的: + > 如果方法表示让对象执行一个动作,使用动词打头来命名,注意不要使用 `do`,`does` 这种多余的关键字,动词本身的暗示就足够了。 + + 应为 `-logIn` (注意: `Login` 是名词, `LogIn` 是动词,都表示登陆。 见[ ***Log in vs. login*** ](http://grammarist.com/spelling/log-in-login/)) + + 6. `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;`方法中不要用 `with` 来连接两个参数: `withAge:` 应当换为`age:`,`age:` 已经足以清晰说明参数的作用,也不建议用 `andAge:` :通常情况下,即使有类似 `withA:withB:` 的命名需求,也通常是使用`withA:andB:` 这种命名,用来表示方法执行了两个相对独立的操作(*从设计上来说,这时候也可以拆分成两个独立的方法*),它不应该用作阐明有多个参数,比如下面的: ```objective-c //错误,不要使用"and"来连接参数 @@ -92,10 +160,10 @@ - (BOOL)openFile:(NSString *)fullPath withApplication:(NSString *)appName andDeactivate:(BOOL)flag; ``` - 12. 由于字符串值可能会改变,所以要把相关属性的“内存管理语义”声明为copy。(原因在下文有详细论述:***用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?***) - 2. “性别”(sex)属性的:该类中只给出了一种“初始化方法” (initializer)用于设置“姓名”(Name)和“年龄”(Age)的初始值,那如何对“性别”(Sex)初始化? + 7. 由于字符串值可能会改变,所以要把相关属性的“内存管理语义”声明为 copy 。(原因在下文有详细论述:***用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?***) + 8. “性别”(gender)属性的:该类中只给出了一种“初始化方法” (initializer)用于设置“姓名”(Name)和“年龄”(Age)的初始值,那如何对“性别”(gender)初始化? - Objective-C 有 designated 和 secondary 初始化方法的观念。 designated 初始化方法是提供所有的参数,secondary 初始化方法是一个或多个,并且提供一个或者更多的默认参数来调用 designated 初始化方法的初始化方法。举例说明: + Objective-C 有 designated 和 secondary 初始化方法的观念。 designated 初始化方法是提供所有的参数, 可以翻译为 "指定初始化方法" 或 "主要初始化方法"。secondary 初始化方法是一个或多个,并且提供一个或者更多的默认参数来调用 designated 初始化方法的初始化方法。举例说明: @@ -111,18 +179,18 @@ - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age - sex:(CYLSex)sex { - if(self = [super init]) { + gender:(CYLGender)gender { + if (self = [super init]) { _name = [name copy]; _age = age; - _sex = sex; + _gender = gender; } return self; } - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age { - return [self initWithName:name age:age sex:nil]; + return [self initWithName:name age:age gender:nil]; } @end @@ -133,9 +201,13 @@ - 上面的代码中initWithName:age:sex: 就是 designated 初始化方法,另外的是 secondary 初始化方法。因为仅仅是调用类实现的 designated 初始化方法。 + 上面的代码中 `initWithName:age:gender:` 就是 designated 初始化方法,另外的初始化方法, 在 Objective-C 中我们可以起一个名字叫二级初始化方法 (Secondary Initializer)。因为仅仅是调用类实现的 designated 初始化方法。 + + 而在 Swift 中, Apple 给二级初始化方法 (Secondary Initializer) 给出了官方的定义,叫做 Convenience Initializer, 也常常简写为 Convenience Init,详见 [《The Swift Programming Language - Designated Initializers and Convenience Initializers》](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/initialization/#Designated-Initializers-and-Convenience-Initializers) + +详见下文, 本题的 Swift 版本的代码。 - 因为出题者没有给出.m文件,所以有两种猜测:1:本来打算只设计一个designated 初始化方法,但漏掉了“性别”(sex)属性。那么最终的修改代码就是上文给出的第一种修改方法。2:不打算初始时初始化“性别”(sex)属性,打算后期再修改,如果是这种情况,那么应该把“性别”(sex)属性设为readwrite属性,最终给出的修改代码应该是: + 因为出题者没有给出 `.m` 文件,所以有两种猜测:1:本来打算只设计一个 designated 初始化方法,但漏掉了“性别”(gender)属性。那么最终的修改代码就是上文给出的第一种修改方法。2:不打算初始时初始化“性别”(gender)属性,打算后期再修改,如果是这种情况,那么应该把“性别”(gender)属性设为 readwrite 属性,最终给出的修改代码应该是: @@ -148,40 +220,86 @@ // https://github.com/ChenYilong // 第二种修改方法(基于第一种修改方法的基础上) - typedef NS_ENUM(NSInteger, CYLSex) { - CYLSexMan, - CYLSexWoman + typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale }; @interface CYLUser : NSObject @property (nonatomic, readonly, copy) NSString *name; @property (nonatomic, readonly, assign) NSUInteger age; - @property (nonatomic, readwrite, assign) CYLSex sex; + @property (nonatomic, readwrite, assign) CYLGender gender; - - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; + - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age; - + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; + + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; @end ``` - .h中暴露 designated 初始化方法,是为了方便子类化 (想了解更多,请戳--》 [***《禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C Craftsmanship 中文翻译)》***](http://is.gd/OQ49zk)。) + `.h` 中暴露 designated 初始化方法,是为了方便子类化 (想了解更多,请戳--》 [***《禅与 Objective-C 编程艺术 (Zen and the Art of the Objective-C Craftsmanship 中文翻译)》***](http://is.gd/OQ49zk)。) +对应的 Swift 版本如下: - 2. 按照接口设计的惯例,如果设计了“初始化方法” (initializer),也应当搭配一个快捷构造方法。而快捷构造方法的返回值,建议为instancetype,为保持一致性,init方法和快捷构造方法的返回类型最好都用instancetype。 - 2. 如果基于第一种修改方法:既然该类中已经有一个“初始化方法” (initializer),用于设置“姓名”(Name)、“年龄”(Age)和“性别”(Sex)的初始值: -那么在设计对应@property时就应该尽量使用不可变的对象:其三个属性都应该设为“只读”。用初始化方法设置好属性值之后,就不能再改变了。在本例中,仍需声明属性的“内存管理语义”。于是可以把属性的定义改成这样 + ```Swift +import Foundation + +enum CYLGender: Int { + case undefined + case male + case female +} + +class CYLUser: NSObject, NSCopying { + + let name: String + let age: Int + var gender: CYLGender + + init(name: String, age: Int, gender: CYLGender) { + self.name = name + self.age = age + self.gender = gender + } + + convenience init(name: String, age: Int) { + self.init(name: name, age: age, gender: .undefined) + } + + static func user(name: String, age: Int, gender: CYLGender) -> CYLUser { + return CYLUser(name: name, age: age, gender: gender) + } + + func copy(with zone: NSZone? = nil) -> Any { + let copy = CYLUser(name: name, age: age, gender: gender) + return copy + } +} + + ``` + + + - 按照接口设计的惯例,如果设计了“初始化方法” (initializer),也应当搭配一个快捷构造方法。而快捷构造方法的返回值,建议为 instancetype,为保持一致性,init 方法和快捷构造方法的返回类型最好都用 instancetype。 + - 如果基于第一种修改方法:既然该类中已经有一个“初始化方法” (initializer),用于设置“姓名”(Name)、“年龄”(Age)和“性别”(Gender)的初始值: +那么在设计对应 `@property` 时就应该尽量使用不可变的对象:其三个属性都应该设为“只读”。用初始化方法设置好属性值之后,就不能再改变了。在本例中,仍需声明属性的“内存管理语义”。于是可以把属性的定义改成这样 + + + ```Objective-C @property (nonatomic, readonly, copy) NSString *name; - @property (nonatomic, readonly, assign) NSUInter age; - @property (nonatomic, readonly, assign) CYLSex sex; + @property (nonatomic, readonly, assign) NSUInteger age; + @property (nonatomic, readonly, assign) CYLGender gender; + ``` + 由于是只读属性,所以编译器不会为其创建对应的“设置方法”,即便如此,我们还是要写上这些属性的语义,以此表明初始化方法在设置这些属性值时所用的方式。要是不写明语义的话,该类的调用者就不知道初始化方法里会拷贝这些属性,他们有可能会在调用初始化方法之前自行拷贝属性值。这种操作多余而且低效。 - 2. `initUserModelWithUserName`如果改为`initWithName`会更加简洁,而且足够清晰。 - 2. `UserModel`如果改为`User`会更加简洁,而且足够清晰。 - 2. `UserSex`如果改为`Sex`会更加简洁,而且足够清晰。 - 2. 第二个@property中assign和nonatomic调换位置。 + + 9. `initUserModelWithUserName` 如果改为 `initWithName` 或者 `initWithUsername` 会更加简洁,而且足够清晰。 + 10. `UserModel` 如果改为 `User` 会更加简洁,而且足够清晰。 + 11. `UserSex`如果改为`Gender` 会更加简洁,而且足够清晰。 + 12. 第二个 `@property` 中 assign 和 nonatomic 调换位置。 推荐按照下面的格式来定义属性 ```Objective-C @@ -189,64 +307,130 @@ ``` 属性的参数应该按照下面的顺序排列: 原子性,读写 和 内存管理。 这样做你的属性更容易修改正确,并且更好阅读。这在[《禅与Objective-C编程艺术 >》](https://github.com/oa414/objc-zen-book-cn#属性定义)里有介绍。而且习惯上修改某个属性的修饰符时,一般从属性名从右向左搜索需要修动的修饰符。最可能从最右边开始修改这些属性的修饰符,根据经验这些修饰符被修改的可能性从高到底应为:内存管理 > 读写权限 >原子操作。 -####***硬伤部分*** +讨论区: [《个人认为,UserModel还是比起User的命名方式好些 #21》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/21) + +#### ***硬伤部分*** 1. 在-和(void)之间应该有一个空格 - 3. enum中驼峰命名法和下划线命名法混用错误:枚举类型的命名规则和函数的命名规则相同:命名时使用驼峰命名法,勿使用下划线命名法。 - 3. enum左括号前加一个空格,或者将左括号换到下一行 - 4. enum右括号后加一个空格 + 3. enum 中驼峰命名法和下划线命名法混用错误:枚举类型的命名规则和函数的命名规则相同:命名时使用驼峰命名法,勿使用下划线命名法。 + 3. enum 左括号前加一个空格,或者将左括号换到下一行 + 4. enum 右括号后加一个空格 2. `UserModel :NSObject` 应为`UserModel : NSObject`,也就是`:`右侧少了一个空格。 - 2. @interface与@property属性声明中间应当间隔一行。 + 2. `@interface` 与 `@property` 属性声明中间应当间隔一行。 2. 两个方法定义之间不需要换行,有时为了区分方法的功能也可间隔一行,但示例代码中间隔了两行。 - 9. - `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;`方法中方法名与参数之间多了空格。而且`-` 与`(id)`之间少了空格。 - 10. - `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;`方法中方法名与参数之间多了空格:`(NSString*)name`前多了空格。 - 10. - `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;`方法中`(NSString*)name`,应为`(NSString *)name`,少了空格。 - 7. doLogIn方法命名不清晰:笔者猜测是login的意思,应该是粗心手误造成的。 - -###2. 什么情况使用 weak 关键字,相比 assign 有什么不同? + 9. `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;` 方法中方法名与参数之间多了空格。而且 `-` 与 `(id)` 之间少了空格。 + 10. `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;` 方法中方法名与参数之间多了空格:`(NSString*)name` 前多了空格。 + 10. `-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;` 方法中 `(NSString*)name`,应为 `(NSString *)name`,少了空格。 + 7.

doLogIn方法中的 `LogIn` 命名不清晰:笔者猜测是login的意思,应该是粗心手误造成的。 + (勘误: `Login` 是名词, `LogIn` 是动词,都表示登陆的意思。见: [ ***Log in vs. login*** ](http://grammarist.com/spelling/log-in-login/))

+ +注意: + +关于 age 是否需要设置为 `NSUInteger` 的问题: + +因为需要考虑到「Objective-C 的有符号的 -1 隐式转换到无符号整数」的情况, + +这里提供两种方案供选择: + +第一种方案: + +age 设计为 NSInteger类型,防止他人传负数。 + +另一种方案(折中方案): + +age 设计为 NSUInteger类型,外部只读, +提供初始化接口,初始化接口内部,判断是否溢出。 + +设置为 NSUInteger 的好处 |设置为 NSUInteger 的坏处 +:-------------:|:-------------: +内存占用小 | Objective-C 的有符号的 -1 隐式转换到无符号整数 +能起到提示作用:提示调用方传参数格式 | - + +设置为 NSInteger 的好处 |设置为 NSInteger 的坏处 +:-------------:|:-------------: +内存占用大 | 可以规避该问题「Objective-C 的有符号的 -1 隐式转换到无符号整数」的情况 +-- | 不能起到提示作用:提示调用方传参数格式 + +考虑到目前 iPhone 设备的内存与 NSInteger 的内存开销,建议采用 “将 age 设计为 NSInteger类型”的方案。 + +Objective-C 中诸如 NSArray 中的 count 返回的是 NSUInteger 是一个非常不优雅的设计, Swift 中的 Array 的 count 就选择使用 Int 。强制要用 `NSUInteger` 的地方就是 `bitmask` , Objective-C 中叫 NS_OPTION ,因为要消除不同的编译器的 `right shift` 到底是 `arithmetic right shift` 还是 `logical right shift` 的歧义。 + +如果对硬伤部分有疑问,欢迎参与讨论: [《硬伤部分 #49》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/49) + +### 2. 什么情况使用 weak 关键字,相比 assign 有什么不同? 什么情况使用 weak 关键字? - 1. 在ARC中,在有可能出现循环引用的时候,往往要通过让其中一端使用weak来解决,比如:delegate代理属性 + 1. 在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性 - 2. 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用weak,自定义IBOutlet控件属性一般也使用weak;当然,也可以使用strong。在下文也有论述:***《IBOutlet连出来的视图属性为什么可以被设置成weak?》*** + 2. 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。在下文也有论述:***《IBOutlet连出来的视图属性为什么可以被设置成weak?》*** 不同点: - 1. `weak` 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同assign类似, -然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 -而 `assign` 的“设置方法”只会执行针对“纯量类型” (scalar type,例如 CGFloat 或 -NSlnteger 等)的简单赋值操作。 + 1. `weak` 修饰符表明该属性定义了一种“非拥有关系” (nonowning relationship)。在为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此行为与 assign 类似,不同之处在于,在 weak 属性所指的对象遭到销毁、释放时,该属性值也会清空(nil out)。而 `assign` 的“设置方法”只会执行针对“纯量类型/基本数据类型” (scalar type,例如 CGFloat 或 +NSInteger 等)的简单赋值操作。 + + 2. assign 可以用非 OC 对象,而 weak 必须用于 OC 对象 - 2. assigin 可以用非OC对象,而weak必须用于OC对象 +其他讨论见: [《第2题 #89》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/89 ) -###3. 怎么用 copy 关键字? +### 3. 怎么用 copy 关键字? 用途: 1. NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary; - 2. block也经常使用copy关键字,具体原因见[官方文档:***Objects Use Properties to Keep Track of Blocks***](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html#//apple_ref/doc/uid/TP40011210-CH8-SW12): + 2. block 也经常使用 copy 关键字,具体原因见[官方文档:***Objects Use Properties to Keep Track of Blocks***](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html#//apple_ref/doc/uid/TP40011210-CH8-SW12): + + block 使用 copy 是从 MRC 遗留下来的“传统”,在 MRC 中,方法内部的 block 是在栈区的,使用 copy 可以把它放到堆区. + + 在 ARC 中写不写都行: + + 在 ARC 环境下,编译器会根据情況自动将栈上的 block 复制到堆上,比如以下情况: - block 使用 copy 是从 MRC 遗留下来的“传统”,在 MRC 中,方法内部的 block 是在栈区的,使用 copy 可以把它放到堆区.在ARC中写不写都行:对于 block 使用 copy 还是 strong 效果是一样的,但写上 copy 也无伤大雅,还能时刻提醒我们:编译器自动对 block 进行了 copy 操作。如果不写 copy ,该类的调用者有可能会忘记或者根本不知道“编译器会自动对 block 进行了 copy 操作”,他们有可能会在调用之前自行拷贝属性值。这种操作多余而低效。 +- block 作为函数返回值时 +- 将 block 赋值给 __strong 指针时(property 的 copy 属性对应的是这一条) +- block 作为 Cocoa API 中方法名含有 using Block 的方法参数时 +- block 作为 GCD API 的方法参数时 - ![enter image description here](http://i.imgur.com/VlVKl8L.png) + ![](https://tva1.sinaimg.cn/large/007S8ZIlly1gfj47m0v1wj30s01cak0r.jpg) + +其中, block 的 property 设置为 copy, 对应的是这一条:将 block 赋值给 __strong 指针时。 + + + + 换句话说: + + 对于 block 使用 copy 还是 strong 效果是一样的,但写上 copy 也无伤大雅,还能时刻提醒我们:编译器自动对 block 进行了 copy 操作。如果不写 copy ,该类的调用者有可能会忘记或者根本不知道“编译器会自动对 block 进行了 copy 操作”,他们有可能会在调用之前自行拷贝属性值。这种操作多余而低效。你也许会感觉我这种做法有些怪异,不需要写还依然写。如果你这样想,其实是你“日用而不知”,你平时开发中是经常在用我说的这种做法的,比如下面的属性不写copy也行,但是你会选择写还是不写呢? + + ```Objective-C + @property (nonatomic, copy) NSString *userId; + + - (instancetype)initWithUserId:(NSString *)userId { + self = [super init]; + if (!self) { + return nil; + } + _userId = [userId copy]; + return self; + } + + ``` + + ![https://github.com/ChenYilong](http://i.imgur.com/VlVKl8L.png) 下面做下解释: -copy此特质所表达的所属关系与strong类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 -当属性类型为NSString时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个NSMutableString类的实例。这个类是NSString的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。 + copy 此特质所表达的所属关系与 strong 类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 +当属性类型为 NSString 时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个 NSMutableString 类的实例。这个类是 NSString 的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。 -> 用@property声明 NSString、NSArray、NSDictionary 经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。 +> 用 `@property` 声明 NSString、NSArray、NSDictionary 经常使用 copy 关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。 该问题在下文中也有论述:***用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?*** -###4. 这个写法会出什么问题: `@property (copy) NSMutableArray *array;` -两个问题:1、添加,删除,修改数组内的元素的时候,程序会因为找不到对应的方法而崩溃.因为copy就是复制一个不可变NSArray的对象;2、使用了atomic属性会严重影响性能 ; +### 4. 这个写法会出什么问题: `@property (copy) NSMutableArray *array;` +两个问题:1、添加,删除,修改数组内的元素的时候,程序会因为找不到对应的方法而崩溃.因为 copy 就是复制一个不可变 NSArray 的对象;2、使用了 atomic 属性会严重影响性能 ; -第1条的相关原因在下文中有论述***《用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?》*** 以及上文***《怎么用 copy 关键字?》***也有论述。 +第1条的相关原因在下文中有论述***《用@property声明的NSString(或NSArray,NSDictionary)经常使用 copy 关键字,为什么?如果改用strong关键字,可能造成什么问题?》*** 以及上文***《怎么用 copy 关键字?》***也有论述。 比如下面的代码就会发生崩溃 @@ -284,58 +468,64 @@ self.mutableArray = array; 第2条原因,如下: -> 该属性使用了同步锁,会在创建时生成一些额外的代码用于帮助编写多线程程序,这会带来性能问题,通过声明nonatomic可以节省这些虽然很小但是不必要额外开销。 +> 该属性使用了互斥锁(atomic 的底层实现,老版本是自旋锁,iOS10开始是互斥锁--spinlock底层实现改变了。),会在创建时生成一些额外的代码用于帮助编写多线程程序,这会带来性能问题,通过声明 nonatomic 可以节省这些虽然很小但是不必要额外开销。 + +在默认情况下,由编译器所合成的方法会通过锁定机制确保其原子性(atomicity)。如果属性具备 nonatomic 特质,则不使用互斥锁(atomic 的底层实现,老版本是自旋锁,iOS10开始是互斥锁--spinlock底层实现改变了。)。请注意,尽管没有名为“atomic”的特质(如果某属性不具备 nonatomic 特质,那它就是“原子的”(atomic))。 -在默认情况下,由编译器所合成的方法会通过锁定机制确保其原子性(atomicity)。如果属性具备nonatomic特质,则不使用同步锁。请注意,尽管没有名为“atomic”的特质(如果某属性不具备nonatomic特质,那它就是“原子的”(atomic))。 +在iOS开发中,你会发现,几乎所有属性都声明为 nonatomic。 -在iOS开发中,你会发现,几乎所有属性都声明为nonatomic。 +一般情况下并不要求属性必须是“原子的”,因为这并不能保证“线程安全” ( thread safety),若要实现“线程安全”的操作,还需采用更为深层的加锁机制才行。例如,一个线程在连续多次读取某属性值的过程中有别的线程在同时改写该值,那么即便将属性声明为 atomic,也还是会读到不同的属性值。 -一般情况下并不要求属性必须是“原子的”,因为这并不能保证“线程安全” ( thread safety),若要实现“线程安全”的操作,还需采用更为深层的锁定机制才行。例如,一个线程在连续多次读取某属性值的过程中有别的线程在同时改写该值,那么即便将属性声明为atomic,也还是会读到不同的属性值。 +因此,开发iOS程序时一般都会使用 nonatomic 属性。但是在开发 Mac OS X 程序时,使用 + atomic 属性通常都不会有性能瓶颈。 -因此,开发iOS程序时一般都会使用nonatomic属性。但是在开发Mac OS X程序时,使用 -atomic属性通常都不会有性能瓶颈。 +如果对题有疑问,可参考讨论区: [《第四题 #62》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/62) -###5. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter? +### 5. 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter? -> 若想令自己所写的对象具有拷贝功能,则需实现NSCopying协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现NSCopyiog与NSMutableCopying协议。 +> 若想令自己所写的对象具有拷贝功能,则需实现 NSCopying 协议。如果自定义的对象分为可变版本与不可变版本,那么就要同时实现 `NSCopying` 与 `NSMutableCopying` 协议。 具体步骤: - 1. 需声明该类遵从NSCopying协议 - 2. 实现NSCopying协议。该协议只有一个方法: + 1. 需声明该类遵从 NSCopying 协议 + 2. 实现 NSCopying 协议。该协议只有一个方法: ```Objective-C -- (id)copyWithZone: (NSZone*) zone +- (id)copyWithZone:(NSZone *)zone; ``` -注意:一提到让自己的类用 copy 修饰符,我们总是想覆写copy方法,其实真正需要实现的却是“copyWithZone”方法。 +注意:一提到让自己的类用 copy 修饰符,我们总是想覆写copy方法,其实真正需要实现的却是 “copyWithZone” 方法。 以第一题的代码为例: + ```Objective-C // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码 - typedef NS_ENUM(NSInteger, CYLSex) { - CYLSexMan, - CYLSexWoman + typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale }; @interface CYLUser : NSObject @property (nonatomic, readonly, copy) NSString *name; @property (nonatomic, readonly, assign) NSUInteger age; - @property (nonatomic, readonly, assign) CYLSex sex; + @property (nonatomic, readonly, assign) CYLGender gender; - - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; - + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; + - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; + + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; @end + ``` + 然后实现协议中规定的方法: @@ -345,110 +535,115 @@ atomic属性通常都不会有性能瓶颈。 CYLUser *copy = [[[self class] allocWithZone:zone] initWithName:_name age:_age - sex:_sex]; + gender:_gender]; return copy; } ``` -但在实际的项目中,不可能这么简单,遇到更复杂一点,比如类对象中的数据结构可能并未在初始化方法中设置好,需要另行设置。举个例子,假如CYLUser中含有一个数组,与其他CYLUser对象建立或解除朋友关系的那些方法都需要操作这个数组。那么在这种情况下,你得把这个包含朋友对象的数组也一并拷贝过来。下面列出了实现此功能所需的全部代码: - // .h文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 以第一题《风格纠错题》里的代码为例 +但在实际的项目中,不可能这么简单,遇到更复杂一点,比如类对象中的数据结构可能并未在初始化方法中设置好,需要另行设置。举个例子,假如 CYLUser 中含有一个数组,与其他 CYLUser 对象建立或解除朋友关系的那些方法都需要操作这个数组。那么在这种情况下,你得把这个包含朋友对象的数组也一并拷贝过来。下面列出了实现此功能所需的全部代码: - typedef NS_ENUM(NSInteger, CYLSex) { - CYLSexMan, - CYLSexWoman - }; +```Objective-C +// .h文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 以第一题《风格纠错题》里的代码为例 - @interface CYLUser : NSObject +typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale +}; - @property (nonatomic, readonly, copy) NSString *name; - @property (nonatomic, readonly, assign) NSUInteger age; - @property (nonatomic, readonly, assign) CYLSex sex; +@interface CYLUser : NSObject - - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; - + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex; - - (void)addFriend:(CYLUser *)user; - - (void)removeFriend:(CYLUser *)user; +@property (nonatomic, readonly, copy) NSString *name; +@property (nonatomic, readonly, assign) NSUInteger age; +@property (nonatomic, readonly, assign) CYLGender gender; - @end +- (instancetype)initWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; ++ (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; +- (void)addFriend:(CYLUser *)user; +- (void)removeFriend:(CYLUser *)user; + +@end +``` // .m文件 - // .m文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // - @implementation CYLUser { - NSMutableSet *_friends; - } + ```Objective-C +// .m文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// - - (void)setName:(NSString *)name { - _name = [name copy]; - } +@implementation CYLUser { + NSMutableSet *_friends; +} - - (instancetype)initWithName:(NSString *)name - age:(NSUInteger)age - sex:(CYLSex)sex { - if(self = [super init]) { - _name = [name copy]; - _age = age; - _sex = sex; - _friends = [[NSMutableSet alloc] init]; - } - return self; - } +- (instancetype)initWithName:(NSString *)name + age:(NSUInteger)age + gender:(CYLGender)gender { + if (self = [super init]) { + _name = [name copy]; + _age = age; + _gender = gender; + _friends = [[NSMutableSet alloc] init]; + } + return self; +} - - (void)addFriend:(CYLUser *)user { - [_friends addObject:user]; - } ++ (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender { + CYLUser *user = [[CYLUser alloc] initWithName:name age:age gender:gender]; + user->_friends = [[NSMutableSet alloc] init]; + return user; +} - - (void)removeFriend:(CYLUser *)user { - [_friends removeObject:person]; - } +- (void)addFriend:(CYLUser *)user { + [_friends addObject:user]; +} - - (id)copyWithZone:(NSZone *)zone { - CYLUser *copy = [[[self class] allocWithZone:zone] - initWithName:_name - age:_age - sex:_sex]; - copy->_friends = [_friends mutableCopy]; - return copy; - } +- (void)removeFriend:(CYLUser *)user { + [_friends removeObject:user]; +} - - (id)deepCopy { - CYLUser *copy = [[[self class] allocWithZone:zone] - initWithName:_name - age:_age - sex:_sex]; - copy->_friends = [[NSMutableSet alloc] initWithSet:_friends - copyItems:YES]; - return copy; - } +- (id)copyWithZone:(NSZone *)zone { + CYLUser *copy = [[[self class] allocWithZone:zone] + initWithName:_name + age:_age + gender:_gender]; + copy->_friends = [_friends mutableCopy]; + return copy; +} - @end +@end + + ``` 以上做法能满足基本的需求,但是也有缺陷: > 如果你所写的对象需要深拷贝,那么可考虑新增一个专门执行深拷贝的方法。 -【注:深浅拷贝的概念,在下文中有介绍,详见下文的:***用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题?***】 +【注:深浅拷贝的概念,在下文中有介绍,详见下文的:***用@property声明的 NSString(或NSArray,NSDictionary)经常使用 copy 关键字,为什么?如果改用 strong 关键字,可能造成什么问题?***】 -在例子中,存放朋友对象的set是用“copyWithZone:”方法来拷贝的,这种浅拷贝方式不会逐个复制set中的元素。若需要深拷贝的话,则可像下面这样,编写一个专供深拷贝所用的方法: +在例子中,存放朋友对象的 set 是用 “copyWithZone:” 方法来拷贝的,这种浅拷贝方式不会逐个复制 set 中的元素。若需要深拷贝的话,则可像下面这样,编写一个专供深拷贝所用的方法: - - (id)deepCopy { - CYLUser *copy = [[[self class] allocWithZone:zone] - initWithName:_name - age:_age - sex:_sex]; - copy->_friends = [[NSMutableSet alloc] initWithSet:_friends - copyItems:YES]; - return copy; - } + ```Objective-C +- (id)deepCopy { + CYLUser *copy = [[[self class] alloc] + initWithName:_name + age:_age + gender:_gender]; + copy->_friends = [[NSMutableSet alloc] initWithSet:_friends + copyItems:YES]; + return copy; +} + + ``` + +注意:由于上文中 `CYLUser` 的 `-copyWithZone` 方法里,`_friends` 成员的的赋值使用的 `- mutableCopy` 是浅拷贝,只是创建了`NSMutableSet` 对象; 导致 `- deepCopy` 方法中, `_friends` 的每一个对象的 `_friends` 列表并未创建实例。如需继续优化,还需要改造。参见这里的讨论:https://github.com/ChenYilong/iOSInterviewQuestions/pull/24 欢迎大家可以在链接 issue 中贡献自己的想法进行讨论 至于***如何重写带 copy 关键字的 setter***这个问题, @@ -466,21 +661,25 @@ atomic属性通常都不会有性能瓶颈。 不过也有争议,有人说“苹果如果像下面这样干,是不是效率会高一些?” - - (void)setName:(NSString *)name { - if (_name != name) { - //[_name release];//MRC - _name = [name copy]; - } - } + + ```Objective-C +- (void)setName:(NSString *)name { + if (_name != name) { + //[_name release];//MRC + _name = [name copy]; + } +} + ``` -这样真得高效吗?不见得!这种写法“看上去很美、很合理”,但在实际开发中,它更像下图里的做法: -![enter image description here](http://i.imgur.com/UwV9oSn.jpeg) +这样真得高效吗?不见得!这种写法“看上去很美、很合理”,但在 ARC 时代的实际开发中,它更像下图里的做法: + +![https://github.com/ChenYilong](http://i.imgur.com/UwV9oSn.jpeg) 克强总理这样评价你的代码风格: -![enter image description here](http://i.imgur.com/N77Lkic.png) +![https://github.com/ChenYilong](http://i.imgur.com/N77Lkic.png) 我和总理的意见基本一致: @@ -488,8 +687,6 @@ atomic属性通常都不会有性能瓶颈。 > 老百姓 copy 一下,咋就这么难? - - 你可能会说: @@ -500,11 +697,7 @@ atomic属性通常都不会有性能瓶颈。 但是你有没有考虑过代价: -> 你每次调用`setX:`都会做 if 判断,这会让`setX:`变慢,如果你在`setX:`写了一串复杂的 `if+elseif+elseif+...` 判断,将会更慢。 - - - - +> 你每次调用 `setX:` 都会做 if 判断,这会让 `setX:` 变慢,如果你在 `setX:`写了一串复杂的 `if+elseif+elseif+...` 判断,将会更慢。 要回答“哪个效率会高一些?”这个问题,不能脱离实际开发,就算 copy 操作十分耗时,if 判断也不见得一定会更快,除非你把一个“ @property他当前的值 ”赋给了他自己,代码看起来就像: @@ -520,42 +713,51 @@ atomic属性通常都不会有性能瓶颈。 [a setX:[a x]]; //队友咆哮道:你在干嘛?!! ``` -> 不要在setter里进行像`if(_obj != newObj)`这样的判断。(该观点参考链接:[ ***How To Write Cocoa Object Setters: Principle 3: Only Optimize After You Measure*** ](http://vgable.com/blog/tag/autorelease/) +> ARC时代下,不要在 setter 里进行像 `if (_obj != newObj)` 这样的判断。(该观点参考链接:[ ***How To Write Cocoa Object Setters: Principle 3: Only Optimize After You Measure*** ](http://vgable.com/blog/tag/autorelease/) ) -什么情况会在 copy setter 里做 if 判断? +ARC时代下,什么情况会在 copy setter 里做 if 判断? + 例如,车速可能就有最高速的限制,车速也不可能出现负值,如果车子的最高速为300,则 setter 的方法就要改写成这样: ```Objective-C --(void)setSpeed:(int)_speed{ - if(_speed < 0) speed = 0; - if(_speed > 300) speed = 300; - _speed = speed; +-(void)setSpeed:(int)speed { + if (speed < 0) speed = 0; + if (speed > 300) speed = 300; + _speed = speed; } ``` -回到这个题目,如果单单就上文的代码而言,我们不需要也不能重写name的 setter :由于是name是只读属性,所以编译器不会为其创建对应的“设置方法”,用初始化方法设置好属性值之后,就不能再改变了。( 在本例中,之所以还要声明属性的“内存管理语义”--copy,是因为:如果不写copy,该类的调用者就不知道初始化方法里会拷贝这些属性,他们有可能会在调用初始化方法之前自行拷贝属性值。这种操作多余而低效。)。 +回到这个题目,如果单单就上文的代码而言,我们不需要也不能重写 name 的 setter :由于 name 是只读属性,所以编译器不会为其创建对应的“设置方法”,用初始化方法设置好属性值之后,就不能再改变了。( 在本例中,之所以还要声明属性的“内存管理语义”--copy,是因为:如果不写 copy,该类的调用者就不知道初始化方法里会拷贝这些属性,他们有可能会在调用初始化方法之前自行拷贝属性值。这种操作多余而低效)。 -那如何确保name被copy?在初始化方法(initializer)中做: - +那如何确保 name 被 copy?在初始化方法(initializer)中做: + + ```Objective-C - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age - sex:(CYLSex)sex { - if(self = [super init]) { + gender:(CYLGender)gender { + if ((self = [super init]) { _name = [name copy]; _age = age; - _sex = sex; + _gender = gender; _friends = [[NSMutableSet alloc] init]; } return self; } - -###6. @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的 + ``` + + +讨论区: + +- [《set中,对if (_name != name)的描述 #10》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/10 ) +- [《更新问题 “如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?” 的答案 #24》]( https://github.com/ChenYilong/iOSInterviewQuestions/pull/24 ) + +### 6. @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的 **@property 的本质是什么?** @@ -565,7 +767,7 @@ atomic属性通常都不会有性能瓶颈。 > “属性” (property)有两大概念:ivar(实例变量)、存取方法(access method = getter + setter)。 -“属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”(access method)来访问。其中,“获取方法” (getter)用于读取变量值,而“设置方法” (setter)用于写入变量值。这个概念已经定型,并且经由“属性”这一特性而成为`Objective-C 2.0`的一部分。 +“属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”(access method)来访问。其中,“获取方法” (getter)用于读取变量值,而“设置方法” (setter)用于写入变量值。这个概念已经定型,并且经由“属性”这一特性而成为 `Objective-C 2.0` 的一部分。 而在正规的 Objective-C 编码风格中,存取方法有着严格的命名规范。 正因为有了这种严格的命名规范,所以 Objective-C 这门语言才能根据名称自动创建出存取方法。其实也可以把属性当做一种关键字,其表示: @@ -577,23 +779,62 @@ atomic属性通常都不会有性能瓶颈。 例如下面这个类: - @interface Person : NSObject - @property NSString *firstName; - @property NSString *lastName; - @end + + ```Objective-C +@interface Person : NSObject +@property NSString *firstName; +@property NSString *lastName; +@end + ``` 上述代码写出来的类与下面这种写法等效: - @interface Person : NSObject - - (NSString *)firstName; - - (void)setFirstName:(NSString *)firstName; - - (NSString *)lastName; - - (void)setLastName:(NSString *)lastName; - @end + ```Objective-C +@interface Person : NSObject +- (NSString *)firstName; +- (void)setFirstName:(NSString *)firstName; +- (NSString *)lastName; +- (void)setLastName:(NSString *)lastName; +@end + ``` + +对上面这一句有疑问,可参考讨论区: [《第6题 上述代码写出来的类与下面这种写法等效: #86》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/86 ) + +**更新**: + +property在runtime中是`objc_property_t`定义如下: + +```objective-c +typedef struct objc_property *objc_property_t; +``` + +而`objc_property`是一个结构体,包括name和attributes,定义如下: + +```objective-c +struct property_t { + const char *name; + const char *attributes; +}; +``` + +而attributes本质是`objc_property_attribute_t`,定义了property的一些属性,定义如下: + +```objective-c +/// Defines a property attribute +typedef struct { + const char *name; /**< The name of the attribute */ + const char *value; /**< The value of the attribute (usually empty) */ +} objc_property_attribute_t; +``` + +而attributes的具体内容是什么呢?其实,包括:类型,原子性,内存语义和对应的实例变量。 + +例如:我们定义一个string的property`@property (nonatomic, copy) NSString *string;`,通过 `property_getAttributes(property)`获取到attributes并打印出来之后的结果为`T@"NSString",C,N,V_string` +其中T就代表类型,可参阅[Type Encodings](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100-SW1),C就代表Copy,N代表nonatomic,V就代表对应的实例变量。 @@ -601,61 +842,144 @@ atomic属性通常都不会有性能瓶颈。 > “自动合成”( autosynthesis) -完成属性定义后,编译器会自动编写访问这些属性所需的方法,此过程叫做“自动合成”( autosynthesis)。需要强调的是,这个过程由编译 +完成属性定义后,编译器会自动编写访问这些属性所需的方法,此过程叫做“自动合成”(autosynthesis)。需要强调的是,这个过程由编译 器在编译期执行,所以编辑器里看不到这些“合成方法”(synthesized method)的源代码。除了生成方法代码 getter、setter 之外,编译器还要自动向类中添加适当类型的实例变量,并且在属性名前面加下划线,以此作为实例变量的名字。在前例中,会生成两个实例变量,其名称分别为 -`_firstName`与`_lastName`。也可以在类的实现代码里通过 -@synthesize语法来指定实例变量的名字. + `_firstName` 与 `_lastName`。也可以在类的实现代码里通过 + `@synthesize` 语法来指定实例变量的名字. - @implementation Person - @synthesize firstName = _myFirstName; - @synthesize lastName = _myLastName; - @end + + ```Objective-C +@implementation Person +@synthesize firstName = _myFirstName; +@synthesize lastName = _myLastName; +@end + ``` 我为了搞清属性是怎么实现的,曾经反编译过相关的代码,他大致生成了五个东西 1. `OBJC_IVAR_$类名$属性名称` :该属性的“偏移量” (offset),这个偏移量是“硬编码” (hardcode),表示该变量距离存放对象的内存区域的起始地址有多远。 - 2. setter与getter方法对应的实现函数 - 2. `ivar_list` :成员变量列表 - 2. `method_list` :方法列表 - 2. `prop_list` :属性列表 + 2. setter 与 getter 方法对应的实现函数 + 3. `ivar_list` :成员变量列表 + 4. `method_list` :方法列表 + 5. `prop_list` :属性列表 + + +也就是说我们每次在增加一个属性,系统都会在 `ivar_list` 中添加一个成员变量的描述,在 `method_list` 中增加 setter 与 getter 方法的描述,在属性列表中增加一个属性的描述,然后计算该属性在对象中的偏移量,然后给出 setter 与 getter 方法对应的实现,在 setter 方法中从偏移量的位置开始赋值,在 getter 方法中从偏移量开始取值,为了能够读取正确字节数,系统对象偏移量的指针类型进行了类型强转。 + +注意:其中 prop_list 存在哪里? + + ```c +//objc-runtime-new.h中 +struct objc_class : objc_object { +//... +class_data_bits_t bits;//在bits.data()里面 +//... +} + ``` + +注意在iOS 10, Xcode 8推出的class关键字中, 与本题中关于 `@property` 的讨论, 有一些差异, 比如 + +class关键字表示永远不会自动合成,所以类变量、类存取方法,都要自己手动实现; -也就是说我们每次在增加一个属性,系统都会在`ivar_list`中添加一个成员变量的描述,在`method_list`中增加setter与getter方法的描述,在属性列表中增加一个属性的描述,然后计算该属性在对象中的偏移量,然后给出setter与getter方法对应的实现,在setter方法中从偏移量的位置开始赋值,在getter方法中从偏移量开始取值,为了能够读取正确字节数,系统对象偏移量的指针类型进行了类型强转. +下文中的第9题会涉及这个关键字的用法,可以参考下文。 -###7. @protocol 和 category 中如何使用 @property + 讨论见: [《第六题 prop_list 存在哪里? #108》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/108 ) - 1. 在protocol中使用property只会生成setter和getter方法声明,我们使用属性的目的,是希望遵守我协议的对象能实现该属性 - 2. category 使用 @property 也是只会生成setter和getter方法的声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个函数: + + + + +### 7. @protocol 和 category 中如何使用 @property + + 1. 在 protocol 中使用 property 只会生成 setter 和 getter 方法声明,我们使用属性的目的,是希望遵守我协议的对象能实现该属性 + 2. category 使用 @property 也是只会生成 setter 和 getter 方法的声明,如果我们真的需要给 category 增加属性的实现,需要借助于运行时的两个函数: 1. `objc_setAssociatedObject` 2. `objc_getAssociatedObject` -###8. runtime 如何实现 weak 属性 +对该回答有疑问,可参考讨论区 [《第7题,在代理里定义属性,好像没有使用场景吧 #83》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/83 ) -要实现weak属性,首先要搞清楚weak属性的特点: +### 8. runtime 如何实现 weak 属性 -> weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同assign类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 +要实现 weak 属性,首先要搞清楚 weak 属性的特点: -那么runtime如何实现weak变量的自动置nil? +> weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同 assign 类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 +那么 runtime 如何实现 weak 变量的自动置nil? -> runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc,假如 weak 指向的对象内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。 +举例说明: + + ```Objective-C + id obj0 = [NSObject new]; + __weak id obj1 = obj0; + __weak id objA = obj0; + + ``` + +> runtime 对注册的类,会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指针(obj1、objA)指向的对象(obj0)内存地址作为 key,当此对象的引用计数为0的时候会反向找到 weak 指针(obj1、objA) 并 dealloc。假如 weak 指针(obj1、objA)指向的对象(obj0)内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象(obj1、objA),从而设置为 nil。 (注:在下文的《使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?》里给出的“对象的内存销毁时间表”也提到`__weak`引用的解除时间。) + +先看下 runtime 里源码的实现: + + + ```Objective-C +/** + * The internal structure stored in the weak references table. + * It maintains and stores + * a hash set of weak references pointing to an object. + * If out_of_line==0, the set is instead a small inline array. + */ +#define WEAK_INLINE_COUNT 4 +struct weak_entry_t { + DisguisedPtr referent; + union { + struct { + weak_referrer_t *referrers; + uintptr_t out_of_line : 1; + uintptr_t num_refs : PTR_MINUS_1; + uintptr_t mask; + uintptr_t max_hash_displacement; + }; + struct { + // out_of_line=0 is LSB of one of these (don't care which) + weak_referrer_t inline_referrers[WEAK_INLINE_COUNT]; + }; + }; +}; + +/** + * The global weak references table. Stores object ids as keys, + * and weak_entry_t structs as their values. + */ +struct weak_table_t { + weak_entry_t *weak_entries; + size_t num_entries; + uintptr_t mask; + uintptr_t max_hash_displacement; +}; + ``` + +具体完整实现参照 [objc/objc-weak.h](https://opensource.apple.com/source/objc4/objc4-646/runtime/objc-weak.h) 。 + + + 我们可以设计一个函数(伪代码)来表示上述机制: `objc_storeWeak(&a, b)`函数: `objc_storeWeak`函数把第二个参数--赋值对象(b)的内存地址作为键值key,将第一个参数--weak修饰的属性变量(a)的内存地址(&a)作为value,注册到 weak 表中。如果第二个参数(b)为0(nil),那么把变量(a)的内存地址(&a)从weak表中删除, -你可以把`objc_storeWeak(&a, b)`理解为:`objc_storeWeak(value, key)`,并且当key变nil,将value置nil。 +你可以把`objc_storeWeak(&a, b)`理解为:`objc_storeWeak(value, key)`,并且当key变nil,将value置nil。(如对这句话有疑问,可以参考讨论 [《第8题 感觉objc_storeWeak(&a, b) 理解有点问题 #98》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/98) ) + 在b非nil时,a和b指向同一个内存地址,在b变nil时,a变nil。此时向a发送消息不会崩溃:在Objective-C中向nil发送消息是安全的。 -而如果a是由assign修饰的,则: -在b非nil时,a和b指向同一个内存地址,在b变nil时,a还是指向该内存地址,变野指针。此时向a发送消息极易崩溃。 +而如果a是由 assign 修饰的,则: +在 b 非 nil 时,a 和 b 指向同一个内存地址,在 b 变 nil 时,a 还是指向该内存地址,变野指针。此时向 a 发送消息会产生崩溃。 下面我们将基于`objc_storeWeak(&a, b)`函数,使用伪代码模拟“runtime如何实现weak属性”: @@ -695,8 +1019,7 @@ obj_storeWeak(&obj1, obj); > weak 修饰的指针默认值是 nil (在Objective-C中向nil发送消息是安全的) - - +(同时, weak 修饰的指针可能随时变为 nil) 然后`obj_destroyWeak`函数将0(nil)作为参数,调用`objc_storeWeak`函数。 @@ -705,7 +1028,6 @@ obj_storeWeak(&obj1, obj); 前面的源代码与下列源代码相同。 - ```Objective-C // 使用伪代码模拟:runtime如何实现weak属性 // http://weibo.com/luohanchenyilong/ @@ -719,7 +1041,7 @@ objc_storeWeak(&obj1, 0); ``` -`objc_storeWeak`函数把第二个参数--赋值对象(obj)的内存地址作为键值,将第一个参数--weak修饰的属性变量(obj1)的内存地址注册到 weak 表中。如果第二个参数(obj)为0(nil),那么把变量(obj1)的地址从weak表中删除,在后面的相关一题会详解。 +`objc_storeWeak` 函数把第二个参数--赋值对象(obj)的内存地址作为键值,将第一个参数--weak修饰的属性变量(obj1)的内存地址注册到 weak 表中。如果第二个参数(obj)为0(nil),那么把变量(obj1)的地址从 weak 表中删除,在后面的相关一题会详解。 使用伪代码是为了方便理解,下面我们“真枪实弹”地实现下: @@ -728,21 +1050,28 @@ objc_storeWeak(&obj1, 0); 我们从setter方法入手: - - (void)setObject:(NSObject *)object - { - objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); - [object cyl_runAtDealloc:^{ - _object = nil; - }]; - } - +(注意以下的 `cyl_runAtDealloc` 方法实现仅仅用于模拟原理,如果想用于项目中,还需要考虑更复杂的场景,想在实际项目使用的话,可以使用我写的一个小库,可以使用 CocoaPods 在项目中使用: [CYLDeallocBlockExecutor](https://github.com/ChenYilong/CYLDeallocBlockExecutor) ) + + ```Objective-C +- (void)setObject:(NSObject *)object +{ + objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); + [object cyl_runAtDealloc:^{ + _object = nil; + }]; +} + ``` + 也就是有两个步骤: 1. 在setter方法中做如下设置: + + ```Objective-C objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); + ``` - 2. 在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。做到这点,同样要借助runtime: + 2. 在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。做到这点,同样要借助 runtime: ```Objective-C //要销毁的目标对象 @@ -755,176 +1084,316 @@ objc_setAssociatedObject(objectToBeDeallocted, OBJC_ASSOCIATION_RETAIN); ``` -知道了思路,我们就开始实现`cyl_runAtDealloc`方法,实现过程分两部分: +知道了思路,我们就开始实现 `cyl_runAtDealloc` 方法,实现过程分两部分: -第一部分:创建一个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助block执行“事件”。 +第一部分:创建一个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助 block 执行“事件”。 - // .h文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 这个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助block执行“事件”。 +// .h文件 - typedef void (^voidBlock)(void); - - @interface CYLBlockExecutor : NSObject - - - (id)initWithBlock:(voidBlock)block; + ```Objective-C +// .h文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 这个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助block执行“事件”。 + +typedef void (^voidBlock)(void); + +@interface CYLBlockExecutor : NSObject + +- (id)initWithBlock:(voidBlock)block; + +@end + ``` + +// .m文件 + + ```Objective-C +// .m文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 这个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助block执行“事件”。 + +#import "CYLBlockExecutor.h" + +@interface CYLBlockExecutor() { + voidBlock _block; +} +@implementation CYLBlockExecutor + +- (id)initWithBlock:(voidBlock)aBlock +{ + self = [super init]; - @end + if (self) { + _block = [aBlock copy]; + } + return self; +} - // .m文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 这个类,可以理解为一个“事件”:当目标对象销毁时,同时要发生的“事件”。借助block执行“事件”。 +- (void)dealloc +{ + _block ? _block() : nil; +} - #import "CYLBlockExecutor.h" +@end + ``` - @interface CYLBlockExecutor() { - voidBlock _block; - } - @implementation CYLBlockExecutor - - - (id)initWithBlock:(voidBlock)aBlock - { - self = [super init]; - - if (self) { - _block = [aBlock copy]; - } +第二部分:核心代码:利用runtime实现`cyl_runAtDealloc`方法 + + ```Objective-C +// CYLNSObject+RunAtDealloc.h文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 利用runtime实现cyl_runAtDealloc方法 + +#import "CYLBlockExecutor.h" + +const void *runAtDeallocBlockKey = &runAtDeallocBlockKey; + +@interface NSObject (CYLRunAtDealloc) + +- (void)cyl_runAtDealloc:(voidBlock)block; + +@end + + +// CYLNSObject+RunAtDealloc.m文件 +// http://weibo.com/luohanchenyilong/ +// https://github.com/ChenYilong +// 利用runtime实现cyl_runAtDealloc方法 + +#import "CYLNSObject+RunAtDealloc.h" +#import "CYLBlockExecutor.h" + +@implementation NSObject (CYLRunAtDealloc) + +- (void)cyl_runAtDealloc:(voidBlock)block +{ + if (block) { + CYLBlockExecutor *executor = [[CYLBlockExecutor alloc] initWithBlock:block]; - return self; - } - - - (void)dealloc - { - _block ? _block() : nil; + objc_setAssociatedObject(self, + runAtDeallocBlockKey, + executor, + OBJC_ASSOCIATION_RETAIN); } - - @end +} + +@end + ``` + +使用方法: +导入 + + + ```Objective-C + #import "CYLNSObject+RunAtDealloc.h" + ``` + +然后就可以使用了: + + + ```Objective-C +NSObject *foo = [[NSObject alloc] init]; + +[foo cyl_runAtDealloc:^{ + NSLog(@"正在释放foo!"); +}]; + ``` + + +如果对 `cyl_runAtDealloc` 的实现原理有兴趣,可以看下我写的一个小库,可以使用 CocoaPods 在项目中使用: [CYLDeallocBlockExecutor](https://github.com/ChenYilong/CYLDeallocBlockExecutor) + +参考博文: [***Fun With the Objective-C Runtime: Run Code at Deallocation of Any Object***](http://stackoverflow.com/a/31560217/3395008) + +更多疑问, 可以参与issue讨论: + +- [《第8题 感觉objc_storeWeak(&a, b)哪里理解有点问题 #98》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/98 ) +- [《第8题 有一点说的很容易误导人 #6》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/6 ) + +### 9. @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? +属性可以拥有的特质分为四类: + + 1. 原子性--- `nonatomic` 特质 + + 在默认情况下,由编译器合成的方法会通过锁定机制确保其原子性(atomicity)。如果属性具备 nonatomic 特质,则不使用互斥锁(atomic 的底层实现,老版本是自旋锁,iOS10开始是互斥锁--spinlock底层实现改变了。)。请注意,尽管没有名为“atomic”的特质(如果某属性不具备 nonatomic 特质,那它就是“原子的” ( atomic) ),但是仍然可以在属性特质中写明这一点,编译器不会报错。若是自己定义存取方法,那么就应该遵从与属性特质相符的原子性。 + + 1. 读/写权限---`readwrite(读写)`、`readonly (只读)` + 2. 内存管理语义---`assign`、`strong`、 `weak`、`unsafe_unretained`、`copy`、`class` + 3. 方法名---`getter=` 、`setter=` + + `getter=`的样式: + + + ```Objective-C + @property (nonatomic, getter=isOn) BOOL on; + ``` +

( `setter=`这种不常用,也不推荐使用。故不在这里给出写法。) +

+ + + `setter=`一般用在特殊的情境下,比如: + + +在数据反序列化、转模型的过程中,服务器返回的字段如果以 `init` 开头,所以你需要定义一个 `init` 开头的属性,但默认生成的 `setter` 与 `getter` 方法也会以 `init` 开头,而编译器会把所有以 `init` 开头的方法当成初始化方法,而初始化方法只能返回 self 类型,因此编译器会报错。 -第二部分:核心代码:利用runtime实现`cyl_runAtDealloc`方法 +这时你就可以使用下面的方式来避免编译器报错: - // CYLNSObject+RunAtDealloc.h文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 利用runtime实现cyl_runAtDealloc方法 - #import "CYLBlockExecutor.h" + ```Objective-C +@property(nonatomic, strong, getter=p_initBy, setter=setP_initBy:)NSString *initBy; - const void *runAtDeallocBlockKey = &runAtDeallocBlockKey; - - @interface NSObject (CYLRunAtDealloc) - - - (void)cyl_runAtDealloc:(voidBlock)block; - - @end - + ``` - // CYLNSObject+RunAtDealloc.m文件 - // http://weibo.com/luohanchenyilong/ - // https://github.com/ChenYilong - // 利用runtime实现cyl_runAtDealloc方法 - #import "CYLNSObject+RunAtDealloc.h" - #import "CYLBlockExecutor.h" +另外也可以用关键字进行特殊说明,来避免编译器报错: - @implementation NSObject (CYLRunAtDealloc) - - - (void)cyl_runAtDealloc:(voidBlock)block - { - if (block) { - CYLBlockExecutor *executor = [[CYLBlockExecutor alloc] initWithBlock:block]; - - objc_setAssociatedObject(self, - runAtDeallocBlockKey, - executor, - OBJC_ASSOCIATION_RETAIN); - } - } - - @end + ```Objective-C +@property(nonatomic, readwrite, copy, null_resettable) NSString *initBy; +- (NSString *)initBy __attribute__((objc_method_family(none))); + ``` -使用方法: -导入 - #import "CYLNSObject+RunAtDealloc.h" -然后就可以使用了: +5. 其他:`nonnull`,`null_resettable`,`nullable` - NSObject *foo = [[NSObject alloc] init]; - - [foo cyl_runAtDealloc:^{ - NSLog(@"正在释放foo!"); - }]; +注意:很多人会认为如果属性具备 nonatomic 特质,则不使用 +“同步锁”。其实在属性设置方法中使用的是互斥锁(atomic 的底层实现,老版本是自旋锁,iOS10开始是互斥锁--spinlock底层实现改变了。),相关代码如下: + ```Objective-C +static inline void reallySetProperty(id self, SEL _cmd, id newValue, ptrdiff_t offset, bool atomic, bool copy, bool mutableCopy) +{ + if (offset == 0) { + object_setClass(self, newValue); + return; + } + id oldValue; + id *slot = (id*) ((char*)self + offset); + if (copy) { + newValue = [newValue copyWithZone:nil]; + } else if (mutableCopy) { + newValue = [newValue mutableCopyWithZone:nil]; + } else { + if (*slot == newValue) return; + newValue = objc_retain(newValue); + } -如果对`cyl_runAtDealloc`的实现原理有兴趣,可以看下这篇博文 [***Fun With the Objective-C Runtime: Run Code at Deallocation of Any Object***](http://stackoverflow.com/a/31560217/3395008) + if (!atomic) { + oldValue = *slot; + *slot = newValue; + } else { + spinlock_t& slotlock = PropertyLocks[slot]; + slotlock.lock(); + oldValue = *slot; + *slot = newValue; + slotlock.unlock(); + } + objc_release(oldValue); +} -###9. @property中有哪些属性关键字?/ @property 后面可以有哪些修饰符? -属性可以拥有的特质分为四类: - - 1. 原子性---`nonatomic`特质 +void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, signed char shouldCopy) +{ + bool copy = (shouldCopy && shouldCopy != MUTABLE_COPY); + bool mutableCopy = (shouldCopy == MUTABLE_COPY); + reallySetProperty(self, _cmd, newValue, offset, atomic, copy, mutableCopy); +} + ``` - 在默认情况下,由编译器合成的方法会通过锁定机制确保其原子性(atomicity)。如果属性具备nonatomic特质,则不使用同步锁。请注意,尽管没有名为“atomic”的特质(如果某属性不具备nonatomic特质,那它就是“原子的” ( atomic) ),但是仍然可以在属性特质中写明这一点,编译器不会报错。若是自己定义存取方法,那么就应该遵从与属性特质相符的原子性。 +补充说明: - 2. 读/写权限---`readwrite(读写)`、`readooly (只读)` - 3. 内存管理语义---`assign`、`strong`、 `weak`、`unsafe_unretained`、`copy` - 4. 方法名---`getter=` 、`setter=` - - `getter=`的样式: +其中内存管理语义中的class关键字, 是在 iOS 10, Xcode 8 后推出的, 可以与 Swift 里的 static 和 class 关键字进行桥接, - @property (nonatomic, getter=isOn) BOOL on; -( `setter=`这种不常用,也不推荐使用。故不在这里给出写法。) - 3. 不常用的:`nonnull`,`null_resettable`,`nullable` +class 关键字表示永远不会自动合成,所以类变量、类存取方法,都要自己手动实现;常常与 `@dynamic` 搭配使用。 + +主要用法可以参考如下: + +好处就是单例的 get 方法(sharedInstance方法)可以有智能提示: + + ```Objective-C +@interface Foo : NSObject +@property (nonatomic, class, readonly) Foo *sharedFoo; +@end + +@implementation Foo +/** + * 作用与下面的写法一致: + * + (instancetype)sharedInstance + */ ++ (Foo *)sharedInstance { + static Foo *_sharedFoo = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _sharedFoo = [[self alloc] init]; + }); + return _sharedFoo; +} + + ``` + +### 10. weak属性需要在dealloc中置nil么? -###10. weak属性需要在dealloc中置nil么? 不需要。 > 在ARC环境无论是强指针还是弱指针都无需在 dealloc 设置为 nil , ARC 会自动帮我们处理 -即便是编译器不帮我们做这些,weak也不需要在dealloc中置nil: +即便是编译器不帮我们做这些,weak也不需要在 dealloc 中置nil: 正如上文的:***runtime 如何实现 weak 属性*** 中提到的: -我们模拟下weak的setter方法,应该如下: +我们模拟下 weak 的 setter 方法,应该如下: - - (void)setObject:(NSObject *)object - { - objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); - [object cyl_runAtDealloc:^{ - _object = nil; - }]; - } -也即: + ```Objective-C +- (void)setObject:(NSObject *)object +{ + objc_setAssociatedObject(self, "object", object, OBJC_ASSOCIATION_ASSIGN); + [object cyl_runAtDealloc:^{ + _object = nil; + }]; +} + ``` + +如果对 `cyl_runAtDealloc` 的实现原理有兴趣,可以看下我写的一个小库,可以使用 CocoaPods 在项目中使用: [CYLDeallocBlockExecutor](https://github.com/ChenYilong/CYLDeallocBlockExecutor) -> 在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 +也即: +> 在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 +### 11. @synthesize和@dynamic分别有什么作用? -###11. @synthesize和@dynamic分别有什么作用? + 1. @property有两个对应的词,一个是 @synthesize,一个是 @dynamic。如果 @synthesize和 @dynamic都没写,那么默认的就是`@syntheszie var = _var;` + 2. @synthesize 的语义是如果你没有手动实现 setter 方法和 getter 方法,那么编译器会自动为你加上这两个方法。 + 3. @dynamic 告诉编译器:属性的 setter 与 getter 方法由用户自己实现,不自动生成。(当然对于 readonly 的属性只需提供 getter 即可)。假如一个属性被声明为 @dynamic var,然后你没有提供 @setter方法和 @getter 方法,编译的时候没问题,但是当程序运行到 `instance.var = someVar`,由于缺 setter 方法会导致程序崩溃;或者当运行到 `someVar = var` 时,由于缺 getter 方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。 - 1. @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是`@syntheszie var = _var;` - 2. @synthesize的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。 - 3. @dynamic告诉编译器:属性的setter与getter方法由用户自己实现,不自动生成。(当然对于readonly的属性只需提供getter即可)。假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,但是当程序运行到`instance.var = someVar`,由于缺setter方法会导致程序崩溃;或者当运行到 `someVar = var`时,由于缺getter方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。 +讨论区: [《上篇第11题,@dynamic那里说明有点问题 #26》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/26 ) -###12. ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些? +### 12. ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些? - 1. 对应基本数据类型默认关键字是 +1 对应基本数据类型默认关键字是 - atomic,readwrite,assign - 2. 对于普通的OC对象 + - `atomic` + - `readwrite` + - `assign` + +2 对于普通的 Objective-C 对象 - atomic,readwrite,strong + - `atomic` + - `readwrite` + - `strong` + + +Objective-C 对象默认是 strong,因为你 `class_copyPropertyList` 后再`property_getAttributes` 得到的是`T@"NSString",&,V_name`,其中`&`表示strong(c表示copy等); + +普通对象是 `assign`,这个获取不到文档说明,但是我们可以从 runtime 源码中找到相关的逻辑,你看看 `objc_AssociationPolicy` 枚举的定义以及内部处理的逻辑就知道了,还有一点就是属性加不加 assign 用 `property_getAttributes` 得到的都是一样的值,可以返推回去结论成立。 参考链接: @@ -932,72 +1401,165 @@ objc_setAssociatedObject(objectToBeDeallocted, 2. [ ***Variable property attributes or Modifiers in iOS*** ](http://rdcworld-iphone.blogspot.in/2012/12/variable-property-attributes-or.html) -###13. 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题? +### 13. 用@property声明的NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?如果改用strong关键字,可能造成什么问题? + + + 1. 因为父类指针可以指向子类对象,使用 copy 的目的是为了让本对象的属性不受外界影响,使用 copy 无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本. + 2. 如果我们使用是 strong ,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性. + + copy 此特质所表达的所属关系与 strong 类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 +当属性类型为 NSString 时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个 NSMutableString 类的实例。这个类是 NSString 的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。 + +举例说明: - 1. 因为父类指针可以指向子类对象,使用copy的目的是为了让本对象的属性不受外界影响,使用copy无论给我传入是一个可变对象还是不可对象,我本身持有的就是一个不可变的副本. - 2. 如果我们使用是strong,那么这个属性就有可能指向一个可变对象,如果这个可变对象在外部被修改了,那么会影响该属性. +定义一个以 strong 修饰的 array: + + ```Objective-C +@property (nonatomic, readwrite, strong) NSArray *array; + ``` + +然后进行下面的操作: + + ```Objective-C + NSArray *array = @[ @1, @2, @3, @4 ]; + NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array]; + + self.array = mutableArray; + [mutableArray removeAllObjects];; + NSLog(@"%@",self.array); + + [mutableArray addObjectsFromArray:array]; + self.array = [mutableArray copy]; + [mutableArray removeAllObjects];; + NSLog(@"%@",self.array); + ``` + +打印结果如下所示: + + ```Objective-C +2015-09-27 19:10:32.523 CYLArrayCopyDmo[10681:713670] ( +) +2015-09-27 19:10:32.524 CYLArrayCopyDmo[10681:713670] ( + 1, + 2, + 3, + 4 +) + ``` + +(详见仓库内附录的 Demo。) -copy此特质所表达的所属关系与strong类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。 -当属性类型为NSString时,经常用此特质来保护其封装性,因为传递给设置方法的新值有可能指向一个NSMutableString类的实例。这个类是NSString的子类,表示一种可修改其值的字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串的值就可能会在对象不知情的情况下遭人更改。所以,这时就要拷贝一份“不可变” (immutable)的字符串,确保对象中的字符串值不会无意间变动。只要实现属性所用的对象是“可变的” (mutable),就应该在设置新属性值时拷贝一份。 为了理解这种做法,首先要知道,两种情况: - 1. 对非集合类对象的copy与mutableCopy操作; - 2. 对集合类对象的copy与mutableCopy操作。 + 1. 对非集合类对象的 copy 与 mutableCopy 操作; + 2. 对集合类对象的 copy 与 mutableCopy 操作。 + +讨论区: + +- [《13题好像只有NSString符合你说的前两点特性 #29》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/29 ) +- [《第13题 疑问 对非集合类对象的copy操作 #19》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/19 ) -####1. 对非集合类对象的copy操作: +#### 1. 对非集合类对象的copy操作: -在非集合类对象中:对immutable对象进行copy操作,是指针复制,mutableCopy操作时内容复制;对mutable对象进行copy和mutableCopy都是内容复制。用代码简单表示如下: +先说结论: - - [immutableObject copy] // 浅复制 - - [immutableObject mutableCopy] //深复制 - - [mutableObject copy] //深复制 - - [mutableObject mutableCopy] //深复制 +在非集合类对象中:对 immutable 对象进行 copy 操作,是指针复制,mutableCopy 操作时内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。用代码简单表示如下: + + ```Objective-C + [immutableObject copy] // 浅复制 + [immutableObject mutableCopy] //深复制 + [mutableObject copy] //深复制 + [mutableObject mutableCopy] //深复制 + ``` +根据上面的结论,我们也可以总结出规律: + +对于非集合类对象而言,从不可变转换到另一个不可变,因为没必要创建一个新对象出来, 所以是浅拷贝。 +而不可变与可变对象的互相转换过程中、从一个可变到另一个可变, 为了不影响可变对象的可变特性,必须要创建一个新对象出来,所以是深拷贝。 + +下面详细讲下: + 比如以下代码: - NSMutableString *string = [NSMutableString stringWithString:@"origin"];//copy - NSString *stringCopy = [string copy]; + + ```Objective-C +NSMutableString *string = [NSMutableString stringWithString:@"origin"];//copy +NSString *stringCopy = [string copy]; + ``` + 查看内存,会发现 string、stringCopy 内存地址都不一样,说明此时都是做内容拷贝、深拷贝。即使你进行如下操作: - [string appendString:@"origion!"] -stringCopy的值也不会因此改变,但是如果不使用copy,stringCopy的值就会被改变。 + + ```Objective-C +[string appendString:@"origion!"] + ``` + +stringCopy 的值也不会因此改变,但是如果不使用 copy,stringCopy 的值就会被改变。 集合类对象以此类推。 所以, -> 用@property声明 NSString、NSArray、NSDictionary 经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。 +> 用 @property 声明 NSString、NSArray、NSDictionary 经常使用 copy 关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary,他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。 + +#### 2、集合类对象的copy与mutableCopy + +先说结论: -####2、集合类对象的copy与mutableCopy +从集合内的元素的角度而言, 对任何集合对象(可变和不可变集合)进行的 copy 与 mutableCopy 操作都可以称之为浅拷贝。 -集合类对象是指NSArray、NSDictionary、NSSet ... 之类的对象。下面先看集合类immutable对象使用copy和mutableCopy的一个例子: + ```Objective-C +[immutableCollectionObject copy] // 浅拷贝 +[immutableCollectionObject mutableCopy] //浅拷贝 +[mutableCollectionObject copy] //浅拷贝 +[mutableCollectionObject mutableCopy] //浅拷贝 + ``` + +因为无论是进行copy还是进行mutableCopy, 集合内部的元素仍然是指针拷贝。 + +考虑到集合对象我们更关注内部元素,而非集合本身,我更倾向于认为这个就是浅拷贝。 + +当然如果从集合本身的角度,这里就会有一些争议,我们可以详细讲下: + +集合类对象是指 NSArray、NSDictionary、NSSet ... 之类的对象。下面先看集合类immutable对象使用 copy 和 mutableCopy 的一个例子: + + ```Objective-C +NSArray *array = @[@[@"a", @"b"], @[@"c", @"d"]]; +NSArray *copyArray = [array copy]; +NSMutableArray *mCopyArray = [array mutableCopy]; + ``` + +查看内容,可以看到 copyArray 和 array 的地址是一样的,而 mCopyArray 和 array 的地址是不同的。说明 copy 操作进行了指针拷贝,mutableCopy 进行了内容拷贝。但需要强调的是:此处的内容拷贝,仅仅是拷贝 array 这个对象,array 集合内部的元素仍然是指针拷贝。这和上面的非集合 immutable 对象的拷贝还是挺相似的,那么mutable对象的拷贝会不会类似呢?我们继续往下,看 mutable 对象拷贝的例子: + + + ```Objective-C +NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString:@"a"],@"b",@"c",nil]; +NSArray *copyArray = [array copy]; +NSMutableArray *mCopyArray = [array mutableCopy]; + ``` - NSArray *array = @[@[@"a", @"b"], @[@"c", @"d"]; - NSArray *copyArray = [array copy]; - NSMutableArray *mCopyArray = [array mutableCopy]; -查看内容,可以看到copyArray和array的地址是一样的,而mCopyArray和array的地址是不同的。说明copy操作进行了指针拷贝,mutableCopy进行了内容拷贝。但需要强调的是:此处的内容拷贝,仅仅是拷贝array这个对象,array集合内部的元素仍然是指针拷贝。这和上面的非集合immutable对象的拷贝还是挺相似的,那么mutable对象的拷贝会不会类似呢?我们继续往下,看mutable对象拷贝的例子: +查看内存,如我们所料,copyArray、mCopyArray和 array 的内存地址都不一样,说明 copyArray、mCopyArray 都对 array 进行了内容拷贝。同样,我们可以得出结论: - NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString:@"a"],@"b",@"c",nil]; - NSArray *copyArray = [array copy]; - NSMutableArray *mCopyArray = [array mutableCopy]; +在集合类对象中,对 immutable 对象进行 copy,是指针复制, mutableCopy 是内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。用代码简单表示如下: -查看内存,如我们所料,copyArray、mCopyArray和array的内存地址都不一样,说明copyArray、mCopyArray都对array进行了内容拷贝。同样,我们可以得出结论: -在集合类对象中,对immutable对象进行copy,是指针复制,mutableCopy是内容复制;对mutable对象进行copy和mutableCopy都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。用代码简单表示如下: + ```Objective-C +[immutableCollectionObject copy] // 浅拷贝 +[immutableCollectionObject mutableCopy] //浅拷贝,也可以称之为“单层深拷贝”。 +[mutableCollectionObject copy] //浅拷贝,也可以称之为“单层深拷贝”。 +[mutableCollectionObject mutableCopy] //浅拷贝,也可以称之为“单层深拷贝”。 + ``` - [immutableObject copy] // 浅复制 - [immutableObject mutableCopy] //单层深复制 - [mutableObject copy] //单层深复制 - [mutableObject mutableCopy] //单层深复制 +这个代码结论和非集合类的结论有区别,注意分辨。 -这个代码结论和非集合类的非常相似。 +注意:“深拷贝”前面为什么要加一个“单层”? 原因如下:对于集合对象的 copy 操作是否属于深拷贝这里有争议,因为 copy 操作后,集合对象内部的元素实际并没有变更指针地址,所以严格意义上来说,集合对象的 copy 操作也可以称之为浅拷贝。上文中,所谓的深拷贝,没有考虑集合内部元素层面,仅仅考虑了该集合对象的指针。所以仅仅是“单层深复制”,也可以称之为浅拷贝。但考虑到集合对象我们更关注元素,而非集合本身,我们更倾向于认为这个就是浅拷贝。 参考链接:[iOS 集合的深复制与浅复制](https://www.zybuluo.com/MicroCai/note/50592) -###14. @synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为`_foo`的实例变量,那么还会自动合成新变量么? +### 14. @synthesize合成实例变量的规则是什么?假如property名为foo,存在一个名为`_foo`的实例变量,那么还会自动合成新变量么? 在回答之前先说明下一个概念: > 实例变量 = 成员变量 = ivar @@ -1007,7 +1569,7 @@ stringCopy的值也不会因此改变,但是如果不使用copy,stringCopy 正如 [Apple官方文档 ***You Can Customize Synthesized Instance Variable Names***](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW6) 所说: -![enter image description here](http://i.imgur.com/D6d0zGJ.png) +![https://github.com/ChenYilong](http://i.imgur.com/D6d0zGJ.png) 如果使用了属性的话,那么编译器就会自动编写访问属性所需的方法,此过程叫做“自动合成”( auto synthesis)。需要强调的是,这个过程由编译器在编译期执行,所以编辑器里看不到这些“合成方法” (synthesized method)的源代码。除了生成方法代码之外,编译器还要自动向类中添加适当类型的实例变量,并且在属性名前面加下划线,以此作为实例变量的名字。 @@ -1021,7 +1583,7 @@ stringCopy的值也不会因此改变,但是如果不使用copy,stringCopy 在上例中,会生成两个实例变量,其名称分别为 -`_firstName`与`_lastName`。也可以在类的实现代码里通过`@synthesize`语法来指定实例变量的名字: + `_firstName` 与 `_lastName`。也可以在类的实现代码里通过 `@synthesize` 语法来指定实例变量的名字: ```Objective-C @implementation CYLPerson @@ -1032,48 +1594,61 @@ stringCopy的值也不会因此改变,但是如果不使用copy,stringCopy -上述语法会将生成的实例变量命名为`_myFirstName`与`_myLastName`,而不再使用默认的名字。一般情况下无须修改默认的实例变量名,但是如果你不喜欢以下划线来命名实例变量,那么可以用这个办法将其改为自己想要的名字。笔者还是推荐使用默认的命名方案,因为如果所有人都坚持这套方案,那么写出来的代码大家都能看得懂。 +上述语法会将生成的实例变量命名为 `_myFirstName` 与 `_myLastName` ,而不再使用默认的名字。一般情况下无须修改默认的实例变量名,但是如果你不喜欢以“下划线”来命名实例变量,那么可以用这个办法将其改为自己想要的名字。笔者还是推荐使用默认的命名方案,因为如果所有人都坚持这套方案,那么写出来的代码大家都能看得懂。 -总结下@synthesize合成实例变量的规则,有以下几点: +总结下 @synthesize 合成实例变量的规则,有以下几点: - 1. 如果指定了成员变量的名称,会生成一个指定的名称的成员变量, + 1 如果指定了成员变量的名称,会生成一个指定的名称的成员变量, - 2. 如果这个成员已经存在了就不再生成了. - 2. 如果是 `@synthesize foo;` 还会生成一个名称为foo的成员变量,也就是说: + 2 如果这个成员已经存在了就不再生成了. + 3 如果是 `@synthesize foo;` 还会生成一个名称为foo的成员变量,也就是说: > 如果没有指定成员变量的名称会自动生成一个属性同名的成员变量, - 2. 如果是 `@synthesize foo = _foo;` 就不会生成成员变量了. + 4 如果是 `@synthesize foo = _foo;` 就不会生成成员变量了. -假如property名为foo,存在一个名为_foo的实例变量,那么还会自动合成新变量么? -不会。如下图: +假如 property 名为 foo,存在一个名为 `_foo` 的实例变量,那么还会自动合成新变量么? -![enter image description here](http://i.imgur.com/t28ge4W.png) +

不会。如下图:

+与编译环境有关, 低版本不会, 高版本会 -###15. 在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景? +低版本: + +![https://github.com/ChenYilong](http://i.imgur.com/t28ge4W.png) + + +而在 Xcode 12.5,如果存在一个名为 `_object` 实例变量,有个property名为`_object`,会合成新变量 `__object` + +同时如果没有显示定义 `_objcect` 实例变量,定义属性 `_object` 也会生成 `__object` 实例变量 + +![](https://i.loli.net/2021/08/31/okeqdpgbRt1u74V.png) + + + +### 15. 在有了自动合成属性实例变量之后,@synthesize还有哪些使用场景? 回答这个问题前,我们要搞清楚一个问题,什么情况下不会autosynthesis(自动合成)? - 1. 同时重写了setter和getter时 - 2. 重写了只读属性的getter时 - 2. 使用了@dynamic时 - 2. 在 @protocol 中定义的所有属性 - 2. 在 category 中定义的所有属性 - 2. 重载的属性 + 1. 同时重写了 setter 和 getter 时 + 2. 重写了只读属性的 getter 时 + 3. 使用了 @dynamic 时 + 4. 在 @protocol 中定义的所有属性 + 5. 在 category 中定义的所有属性 + 6. 重写(overridden)的属性 - 当你在子类中重载了父类中的属性,你必须 使用`@synthesize`来手动合成ivar。 + 当你在子类中重写(overridden)了父类中的属性,你必须 使用 `@synthesize` 来手动合成ivar。 -除了后三条,对其他几个我们可以总结出一个规律:当你想手动管理@property的所有内容时,你就会尝试通过实现@property的所有“存取方法”(the accessor methods)或者使用`@dynamic`来达到这个目的,这时编译器就会认为你打算手动管理@property,于是编译器就禁用了autosynthesis(自动合成)。 +除了后三条,对其他几个我们可以总结出一个规律:当你想手动管理 @property 的所有内容时,你就会尝试通过实现 @property 的所有“存取方法”(the accessor methods)或者使用 `@dynamic` 来达到这个目的,这时编译器就会认为你打算手动管理 @property,于是编译器就禁用了 autosynthesis(自动合成)。 -因为有了autosynthesis(自动合成),大部分开发者已经习惯不去手动定义ivar,而是依赖于autosynthesis(自动合成),但是一旦你需要使用ivar,而autosynthesis(自动合成)又失效了,如果不去手动定义ivar,那么你就得借助`@synthesize`来手动合成ivar。 +因为有了 autosynthesis(自动合成),大部分开发者已经习惯不去手动定义ivar,而是依赖于 autosynthesis(自动合成),但是一旦你需要使用ivar,而 autosynthesis(自动合成)又失效了,如果不去手动定义ivar,那么你就得借助 `@synthesize` 来手动合成 ivar。 -其实,`@synthesize`语法还有一个应用场景,但是不太建议大家使用: +其实,`@synthesize` 语法还有一个应用场景,但是不太建议大家使用: -可以在类的实现代码里通过`@synthesize`语法来指定实例变量的名字: +可以在类的实现代码里通过 `@synthesize` 语法来指定实例变量的名字: ```Objective-C @implementation CYLPerson @@ -1084,73 +1659,80 @@ stringCopy的值也不会因此改变,但是如果不使用copy,stringCopy -上述语法会将生成的实例变量命名为`_myFirstName`与`_myLastName`,而不再使用默认的名字。一般情况下无须修改默认的实例变量名,但是如果你不喜欢以下划线来命名实例变量,那么可以用这个办法将其改为自己想要的名字。笔者还是推荐使用默认的命名方案,因为如果所有人都坚持这套方案,那么写出来的代码大家都能看得懂。 +上述语法会将生成的实例变量命名为 `_myFirstName` 与 `_myLastName`,而不再使用默认的名字。一般情况下无须修改默认的实例变量名,但是如果你不喜欢以下划线来命名实例变量,那么可以用这个办法将其改为自己想要的名字。笔者还是推荐使用默认的命名方案,因为如果所有人都坚持这套方案,那么写出来的代码大家都能看得懂。 举例说明:应用场景: - // - // .m文件 - // http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁) - // https://github.com/ChenYilong - // 打开第14行和第17行中任意一行,就可编译成功 + ```Objective-C - @import Foundation; +// +// .m文件 +// http://weibo.com/luohanchenyilong/ (微博@iOS程序犭袁) +// https://github.com/ChenYilong +// 打开第14行和第17行中任意一行,就可编译成功 - @interface CYLObject : NSObject - @property (nonatomic, copy) NSString *title; - @end +@import Foundation; - @implementation CYLObject { - // NSString *_title; - } +@interface CYLObject : NSObject +@property (nonatomic, copy) NSString *title; +@end - //@synthesize title = _title; +@implementation CYLObject { + // NSString *_title; +} - - (instancetype)init - { - self = [super init]; - if (self) { - _title = @"微博@iOS程序犭袁"; - } - return self; - } +//@synthesize title = _title; - - (NSString *)title { - return _title; - } +- (instancetype)init +{ + self = [super init]; + if (self) { + _title = @"微博@iOS程序犭袁"; + } + return self; +} - - (void)setTitle:(NSString *)title { - _title = [title copy]; - } +- (NSString *)title { + return _title; +} + +- (void)setTitle:(NSString *)title { + _title = [title copy]; +} + +@end + ``` - @end 结果编译器报错: -![enter image description here](http://i.imgur.com/fAEGHIo.png) +![https://github.com/ChenYilong](http://i.imgur.com/fAEGHIo.png) -当你同时重写了setter和getter时,系统就不会生成ivar(实例变量/成员变量)。这时候有两种选择: +当你同时重写了 setter 和 getter 时,系统就不会生成 ivar(实例变量/成员变量)。这时候有两种选择: - 1. 要么如第14行:手动创建ivar - 2. 要么如第17行:使用`@synthesize foo = _foo;` ,关联@property与ivar。 + 1. 要么如第14行:手动创建 ivar + 2. 要么如第17行:使用`@synthesize foo = _foo;` ,关联 @property 与 ivar。 更多信息,请戳- 》[ ***When should I use @synthesize explicitly?*** ](http://stackoverflow.com/a/19821816/3395008) -###16. objc中向一个nil对象发送消息将会发生什么? -在Objective-C中向nil发送消息是完全有效的——只是在运行时不会有任何作用: +### 16. objc中向一个nil对象发送消息将会发生什么? +在 Objective-C 中向 nil 发送消息是完全有效的——只是在运行时不会有任何作用: - 1. 如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil)。例如: +1、 如果一个方法返回值是一个对象,那么发送给nil的消息将返回0(nil)。例如: - ```Objective-C +```Objective-C Person * motherInlaw = [[aPerson spouse] mother]; ``` - 如果spouse对象为nil,那么发送给nil的消息mother也将返回nil。 - 2. 如果方法返回值为指针类型,其指针大小为小于或者等于sizeof(void*),float,double,long double 或者long long的整型标量,发送给nil的消息将返回0。 - 2. 如果方法返回值为结构体,发送给nil的消息将返回0。结构体中各个字段的值将都是0。 - 2. 如果方法的返回值不是上述提到的几种情况,那么发送给nil的消息的返回值将是未定义的。 + 如果 spouse 方法的返回值为 nil,那么发送给 nil 的消息 mother 也将返回 nil。 + +2、 如果方法返回值为指针类型,其指针大小为小于或者等于sizeof(void*),float,double,long double 或者 long long 的整型标量,发送给 nil 的消息将返回0。 + +3、 如果方法返回值为结构体,发送给 nil 的消息将返回0。结构体中各个字段的值将都是0。 + +4、 如果方法的返回值不是上述提到的几种情况,那么发送给 nil 的消息的返回值将是未定义的。 具体原因如下: @@ -1163,7 +1745,6 @@ Person * motherInlaw = [[aPerson spouse] mother]; ```Objective-C - // runtime.h(类在runtime中的定义) // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong @@ -1187,8 +1768,7 @@ struct objc_class { objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,然后在发送消息的时候,objc_msgSend方法不会返回值,所谓的返回内容都是具体调用时执行的。 那么,回到本题,如果向一个nil对象发送消息,首先在寻找对象的isa指针时就是0地址返回了,所以不会出现任何错误。 - -###17. objc中向一个对象发送消息[obj foo]和`objc_msgSend()`函数之间有什么关系? +### 17. objc中向一个对象发送消息[obj foo]和`objc_msgSend()`函数之间有什么关系? 具体原因同上题:该方法编译之后就是`objc_msgSend()`函数调用. 我们用 clang 分析下,clang 提供一个命令,可以将Objective-C的源码改写成C++语言,借此可以研究下[obj foo]和`objc_msgSend()`函数之间有什么关系。 @@ -1222,7 +1802,7 @@ clang -rewrite-objc main.m ``` 就可以生成一个`main.cpp`的文件,在最低端(10万4千行左右) -![enter image description here](http://i.imgur.com/eAH5YWn.png) +![https://github.com/ChenYilong](http://i.imgur.com/eAH5YWn.png) 我们可以看到大概是这样的: @@ -1233,9 +1813,9 @@ clang -rewrite-objc main.m 也就是说: -> [obj foo];在objc动态编译时,会被转意为:`objc_msgSend(obj, @selector(foo));`。 +> [obj foo];在objc编译时,会被转意为:`objc_msgSend(obj, @selector(foo));`。 -###18. 什么时候会报unrecognized selector的异常? +### 18. 什么时候会报unrecognized selector的异常? 简单来说: @@ -1256,24 +1836,26 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找 1. Method resolution - objc运行时会调用`+resolveInstanceMethod:`或者 `+resolveClassMethod:`,让你有机会提供一个函数实现。如果你添加了函数并返回 YES,那运行时系统就会重新启动一次消息发送的过程,如果 resolve 方法返回 NO ,运行时就会移到下一步,消息转发(Message Forwarding)。 + objc运行时会调用`+resolveInstanceMethod:`或者 `+resolveClassMethod:`,让你有机会提供一个函数实现。如果你添加了函数,那运行时系统就会重新启动一次消息发送的过程,否则 ,运行时就会移到下一步,消息转发(Message Forwarding)。 2. Fast forwarding - 如果目标对象实现了`-forwardingTargetForSelector:`,Runtime 这时就会调用这个方法,给你把这个消息转发给其他对象的机会。 + 如果目标对象实现了 `-forwardingTargetForSelector:`,Runtime 这时就会调用这个方法,给你把这个消息转发给其他对象的机会。 只要这个方法返回的不是nil和self,整个消息发送的过程就会被重启,当然发送的对象会变成你返回的那个对象。否则,就会继续Normal Fowarding。 这里叫Fast,只是为了区别下一步的转发机制。因为这一步不会创建任何新的对象,但下一步转发会创建一个NSInvocation对象,所以相对更快点。 3. Normal forwarding - 这一步是Runtime最后一次给你挽救的机会。首先它会发送`-methodSignatureForSelector:`消息获得函数的参数和返回值类型。如果`-methodSignatureForSelector:`返回nil,Runtime则会发出`-doesNotRecognizeSelector:`消息,程序这时也就挂掉了。如果返回了一个函数签名,Runtime就会创建一个NSInvocation对象并发送`-forwardInvocation:`消息给目标对象。 + 这一步是Runtime最后一次给你挽救的机会。首先它会发送 `-methodSignatureForSelector:` 消息获得函数的参数和返回值类型。如果 `-methodSignatureForSelector:` 返回nil,Runtime则会发出 `-doesNotRecognizeSelector:` 消息,程序这时也就挂掉了。如果返回了一个函数签名,Runtime就会创建一个NSInvocation对象并发送 `-forwardInvocation:` 消息给目标对象。 +为了能更清晰地理解这些方法的作用,git仓库里也给出了一个Demo,名称叫“ `_objc_msgForward_demo` ”,可运行起来看看。 -###19. 一个objc对象如何进行内存布局?(考虑有父类的情况) +### 19. 一个objc对象如何进行内存布局?(考虑有父类的情况) - 所有父类的成员变量和自己的成员变量都会存放在该对象所对应的存储空间中. - 每一个对象内部都有一个isa指针,指向他的类对象,类对象中存放着本对象的 + 1. 对象方法列表(对象能够接收的消息列表,保存在它所对应的类对象中) 2. 成员变量的列表, 2. 属性列表, @@ -1282,7 +1864,7 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找 每个 Objective-C 对象都有相同的结构,如下图所示: - ![enter image description here](http://i.imgur.com/7mJlUj1.png) + ![https://github.com/ChenYilong](http://i.imgur.com/7mJlUj1.png) 翻译过来就是 @@ -1296,23 +1878,30 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找 类的实例变量 | - - 根对象就是NSobject,它的superclass指针指向nil + - 根对象就是NSObject,它的superclass指针指向nil - 类对象既然称为对象,那它也是一个实例。类对象中也有一个isa指针指向它的元类(meta class),即类对象是元类的实例。元类内部存放的是类方法列表,根元类的isa指针指向自己,superclass指针指向NSObject类。 + - 类对象 是放在数据段(数据区)上的, 和全局变量放在一个地方. 这也就是为什么: 同一个类对象的不同实例对象,的isa指针是一样的. + - 实例对象存放在堆中 如图: -![enter image description here](http://i.imgur.com/w6tzFxz.png) +![https://github.com/ChenYilong](http://i.imgur.com/w6tzFxz.png) -###20. 一个objc对象的isa的指针指向什么?有什么作用? +### 20. 一个objc对象的isa的指针指向什么?有什么作用? +`isa` 顾名思义 `is a` 表示对象所属的类。 -指向他的类对象,从而可以找到对象上的方法 +`isa` 指向他的类对象,从而可以找到对象上的方法。 -###21. 下面的代码输出什么? +同一个类的不同对象,他们的 isa 指针是一样的。 +### 21. 下面的代码输出什么? + + + ```Objective-C @implementation Son : Father - (id)init { @@ -1324,6 +1913,8 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找 return self; } @end + ``` + **答案:** @@ -1332,63 +1923,206 @@ objc在向一个对象发送消息时,runtime库会根据对象的isa指针找 NSStringFromClass([self class]) = Son NSStringFromClass([super class]) = Son -**解惑:** -(以下解惑部分摘自[微博@Chun_iOS](http://weibo.com/junbbcom)的博文[刨根问底Objective-C Runtime(1)- Self & Super](http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime(1)%5Bnil%5D-self-and-super/)) -这个题目主要是考察关于objc中对 self 和 super 的理解。 +这个题目主要是考察关于 Objective-C 中对 self 和 super 的理解。 + +super关键字,有以下几点需要注意: +- receiver还是当前类对象,而不是父类对象; +- super这里的含义就是优先去父类的方法列表中去查实现,很多问题都是父类中其实也没有实现,还是去根类里 去找实现,这种情况下时,其实跟直接调用self的效果是一致的。 + +下面做详细介绍: + +我们都知道:self 是类的隐藏参数,指向当前调用方法的这个类的实例。那 super 呢? -self 是类的隐藏参数,指向当前调用方法的这个类的实例。而 super 是一个 Magic Keyword, 它本质是一个编译器标示符,和 self 是指向的同一个消息接受者。 +很多人会想当然的认为“ super 和 self 类似,应该是指向父类的指针吧!”。这是很普遍的一个误区。其实 super 是一个 Magic Keyword, 它本质是一个编译器标示符,和 self 是指向的同一个消息接受者!他们两个的不同点在于:super 会告诉编译器,调用 class 这个方法时,要去父类的方法,而不是本类里的。 -上面的例子不管调用`[self class]`还是`[super class]`,接受消息的对象都是当前 `Son *xxx` 这个对象。而不同的是,super是告诉编译器,调用 class 这个方法时,要去父类的方法,而不是本类里的。 + +上面的例子不管调用`[self class]`还是`[super class]`,接受消息的对象都是当前 `Son *xxx` 这个对象。 当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找;而当使用 super 时,则从父类的方法列表中开始找。然后调用父类的这个方法。 -真的是这样吗?继续看: -使用clang重写命令: +这也就是为什么说“不推荐在 init 方法中使用点语法”,如果想访问实例变量 iVar 应该使用下划线( `_iVar` ),而非点语法( `self.iVar` )。 + +点语法( `self.iVar` )的坏处就是子类有可能覆写 setter 。假设 Person 有一个子类叫 ChenPerson,这个子类专门表示那些姓“陈”的人。该子类可能会覆写 lastName 属性所对应的设置方法: + + ```Objective-C +// +// ChenPerson.m +// +// +// Created by https://github.com/ChenYilong on 15/8/30. +// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import "ChenPerson.h" + +@implementation ChenPerson + +@synthesize lastName = _lastName; + +- (instancetype)init +{ + self = [super init]; + if (self) { + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, NSStringFromClass([self class])); + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, NSStringFromClass([super class])); + } + return self; +} + +- (void)setLastName:(NSString*)lastName +{ + //设置方法一:如果setter采用是这种方式,就可能引起崩溃 +// if (![lastName isEqualToString:@"陈"]) +// { +// [NSException raise:NSInvalidArgumentException format:@"姓不是陈"]; +// } +// _lastName = lastName; + + //设置方法二:如果setter采用是这种方式,就可能引起崩溃 + _lastName = @"陈"; + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, @"会调用这个方法,想一下为什么?"); + +} + +@end + ``` + +在基类 Person 的默认初始化方法中,可能会将姓氏设为空字符串。此时若使用点语法( `self.lastName` )也即 setter 设置方法,那么调用将会是子类的设置方法,如果在刚刚的 setter 代码中采用设置方法一,那么就会抛出异常, + + +为了方便采用打印的方式展示,究竟发生了什么,我们使用设置方法二。 + + +如果基类的代码是这样的: + + + ```Objective-C +// +// Person.m +// nil对象调用点语法 +// +// Created by https://github.com/ChenYilong on 15/8/29. +// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. +// + +#import "Person.h" + +@implementation Person + +- (instancetype)init +{ + self = [super init]; + if (self) { + self.lastName = @""; + //NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, NSStringFromClass([self class])); + //NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, self.lastName); + } + return self; +} + +- (void)setLastName:(NSString*)lastName +{ + NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, @"根本不会调用这个方法"); + _lastName = @"炎黄"; +} + +@end + ``` + +那么打印结果将会是这样的: + + ```Objective-C + 🔴类名与方法名:-[ChenPerson setLastName:](在第36行),描述:会调用这个方法,想一下为什么? + 🔴类名与方法名:-[ChenPerson init](在第19行),描述:ChenPerson + 🔴类名与方法名:-[ChenPerson init](在第20行),描述:ChenPerson + ``` + +我在仓库里也给出了一个相应的 Demo(名字叫:Demo_21题_下面的代码输出什么)。有兴趣可以跑起来看一下,主要看下他是怎么打印的,思考下为什么这么打印。 + +如果对这个例子有疑问:可以参与讨论区讨论 [《21题“不推荐在 init 方法中使用点语法” #75》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/75 ) + +接下来让我们利用 runtime 的相关知识来验证一下 super 关键字的本质,使用clang重写命令: + + ```Objective-C $ clang -rewrite-objc test.m -发现上述代码被转化为: + ``` + +将这道题目中给出的代码被转化为: + + ```Objective-C NSLog((NSString *)&__NSConstantStringImpl__var_folders_gm_0jk35cwn1d3326x0061qym280000gn_T_main_a5cecc_mi_0, NSStringFromClass(((Class (*)(id, SEL))(void *)objc_msgSend)((id)self, sel_registerName("class")))); NSLog((NSString *)&__NSConstantStringImpl__var_folders_gm_0jk35cwn1d3326x0061qym280000gn_T_main_a5cecc_mi_1, NSStringFromClass(((Class (*)(__rw_objc_super *, SEL))(void *)objc_msgSendSuper)((__rw_objc_super){ (id)self, (id)class_getSuperclass(objc_getClass("Son")) }, sel_registerName("class")))); + ``` + 从上面的代码中,我们可以发现在调用 [self class] 时,会转化成 `objc_msgSend`函数。看下函数定义: + + ```Objective-C id objc_msgSend(id self, SEL op, ...) + ``` 我们把 self 做为第一个参数传递进去。 而在调用 [super class]时,会转化成 `objc_msgSendSuper`函数。看下函数定义: + + ```Objective-C id objc_msgSendSuper(struct objc_super *super, SEL op, ...) + ``` + 第一个参数是 `objc_super` 这样一个结构体,其定义如下: - struct objc_super { + + ```Objective-C +struct objc_super { __unsafe_unretained id receiver; __unsafe_unretained Class super_class; - }; +}; + ``` + 结构体有两个成员,第一个成员是 receiver, 类似于上面的 `objc_msgSend`函数第一个参数self 。第二个成员是记录当前类的父类是什么。 所以,当调用 [self class] 时,实际先调用的是 `objc_msgSend`函数,第一个参数是 Son当前的这个实例,然后在 Son 这个类里面去找 - (Class)class这个方法,没有,去父类 Father里找,也没有,最后在 NSObject类中发现这个方法。而 - (Class)class的实现就是返回self的类别,故上述输出结果为 Son。 objc Runtime开源代码对- (Class)class方法的实现: - - (Class)class { - return object_getClass(self); - } + + ```Objective-C +- (Class)class { + return object_getClass(self); +} + ``` + 而当调用 `[super class]`时,会转换成`objc_msgSendSuper函数`。第一步先构造 `objc_super` 结构体,结构体第一个成员就是 `self` 。 第二个成员是 `(id)class_getSuperclass(objc_getClass(“Son”))` , 实际该函数输出结果为 Father。 + 第二步是去 Father这个类里去找 `- (Class)class`,没有,然后去NSObject类去找,找到了。最后内部是使用 `objc_msgSend(objc_super->receiver, @selector(class))`去调用, + 此时已经和`[self class]`调用相同了,故上述输出结果仍然返回 Son。 +参考链接:[微博@Chun_iOS](http://weibo.com/junbbcom)的博文[刨根问底Objective-C Runtime(1)- Self & Super](http://chun.tips/blog/2014/11/05/bao-gen-wen-di-objective%5Bnil%5Dc-runtime(1)%5Bnil%5D-self-and-super/) + -###22. runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法) +### 22. runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法) -每一个类对象中都一个方法列表,方法列表中记录着方法的名称,方法实现,以及参数类型,其实selector本质就是方法名称,通过这个方法名称就可以在方法列表中找到对应的方法实现. +每一个类对象中都一个方法列表,方法列表中记录着方法的名称、方法实现、以及参数类型,其实selector 本质就是方法名称,通过这个方法名称就可以在方法列表中找到对应的方法实现。 -###23. 使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么? +参考 NSObject 上面的方法: + + ```Objective-C +- (IMP)methodForSelector:(SEL)aSelector; ++ (IMP)instanceMethodForSelector:(SEL)aSelector; + ``` + + 参考: [Apple Documentation-Objective-C Runtime-NSObject-methodForSelector:]( https://developer.apple.com/documentation/objectivec/nsobject/1418863-methodforselector?language=objc "Apple Documentation-Objective-C Runtime-NSObject-methodForSelector:") + +### 23. 使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么? - 在ARC下不需要。 -

在MRC中,对于使用retain或copy策略的需要 。

在MRC下也不需要 @@ -1449,8 +2183,8 @@ objc_setAssociatedObject ( * 对象正在被销毁,生命周期即将结束. * 不能再有新的 __weak 弱引用, 否则将指向 nil. * 调用 [self dealloc] - 2. 父类 调用 -dealloc - * 继承关系中最底层的父类 在调用 -dealloc + 2. 子类 调用 -dealloc + * 继承关系中最底层的子类 在调用 -dealloc * 如果是 MRC 代码 则会手动释放实例变量们(iVars) * 继承关系中每一层的父类 都在调用 -dealloc 3. NSObject 调 -dealloc @@ -1469,7 +2203,7 @@ objc_setAssociatedObject ( -###24. objc中的类方法和实例方法有什么本质区别和联系? +### 24. objc中的类方法和实例方法有什么本质区别和联系? 类方法: @@ -1478,7 +2212,7 @@ objc_setAssociatedObject ( 2. 类方法中的self是类对象 2. 类方法可以调用其他的类方法 2. 类方法中不能访问成员变量 - 2. 类方法中不定直接调用对象方法 + 2. 类方法中不能直接调用对象方法 实例方法: @@ -1490,40 +2224,49 @@ objc_setAssociatedObject ( 2. 实例方法中也可以调用类方法(通过类名) -下一篇文章将发布在[这里](https://github.com/ChenYilong/iOSInterviewQuestions),会对以下问题进行总结,并将本篇文章的勘误一并列出,欢迎指正!请持续关注[微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) ---------- + @property部分主要参考 [Apple官方文档:Properties Encapsulate an Object’s Values](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW2) runtime部分主要参考[Apple官方文档:Declared Properties](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html) +---------- + +下一篇文章已经发布在[这里](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88/%E3%80%8A%E6%8B%9B%E8%81%98%E4%B8%80%E4%B8%AA%E9%9D%A0%E8%B0%B1%E7%9A%84iOS%E3%80%8B%E9%9D%A2%E8%AF%95%E9%A2%98%E5%8F%82%E8%80%83%E7%AD%94%E6%A1%88%EF%BC%88%E4%B8%8B%EF%BC%89.md),(点击下图封面访问)。会对以下问题进行总结,并将本篇文章的勘误一并列出,欢迎指正!请持续关注[微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) -###25. `_objc_msgForward`函数是做什么的,直接调用它将会发生什么? +

-###26. runtime如何实现weak变量的自动置nil? +---------- + +下篇的题目一览: + +### 25. `_objc_msgForward`函数是做什么的,直接调用它将会发生什么? + +### 26. runtime如何实现weak变量的自动置nil? -###27. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么? +### 27. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么? -###28. runloop和线程有什么关系? +### 28. runloop和线程有什么关系? -###29. runloop的mode作用是什么? +### 29. runloop的mode作用是什么? -###30. 以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决? +### 30. 以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决? -###31. 猜想runloop内部是如何实现的? -###32. objc使用什么机制管理对象内存? -###33. ARC通过什么方式帮助开发者管理内存? -###34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建) -###35. `BAD_ACCESS`在什么情况下出现? -###36. 苹果是如何实现autoreleasepool的? -###37. 使用block时什么情况会发生引用循环,如何解决? -###38. 在block内如何修改block外部变量? -###39. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题? -###40. GCD的队列(`dispatch_queue_t`)分哪两种类型? -###41. 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图) -###42. `dispatch_barrier_async`的作用是什么? -###43. 苹果为什么要废弃`dispatch_get_current_queue`? -###44. 以下代码运行结果如何? +### 31. 猜想runloop内部是如何实现的? +### 32. objc使用什么机制管理对象内存? +### 33. ARC通过什么方式帮助开发者管理内存? +### 34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建) +### 35. `BAD_ACCESS`在什么情况下出现? +### 36. 苹果是如何实现autoreleasepool的? +### 37. 使用block时什么情况会发生引用循环,如何解决? +### 38. 在block内如何修改block外部变量? +### 39. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题? +### 40. GCD的队列(`dispatch_queue_t`)分哪两种类型? +### 41. 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图) +### 42. `dispatch_barrier_async`的作用是什么? +### 43. 苹果为什么要废弃`dispatch_get_current_queue`? +### 44. 以下代码运行结果如何? - (void)viewDidLoad @@ -1536,22 +2279,26 @@ runtime部分主要参考[Apple官方文档:Declared Properties](https://devel NSLog(@"3"); } -###45. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调? -###46. 如何手动触发一个value的KVO -###47. 若一个类有实例变量`NSString *_foo`,调用setValue:forKey:时,可以以foo还是`_foo`作为key? -###48. KVC的keyPath中的集合运算符如何使用? -###49. KVC和KVO的keyPath一定是属性么? -###50. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现? -###51. apple用什么方式实现对一个对象的KVO? -###52. IBOutlet连出来的视图属性为什么可以被设置成weak? -###53. IB中User Defined Runtime Attributes如何使用? -###54. 如何调试`BAD_ACCESS`错误 -###55. lldb(gdb)常用的调试命令? +### 45. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调? +### 46. 如何手动触发一个value的KVO +### 47. 若一个类有实例变量`NSString *_foo`,调用setValue:forKey:时,可以以foo还是`_foo`作为key? +### 48. KVC的keyPath中的集合运算符如何使用? +### 49. KVC和KVO的keyPath一定是属性么? +### 50. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现? +### 51. apple用什么方式实现对一个对象的KVO? +### 52. IBOutlet连出来的视图属性为什么可以被设置成weak? +### 53. IB中User Defined Runtime Attributes如何使用? +### 54. 如何调试`BAD_ACCESS`错误 +### 55. lldb(gdb)常用的调试命令? ----------- + +------------- -Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) +Posted by Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) & [公众号@iTeaTime技术清谈](https://mp.weixin.qq.com/s/A4e5h3xgIEh6PInf1Rjqsw) 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh) + +

+ diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\213\357\274\211.md" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\213\357\274\211.md" index 384be6c..ba3b028 100644 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\213\357\274\211.md" +++ "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210\357\274\210\344\270\213\357\274\211.md" @@ -1,9 +1,11 @@ -[《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/)—参考答案(下) +# [《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/)—参考答案(下) + +

-说明:面试题来源是[微博@我就叫Sunny怎么了](http://weibo.com/u/1364395395)的这篇博文:[《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/),其中共55题,除第一题为纠错题外,其他54道均为简答题。 +说明:面试题来源是[微博@我就叫Sunny怎么了](http://weibo.com/u/1364395395)的这篇博文:[《招聘一个靠谱的 iOS》](http://blog.sunnyxx.com/2015/07/04/ios-interview/),其中共55题,除第一题为纠错题外,其他54道均为简答题。 出题者简介: 孙源(sunnyxx),目前就职于百度,负责百度知道 iOS 客户端的开发工作,对技术喜欢刨根问底和总结最佳实践,热爱分享和开源,维护一个叫 forkingdog 的开源小组。 @@ -11,7 +13,60 @@ ---------- -###25. `_objc_msgForward`函数是做什么的,直接调用它将会发生什么? +# 索引 + + + - [ 25. `_objc_msgForward` 函数是做什么的,直接调用它将会发生什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#25-_objc_msgforward函数是做什么的直接调用它将会发生什么) + - [26. runtime如何实现weak变量的自动置nil?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#26-runtime如何实现weak变量的自动置nil) + - [27. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#27-能否向编译后得到的类中增加实例变量能否向运行时创建的类中添加实例变量为什么) + - [28. runloop和线程有什么关系?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#28-runloop和线程有什么关系) + - [29. runloop的mode作用是什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#29-runloop的mode作用是什么) + - [30. 以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#30-以-scheduledtimerwithtimeinterval的方式触发的timer在滑动页面上的列表时timer会暂定回调为什么如何解决) + - [31. 猜想runloop内部是如何实现的?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#31-猜想runloop内部是如何实现的) + - [32. objc使用什么机制管理对象内存?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#32-objc使用什么机制管理对象内存) + - [33. ARC通过什么方式帮助开发者管理内存?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#33-arc通过什么方式帮助开发者管理内存) + - [34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#34-不手动指定autoreleasepool的前提下一个autorealese对象在什么时刻释放比如在一个vc的viewdidload中创建) + - [35. BAD_ACCESS在什么情况下出现?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#35-bad_access在什么情况下出现) + - [36. 苹果是如何实现autoreleasepool的?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#36-苹果是如何实现autoreleasepool的) + - [37. 使用block时什么情况会发生引用循环,如何解决?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#37-使用block时什么情况会发生引用循环如何解决) + - [38. 在block内如何修改block外部变量?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#38-在block内如何修改block外部变量) + - [39. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#39-使用系统的某些block-api如uiview的block版本写动画时是否也考虑引用循环问题) + + ![](https://tva1.sinaimg.cn/large/008vOhrAgy1hgc9ypbakpj30u016fgr6.jpg) + - [40. GCD的队列(dispatch_queue_t)分哪两种类型?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#40-gcd的队列dispatch_queue_t分哪两种类型) + - [41. 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#41-如何用gcd同步若干个异步调用如根据若干个url异步加载多张图片然后在都下载完成后合成一张整图) + - [42. dispatch_barrier_async的作用是什么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#42-dispatch_barrier_async的作用是什么) + - [43. 苹果为什么要废弃dispatch_get_current_queue?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#43-苹果为什么要废弃dispatch_get_current_queue) + - [44. 以下代码运行结果如何?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#44-以下代码运行结果如何) + ```Objective-C +- (void)viewDidLoad +{ + [super viewDidLoad]; + NSLog(@"1"); + dispatch_sync(dispatch_get_main_queue(), ^{ + NSLog(@"2"); + }); + NSLog(@"3"); +} + ``` + + - [45. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#45-addobserverforkeypathoptionscontext各个参数的作用分别是什么observer中需要实现哪个方法才能获得kvo回调) + - [46. 如何手动触发一个value的KVO](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#46-如何手动触发一个value的kvo) + - [47. 若一个类有实例变量 NSString *_foo ,调用setValue:forKey:时,可以以foo还是 _foo 作为key?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#47-若一个类有实例变量-nsstring-_foo-调用setvalueforkey时可以以foo还是-_foo-作为key) + - [48. KVC的keyPath中的集合运算符如何使用?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#48-kvc的keypath中的集合运算符如何使用) + - [49. KVC和KVO的keyPath一定是属性么?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#49-kvc和kvo的keypath一定是属性么) + - [50. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#50-如何关闭默认的kvo的默认实现并进入自定义的kvo实现) + - [51. apple用什么方式实现对一个对象的KVO?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#51-apple用什么方式实现对一个对象的kvo) + - [52. IBOutlet连出来的视图属性为什么可以被设置成weak?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#52-iboutlet连出来的视图属性为什么可以被设置成weak) + - [53. IB中User Defined Runtime Attributes如何使用?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#53-ib中user-defined-runtime-attributes如何使用) + - [54. 如何调试BAD_ACCESS错误](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#54-如何调试bad_access错误) + - [55. lldb(gdb)常用的调试命令?](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#55-lldbgdb常用的调试命令) + +---------- + +## 正文 + +### 25. `_objc_msgForward`函数是做什么的,直接调用它将会发生什么? > `_objc_msgForward`是 IMP 类型,用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,`_objc_msgForward`会尝试做消息转发。 @@ -27,11 +82,11 @@ Objective-C运行时是开源的,所以我们可以看到它的实现。打开[ ***Apple Open Source 里Mac代码里的obj包*** ](http://www.opensource.apple.com/tarballs/objc4/)下载一个最新版本,找到 `objc-runtime-new.mm`,进入之后搜索`_objc_msgForward`。 -![enter image description here](http://i.imgur.com/rGBfaoL.png) +![https://github.com/ChenYilong](http://i.imgur.com/rGBfaoL.png) 里面有对`_objc_msgForward`的功能解释: -![enter image description here](http://i.imgur.com/vcThcdA.png) +![https://github.com/ChenYilong](http://i.imgur.com/vcThcdA.png) ```Objective-C @@ -105,7 +160,12 @@ IMP lookUpImpOrNil(Class cls, SEL sel) { ```Objective-C (void)instrumentObjcMessageSends(YES); ``` - +因为该函数处于 objc-internal.h 内,而该文件并不开放,所以调用的时候先声明,目的是告诉编译器程序目标文件包含该方法存在,让编译通过 +``` +OBJC_EXPORT void +instrumentObjcMessageSends(BOOL flag) +OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0); +``` 或者断点暂停程序运行,并在 gdb 中输入下面的命令: @@ -115,7 +175,7 @@ call (void)instrumentObjcMessageSends(YES) 以第二种为例,操作如下所示: -![enter image description here](http://i.imgur.com/uEwTCC4.png) +![https://github.com/ChenYilong](http://i.imgur.com/uEwTCC4.png) 之后,运行时发送的所有消息都会打印到`/tmp/msgSend-xxxx`文件里了。 @@ -130,7 +190,7 @@ open /private/tmp -![enter image description here](http://i.imgur.com/Fh5hhCw.png) +![https://github.com/ChenYilong](http://i.imgur.com/Fh5hhCw.png) @@ -166,14 +226,14 @@ int main(int argc, char * argv[]) { ``` -![enter image description here](http://i.imgur.com/UjbmVvB.png) +![https://github.com/ChenYilong](http://i.imgur.com/UjbmVvB.png) 你可以在`/tmp/msgSend-xxxx`(我这一次是`/tmp/msgSend-9805`)文件里,看到打印出来: -![enter image description here](http://i.imgur.com/AAERz1T.png) +![https://github.com/ChenYilong](http://i.imgur.com/AAERz1T.png) @@ -201,15 +261,14 @@ int main(int argc, char * argv[]) { 1. 调用`resolveInstanceMethod:`方法 (或 `resolveClassMethod:`)。允许用户在此时为该 Class 动态添加实现。如果有实现了,则调用并返回YES,那么重新开始`objc_msgSend`流程。这一次对象会响应这个选择器,一般是因为它已经调用过`class_addMethod`。如果仍没实现,继续下面的动作。 - 2. 调用`forwardingTargetForSelector:`方法,尝试找到一个能响应该消息的对象。如果获取到,则直接把消息转发给它,返回非 nil 对象。否则返回 nil ,继续下面的动作。注意,这里不要返回 self ,否则会形成死循环。 + 2. 调用`forwardingTargetForSelector:`方法,尝试找到一个能响应该消息的对象。如果获取到,则直接把消息转发给它,返回非 nil 对象。否则返回 nil ,继续下面的动作。注意,这里不要返回 self ,否则会形成死循环。(讨论见: [《forwardingTargetForSelector返回self不会死循环吧。 #64》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/64) - 3. 调用`methodSignatureForSelector:`方法,尝试获得一个方法签名。如果获取不到,则直接调用`doesNotRecognizeSelector`抛出异常。如果能获取,则返回非nil:创建一个 NSlnvocation 并传给`forwardInvocation:`。 - - 4. 调用`forwardInvocation:`方法,将第3步获取到的方法签名包装成 Invocation 传入,如何处理就在这里面了,并返回非ni。 + 3. 调用`methodSignatureForSelector:`方法,尝试获得一个方法签名。如果获取不到,则直接调用`doesNotRecognizeSelector`抛出异常。如果能获取,则返回非nil:创建一个 NSInvocation 并传给`forwardInvocation:`。 + 4. 调用`forwardInvocation:`方法,将第3步获取到的方法签名包装成 Invocation 传入,如何处理就在这里面了。(讨论见: [《_objc_msgForward问题 #106》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/106 ) 5. 调用`doesNotRecognizeSelector:` ,默认的实现是抛出异常。如果第3步没能获得一个方法签名,执行该步骤。 -上面前4个方法均是模板方法,开发者可以override,由 runtime 来调用。最常见的实现消息转发:就是重写方法3和4,吞掉一个消息或者代理给其他对象都是没问题的 +上面前4个方法均是模板方法,开发者可以重写(override),由 runtime 来调用。最常见的实现消息转发:就是重写方法3和4,吞掉一个消息或者代理给其他对象都是没问题的 也就是说`_objc_msgForward`在进行消息转发的过程中会涉及以下这几个方法: @@ -223,6 +282,7 @@ int main(int argc, char * argv[]) { 5. `doesNotRecognizeSelector:` 方法 +为了能更清晰地理解这些方法的作用,git仓库里也给出了一个Demo,名称叫“ `_objc_msgForward_demo` ”,可运行起来看看。 下面回答下第二个问题“直接`_objc_msgForward`调用它将会发生什么?” @@ -240,9 +300,9 @@ int main(int argc, char * argv[]) { |--| `_objc_msgForward`参数| 类型 | -------------|-------------|------------- - 1.| 所属对象 | id类型 - 2. |方法名 | SEL类型 - 3. |可变参数 |可变参数类型 + 1 | 所属对象 | id类型 + 2 |方法名 | SEL类型 + 3 |可变参数 |可变参数类型 首先了解下如何调用 IMP 类型的方法,IMP类型是如下格式: @@ -263,7 +323,7 @@ typedef void (*voidIMP)(id, SEL, ...) 想象下`objc_msgSend`会怎么做?通常情况下,下面这张图就是你正常走`objc_msgSend`过程,和直接调用`_objc_msgForward`的前后差别: -![enter image description here](http://ww1.sinaimg.cn/bmiddle/6628711bgw1eecx3jef23g206404tkbi.gif) +![https://github.com/ChenYilong](http://ww1.sinaimg.cn/bmiddle/6628711bgw1eecx3jef23g206404tkbi.gif) 有哪些场景需要直接调用`_objc_msgForward`?最常见的场景是:你想获取某方法所对应的`NSInvocation`对象。举例说明: @@ -274,7 +334,9 @@ typedef void (*voidIMP)(id, SEL, ...) 作者的博文[《JSPatch实现原理详解》](http://blog.cnbang.net/tech/2808/)详细记录了实现原理,有兴趣可以看下。 -###26. runtime如何实现weak变量的自动置nil? +同时 [ ***RAC(ReactiveCocoa)*** ](https://github.com/ReactiveCocoa/ReactiveCocoa) 源码中也用到了该方法。 + +### 26. runtime如何实现weak变量的自动置nil? > runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc,假如 weak 指向的对象内存地址是a,那么就会以a为键, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。 @@ -292,7 +354,9 @@ typedef void (*voidIMP)(id, SEL, ...) 在b非nil时,a和b指向同一个内存地址,在b变nil时,a变nil。此时向a发送消息不会崩溃:在Objective-C中向nil发送消息是安全的。 而如果a是由assign修饰的,则: -在b非nil时,a和b指向同一个内存地址,在b变nil时,a还是指向该内存地址,变野指针。此时向a发送消息极易崩溃。 +在b非nil时,a和b指向同一个内存地址,在b变nil时,a还是指向该内存地址,变野指针。此时向a发送消息会产生崩溃。 + +参考讨论区 : [《有一点说的很容易误导人 #6》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/6) 下面我们将基于`objc_storeWeak(&a, b)`函数,使用伪代码模拟“runtime如何实现weak属性”: @@ -362,7 +426,7 @@ objc_storeWeak(&obj1, 0); -###27. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么? +### 27. 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么? - 不能向编译后得到的类中增加实例变量; - 能向运行时创建的类中添加实例变量; @@ -374,7 +438,7 @@ objc_storeWeak(&obj1, 0); - 运行时创建的类是可以添加实例变量,调用 `class_addIvar` 函数。但是得在调用 `objc_allocateClassPair` 之后,`objc_registerClassPair` 之前,原因同上。 -###28. runloop和线程有什么关系? +### 28. runloop和线程有什么关系? 总的说来,Run loop,正如其名,loop表示某种循环,和run放在一起就表示一直在运行着的循环。实际上,run loop和线程是紧密相连的,可以这样说run loop是为了线程而生,没有线程,它就没有存在的必要。Run loops是线程的基础架构部分, Cocoa 和 CoreFundation 都提供了 run loop 对象方便配置和管理线程的 run loop (以下都以 Cocoa 为例)。每个线程,包括程序的主线程( main thread )都有与之相应的 run loop 对象。 @@ -413,7 +477,7 @@ NSRunLoop *runloop = [NSRunLoop currentRunLoop]; 参考链接:[《Objective-C之run loop详解》](http://blog.csdn.net/wzzvictory/article/details/9237973)。 -###29. runloop的mode作用是什么? +### 29. runloop的mode作用是什么? model 主要是用来指定事件在运行循环中的优先级的,分为: @@ -428,9 +492,11 @@ model 主要是用来指定事件在运行循环中的优先级的,分为: 1. NSDefaultRunLoopMode(kCFRunLoopDefaultMode) 2. NSRunLoopCommonModes(kCFRunLoopCommonModes) -###30. 以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决? +讨论区: [《https://github.com/ChenYilong/iOSInterviewQuestions/issues/36》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/36 ) + +### 30. 以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决? -RunLoop只能运行在一种mode下,如果要换mode,当前的loop也需要停下重启成新的。利用这个机制,ScrollView滚动过程中NSDefaultRunLoopMode(kCFRunLoopDefaultMode)的mode会切换到UITrackingRunLoopMode来保证ScrollView的流畅滑动:只能在NSDefaultRunLoopMode模式下处理的事件会影响scrllView的滑动。 +RunLoop只能运行在一种mode下,如果要换mode,当前的loop也需要停下重启成新的。利用这个机制,ScrollView滚动过程中NSDefaultRunLoopMode(kCFRunLoopDefaultMode)的mode会切换到UITrackingRunLoopMode来保证ScrollView的流畅滑动:只能在NSDefaultRunLoopMode模式下处理的事件会影响ScrollView的滑动。 如果我们把一个NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环中的时候, ScrollView滚动过程中会因为mode的切换,而导致NSTimer将不再被调度。 @@ -459,8 +525,9 @@ NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; ``` +如果对本回答有疑问,欢迎参与讨论: [《第30题,使用dispatch source替换NSTimer #45》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/45 ) -###31. 猜想runloop内部是如何实现的? +### 31. 猜想runloop内部是如何实现的? > 一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,通常的代码逻辑 是这样的: @@ -500,356 +567,1427 @@ NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 1. [《深入理解RunLoop》](http://blog.ibireme.com/2015/05/18/runloop/#base) 2. 摘自博文[***CFRunLoop***](https://github.com/ming1016/study/wiki/CFRunLoop),原作者是[微博@我就叫Sunny怎么了](http://weibo.com/u/1364395395) -###32. objc使用什么机制管理对象内存? +### 32. objc使用什么机制管理对象内存? -通过 retainCount 的机制来决定对象是否需要释放。 -每次 runloop 的时候,都会检查对象的 retainCount,如果retainCount 为 0,说明该对象没有地方需要继续使用了,可以释放掉了。 +- 通过 `retainCount` 的机制来决定对象是否需要释放。 +- ~~每次 `runloop` 的时候,都会检查对象的 `retainCount`,如果 `retainCount` 为 0,说明该对象没有地方需要继续使用了,可以释放掉了。(正解:retainCount 不可能依赖 runloop 检查。runloop 只是自动管理了一个 autoreleasepool,autoreleasepool pop 时可能会导致 retainCount 为 0 从而导致对象释放)~~ +- 每次 release 时检查 retainCount 减一,当为0时候释放对象。 -###33. ARC通过什么方式帮助开发者管理内存? -编译时根据代码上下文,插入 retain/release -###34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建) -分两种情况:手动干预释放时机、系统自动去释放。 +release 对象的各种情况如下: +一、对象成员变量 - 1. 手动干预释放时机--指定autoreleasepool - 就是所谓的:当前作用域大括号结束时释放。 - 2. 系统自动去释放--不手动指定autoreleasepool +这个对象 dealloc 时候,成员变量 `objc_storeStrong(&ivar,nil)` release + +二、局部变量变量的释放 +分情况: + +1、strong obj变量,出了作用域`{}`,就 `objc_storeStrong(obj,nil)` release 对象; + + ```C +void +objc_storeStrong(id *location, id obj) +{ + +id prev = *location; +if (obj == prev) { + return; +} +objc_retain(obj); +*location = obj; +objc_release(prev); +} + ``` + + +2、weak obj变量,出了作用域,objc_destroyWeak 将变量(obj)的地址从weak表中删除。; + +3、autorelease obj变量,交给 autoreleasePool对象管理, +(1)主动使用 `@autoreleasepool{}`,出了 `{}` 对象release +(2)不使用 `@autoreleasepool{}`,交给线程管理 + +①线程开启`runloop`,在每次 `kCFRunLoopBeforeWaiting` 休眠时候,执行`PoolPop`(release对象)再PoolPush, +②线程没有开启`runloop`,在线程结束时候执行 `PoolPop`(release对象) - Autorelease对象会在当前的 runloop 迭代结束时释放。 +详细讨论见: [《32. objc使用什么机制管理对象内存? #92》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/92 ) + +### 33. ARC通过什么方式帮助开发者管理内存? +

编译时根据代码上下文,插入 retain/release +

+ARC相对于MRC,不是在编译时添加retain/release/autorelease这么简单。应该是编译期和运行期两部分共同帮助开发者管理内存。 + +在编译期,ARC用的是更底层的C接口实现的retain/release/autorelease,这样做性能更好,也是为什么不能在ARC环境下手动retain/release/autorelease,同时对同一上下文的同一对象的成对retain/release操作进行优化(即忽略掉不必要的操作);ARC也包含运行期组件,这个地方做的优化比较复杂,但也不能被忽略。【TODO:后续更新会详细描述下】 + +讨论区: + [《第33题,答案可能不是很准确 #15》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/15 ) - 如果在一个vc的viewDidLoad中创建一个 Autorelease对象,那么该对象会在 viewDidAppear 方法执行前就被销毁了。 +### 34. 不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建) -参考链接:[《黑幕背后的Autorelease》](http://blog.sunnyxx.com/2014/10/15/behind-autorelease/) -###35. BAD_ACCESS在什么情况下出现? -访问了野指针,比如对一个已经释放的对象执行了release、访问已经释放对象的成员变量或者发消息。 -死循环 -###36. 苹果是如何实现autoreleasepool的? +分两种情况:手动干预释放时机、系统自动去释放。 -autoreleasepool以一个队列数组的形式实现,主要通过下列三个函数完成. + 1. 手动干预释放时机--指定 `autoreleasepool` + 就是所谓的:当前作用域大括号结束时释放。 + 2. 系统自动去释放--不手动指定 `autoreleasepool` - 1. `objc_autoreleasepoolPush` - 2. `objc_autoreleasepoolPop` - 3. `objc_aurorelease` +`__autoreleasing` 修饰的 `autorelease` 对象,是在创建好之后调用`objc_autorelease` 会被添加到最近一次创建的自动释放池中,并且autorelease对象什么时候调用release,是由RunLoop来控制的:会在当前的 runloop 休眠之前,执行pop函数、调用 release 时释放。 -看函数名就可以知道,对autorelease分别执行push,和pop操作。销毁对象时执行release操作。 +释放的时机总结起来,可以用下图来表示: -###37. 使用block时什么情况会发生引用循环,如何解决? -一个对象中强引用了block,在block中又使用了该对象,就会发射循环引用。 -解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。 +

- 1. id weak weakSelf = self; - 或者 weak __typeof(&*self)weakSelf = self该方法可以设置宏 - 2. id __block weakSelf = self; +下面对这张图进行详细的解释: -###38. 在block内如何修改block外部变量? -默认情况下,在block中访问的外部变量是复制过去的,即:**写操作不对原变量生效**。但是你可以加上`__block`来让其写操作生效,示例代码如下: - __block int a = 0; - void (^foo)(void) = ^{ - a = 1; - } - f00(); - //这里,a的值被修改为1 +从程序启动到加载完成是一个完整的运行循环,然后会停下来,等待用户交互,用户的每一次交互都会启动一次运行循环,来处理用户所有的点击事件、触摸事件。 +我们都知道: -参考链接:[微博@唐巧_boy](http://weibo.com/tangqiaoboy)的著作《iOS开发进阶》中的第11.2.3章节 +`__autoreleasing` 修饰的 `autorelease` 对象,是在创建好之后调用`objc_autorelease`加入到释放池。 -###39. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题? +但是如果每次都放进应用程序的 `main.m` 中的 autoreleasepool 中,迟早有被撑满的一刻。这个过程中必定有一个释放的动作。何时? -系统的某些block api中,UIView的block版本写动画时不需要考虑,但也有一些api 需要考虑: +在一次完整的 RunLoop 休眠之前,会被销毁。 +那什么时间会创建自动释放池? RunLoop 检测到事件并启动后,就会创建自动释放池。 -所谓“引用循环”是指双向的强引用,所以那些“单向的强引用”(block 强引用 self )没有问题,比如这些: +~~“子线程的 runloop 默认是不工作,无法主动创建,必须手动创建。”(表述不准确, 见 issue#82 #https://github.com/ChenYilong/iOSInterviewQuestions/issues/82)~~ - ```Objective-C -[UIView animateWithDuration:duration animations:^{ [self.superview layoutIfNeeded]; }]; - ``` +从 `RunLoop` 源代码中可知,子线程默认是没有 `RunLoop` 的,如果需要在子线程开启 `RunLoop` ,则需要调用 `[NSRunLoop CurrentRunLoop]` 方法,它内部实现是先检查线程,如果发现是子线程,以懒加载的形式 创建一个子线程的 `RunLoop`。并存储在一个全局的 可变字典里。开发者在调用 `[NSRunLoop CurrentRunLoop]` 时,是系统自动创建 `RunLoop` 的,而没法手动创建。 +自定义的 NSOperation 和 NSThread 需要手动创建自动释放池。比如: 自定义的 NSOperation 类中的 main 方法里就必须添加自动释放池。否则出了作用域后,自动释放对象会因为没有自动释放池去处理它,而造成内存泄露。 +但对于 blockOperation 和 invocationOperation 这种默认的 Operation ,系统已经帮我们封装好了,不需要手动创建自动释放池。 - ```Objective-C -[[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; - ``` +@autoreleasepool 当自动释放池被销毁或者耗尽时,会向自动释放池中的所有对象发送 release 消息,释放自动释放池中的所有对象。 + +举一个例子: 如果在一个vc的viewDidLoad中创建一个 Autorelease对象,那么该对象会在 viewDidAppear 方法执行前就被销毁了。 +注意: 本次论述, 并不适用于 TaggedPointer 类型. +参考链接:[《黑幕背后的Autorelease》](http://blog.sunnyxx.com/2014/10/15/behind-autorelease/) + +拓展问题: +下面的对象 ,分别在什么地方被释放 ? ```Objective-C -[[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" - object:nil - queue:[NSOperationQueue mainQueue] - usingBlock:^(NSNotification * notification) { - self.someProperty = xyz; }]; +/** + * 下面的对象 ,分别在什么地方被释放 ? + */ +- (void)weakLifeCycleTest { + id obj0 = @"iTeaTime(技术清谈)"; + __weak id obj1 = obj0; + id obj2 = [NSObject new]; + __weak id obj3 = [NSObject new]; + { + id obj4 = [NSObject new]; + } + __autoreleasing id obj5 = [NSObject new]; + __unsafe_unretained id obj6 = self; + NSLog(@"obj0=%@, obj1=%@, obj2=%@, obj3=%@, obj5=%@, obj6=%@", obj0, obj1, obj2, obj3, obj5, obj6); + // Lots of code ... +} ``` -这些情况不需要考虑“引用循环”。 +- obj0 字符串属于常量区,不会释放 (类似的例子可以参考 [《第34题,autorelease对象的释放时机,对iOS9、10系统不适用 #90》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/90 ) ) +- obj1 指向的对象在常量区,不会释放 (类似的例子可以参考 [《第34题,autorelease对象的释放时机,对iOS9、10系统不适用 #90》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/90 ) ) +- obj2 没有修复符,默认为 `__strong` ,会在对象被使用结束时释放。如果下方没有使用该对象,根据编译器是否优化,可能在下一行直接销毁,最晚可以在方法结束时销毁。 +- obj3 警告 “Assigning retained object to weak variable; object will be released after assignment” ,new 结束后,等号右侧对象立马被释放,左侧指针也立即销毁,下方打印也是 null +- obj4 出了最近的括号销毁 +- obj5 出了最近的一个 autoreleasePool 时被释放 +- obj6 类似于基本数据结构的修饰符号 assign ,不会对修饰对象的生命周期产生影响,随着self的释放,obj6也会随之释放。比如 self 被其它线程释放,那么obj6也会随之释放。 +讨论区: -但如果你使用一些参数中可能含有 ivar 的系统 api ,如 GCD 、NSNotificationCenter就要小心一点:比如GCD 内部如果引用了 self,而且 GCD 的其他参数是 ivar,则要考虑到循环引用: +- [《关于第 34 题关于 NSOperation 中需要手动添加 Autorelease Pool 的部分的疑问 #25》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/25 ) +- [《34题-36题-题目中很多对AutoreleasePool的理解都是有问题的 #112》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/112 ) - ```Objective-C -__weak __typeof__(self) weakSelf = self; -dispatch_group_async(_operationsGroup, _operationsQueue, ^ -{ -__typeof__(self) strongSelf = weakSelf; -[strongSelf doSomething]; -[strongSelf doSomethingElse]; -} ); - ``` -类似的: - ```Objective-C - __weak __typeof__(self) weakSelf = self; - _observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" - object:nil - queue:nil - usingBlock:^(NSNotification *note) { - __typeof__(self) strongSelf = weakSelf; - [strongSelf dismissModalViewControllerAnimated:YES]; - }]; - ``` -self --> _observer --> block --> self 显然这也是一个循环引用。 +### 35. BAD_ACCESS在什么情况下出现? +访问了悬垂指针,比如对一个已经释放的对象执行了release、访问已经释放对象的成员变量或者发消息。 +死循环 +### 36. 苹果是如何实现autoreleasepool的? -###40. GCD的队列(`dispatch_queue_t`)分哪两种类型? +AutoreleasePool 是以 AutoreleasePoolPage 为结点的双向链表来实现的,主要通过下列三个函数完成: + 1. `objc_autoreleasepoolPush` + 2. `objc_autoreleasepoolPop` + 3. `objc_autorelease` - 1. 串行队列Serial Dispatch Queue - 2. 并行队列Concurrent Dispatch Queue +看函数名就可以知道,对 autorelease 分别执行 push,和 pop 操作。销毁对象时执行release操作。 -###41. 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图) +举例说明:我们都知道用类方法创建的对象都是 Autorelease 的,那么一旦 Person 出了作用域,当在 Person 的 dealloc 方法中打上断点,我们就可以看到这样的调用堆栈信息: -使用Dispatch Group追加block到Global Group Queue,这些block如果全部执行完毕,就会执行Main Dispatch Queue中的结束处理的block。 + +

-```Objective-C -dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); -dispatch_group_t group = dispatch_group_create(); -dispatch_group_async(group, queue, ^{ /*加载图片1 */ }); -dispatch_group_async(group, queue, ^{ /*加载图片2 */ }); -dispatch_group_async(group, queue, ^{ /*加载图片3 */ }); -dispatch_group_notify(group, dispatch_get_main_queue(), ^{ - // 合并图片 -}); -``` -###42. `dispatch_barrier_async`的作用是什么? - 在并行队列中,为了保持某些任务的顺序,需要等待一些任务完成后才能继续进行,使用 barrier 来等待之前任务完成,避免数据竞争等问题。 - `dispatch_barrier_async` 函数会等待追加到Concurrent Dispatch Queue并行队列中的操作全部执行完之后,然后再执行 `dispatch_barrier_async` 函数追加的处理,等 `dispatch_barrier_async` 追加的处理执行结束之后,Concurrent Dispatch Queue才恢复之前的动作继续执行。 +讨论区: -打个比方:比如你们公司周末跟团旅游,高速休息站上,司机说:大家都去上厕所,速战速决,上完厕所就上高速。超大的公共厕所,大家同时去,程序猿很快就结束了,但程序媛就可能会慢一些,即使你第一个回来,司机也不会出发,司机要等待所有人都回来后,才能出发。 `dispatch_barrier_async` 函数追加的内容就如同 “上完厕所就上高速”这个动作。 +- [《34题-36题-题目中很多对AutoreleasePool的理解都是有问题的 #112》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/112 ) -###43. 苹果为什么要废弃`dispatch_get_current_queue`? -`dispatch_get_current_queue`容易造成死锁 +### 37. 使用block时什么情况会发生引用循环,如何解决? +一个对象中强引用了 block,在 block 中又强引用了该对象,就会发生循环引用。 +ARC 下的解决方法是: -###44. 以下代码运行结果如何? - - (void)viewDidLoad - { - [super viewDidLoad]; - NSLog(@"1"); - dispatch_sync(dispatch_get_main_queue(), ^{ - NSLog(@"2"); - }); - NSLog(@"3"); - } + 1、 将该对象使用 `__weak` 修饰符修饰之后再在 block 中使用。 `id weak weakSelf = self;` + 或者 `weak __typeof(&*self)weakSelf = self` 该方法可以设置宏 + `__weak` :不会产生强引用,指向的对象销毁时,会自动让指针置为 ni1 + + 2、 使用 `unsafe_unretained` 关键字,用法与 `__weak` 一致。 + `unsafe_unretained` 不会产生强引用,不安全,指向的对象销毁时,指针存储的地址值不变。 -只输出:1 。发生主线程锁死。 +几个方案的原理如下图所示: + +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfj2600xzsj30pw0iadj5.jpg) + +检测代码中是否存在循环引用问题,可参考下文中 39 题中提到的工具。 + +注意: +还有第三种方式: -###45. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调? +3、也可以使用 `__block` 来解决循环引用问题,用法为: `__block id weakSelf = self;`,但不推荐使用。因为必须要调用该 block 方案才能生效,因为需要及时的将 `__block` 变量置为 nii。 +![](https://tva1.sinaimg.cn/large/007S8ZIlly1gfj1sa1veaj30si1akgud.jpg) + ```Objective-C -// 添加键值观察 -/* -1 观察者,负责处理监听事件的对象 -2 观察的属性 -3 观察的选项 -4 上下文 -*/ -[self.person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"Person Name"]; +__block id weakSelf = self; +self.block = ^{ + NSLog(@"%@", @[weakSelf]); + weakSelf = nil; +}; +self.block(); ``` -observer中需要实现一下方法: +MRC下可使用 `unsafe_unretained` 和 `__block` 进行解决,`__weak` 不能在 MRC 中使用。在 MRC 下 `__block` 的用法简单化了,可以照搬 `__weak` 的使用方法,两者用法一致。 +用 `unsafe_unretained` 解决: ```Objective-C -// 所有的 kvo 监听到事件,都会调用此方法 -/* - 1. 观察的属性 - 2. 观察的对象 - 3. change 属性变化字典(新/旧) - 4. 上下文,与监听的时候传递的一致 - */ -- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context; +unsafe_unretained id weakSelf = self; +self.block = ^{ + NSLog(@"%@", @[weakSelf]); + +}; ``` -###46. 如何手动触发一个value的KVO +用 `__block` 解决: -所谓的“手动触发”是区别于“自动触发”: +```Objective-C +__block id weakSelf = self; +self.block = ^{ + NSLog(@"%@", @[weakself]); -自动触发是指类似这种场景:在注册 KVO 之前设置一个初始值,注册之后,设置一个不一样的值,就可以触发了。 +}; +``` -想知道如何手动触发,必须知道自动触发 KVO 的原理: +其中最佳实践为 weak-strong dance 解法: -键值观察通知依赖于 NSObject 的两个方法: `willChangeValueForKey:` 和 `didChangevlueForKey:` 。在一个被观察属性发生改变之前, `willChangeValueForKey:` 一定会被调用,这就 -会记录旧的值。而当改变发生后, `didChangeValueForKey:` 会被调用,继而 `observeValueForKey:ofObject:change:context:` 也会被调用。如果可以手动实现这些调用,就可以实现“手动触发”了。 +```Objective-C +__weak __typeof(self) weakSelf = self; +self.block = ^{ + __strong typeof(self) strongSelf = weakSelf; + if (!strongSelf) { + return; + } + NSLog(@"%@", @[strongSelf]); +}; +self.block(); +``` -那么“手动触发”的使用场景是什么?一般我们只在希望能控制“回调的调用时机”时才会这么做。 +- weakSelf 是保证 block 内部(作用域内)不会产生循环引用 +- strongSelf 是保证 block 内部(作用域内) self 不会被 block释放 +- `if (!strongSelf) { return;}` 该代码作用:因为 weak 指针指向的对象,是可能被随时释放的。为了防止 self 在 block 外部被释放,比如其它线程内被释放。 -具体做法如下: -如果这个 `value` 是 表示时间的 `self.now` ,那么代码如下:最后两行代码缺一不可。 - ```Objective-C -// .m文件 -// Created by https://github.com/ChenYilong -// 微博@iOS程序犭袁(http://weibo.com/luohanchenyilong/). -// 手动触发 value 的KVO,最后两行代码缺一不可。 +讨论区 : -//@property (nonatomic, strong) NSDate *now; -- (void)viewDidLoad -{ - [super viewDidLoad]; - [self willChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 - [self didChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 -} - ``` +- 如果对MRC下的循环引用解决方案感兴趣,可参见讨论 [《issue#50 -- 37 题 block 循环引用问题》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/50 ) +- [《建议增加一个问题:__block和__weak的区别 #7》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/7) -但是平时我们一般不会这么干,我们都是等系统去“自动触发”。“自动触发”的实现原理: +![](https://tva1.sinaimg.cn/large/007S8ZIlly1gfl2fg3anyj31jy0m3dlu.jpg) + +在 [《iOS面试题集锦(附答案)》]( https://github.com/ChenYilong/iOSInterviewQuestions ) 中有这样一道题目: +在block内如何修改block外部变量?(38题)答案如下: +### 38. 在block内如何修改block外部变量? - > 比如调用 `setNow:` 时,系统还会以某种方式在中间插入 `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` 的调用。 +注:本题代码请在仓库中查看以 Demo38 开头的工程(公众号请点击原文查看 GitHub 仓库) + +先描述下问题: + +默认情况下,在block中访问的外部变量是复制过去的,即:**写操作不对原变量生效**。但是你可以加上 `__block` 来让其写操作生效,示例代码如下: -大家可能以为这是因为 `setNow:` 是合成方法,有时候我们也能看到人们这么写代码: ```Objective-C -- (void)setNow:(NSDate *)aDate { - [self willChangeValueForKey:@"now"]; // 没有必要 - _now = aDate; - [self didChangeValueForKey:@"now"];// 没有必要 -} + __block int a = 0; + void (^foo)(void) = ^{ + a = 1; + }; + foo(); + //这里,a的值被修改为1 ``` -这是完全没有必要的代码,不要这么做,这样的话,KVO代码会被调用两次。KVO在调用存取方法之前总是调用 `willChangeValueForKey:` ,之后总是调用 `didChangeValueForkey:` 。怎么做到的呢?答案是通过 isa 混写(isa-swizzling)。下文《apple用什么方式实现对一个对象的KVO?》会有详述。 -###47. 若一个类有实例变量 `NSString *_foo` ,调用setValue:forKey:时,可以以foo还是 `_foo` 作为key? -都可以。 -###48. KVC的keyPath中的集合运算符如何使用? +这是网上常见的描述。你同样可以在面试中这样回答,但你并没有答到“点子上”。真正的原因,并没有这么“神奇”,而且这种说法也有点牵强。面试官肯定会追问“为什么写操作就生效了?” 实际上需要有几个必要条件: - 1. 必须用在集合对象上或普通对象的集合属性上 - 2. 简单集合运算符有@avg, @count , @max , @min ,@sum, - 3. 格式 @"@sum.age"或 @"集合属性.@max.age" + - "将 auto 从栈 copy 到堆" + - “将 auto 变量封装为结构体(对象)” -###49. KVC和KVO的keyPath一定是属性么? -KVO支持实例变量 -###50. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现? +我会将本问题分下面几个部分,分别作答: -请参考:[《如何自己动手实现 KVO》](http://tech.glowing.com/cn/implement-kvo/) + - 该问题研究的是哪种 `block` 类型? + - 在 `block` 内为什么不能修改 `block` 外部变量 + - 最优解及原理解析 + - 其他几种解法 + - 改外部变量必要条件之"将 auto 从栈 copy 到堆" + - 改外部变量必要条件之“将 auto 变量封装为结构体(对象)” + -###51. apple用什么方式实现对一个对象的KVO? + 该问题研究的是哪种 block 类型? +------------- +今天我们讨论是 `__NSMallocBlock__` (或者叫 `_NSConcreteMallocBlock`,两者是叫法不同,指的是同一个东西)。 -[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)对 KVO 实现的描述: +Block 类型| 环境 +:-------------:|:-------------: +`__NSGlobalBlock__` | 没有访问 auto 变量 +`__NSStackBlock__` | 访问了 auto 变量 +`__NSMallocBlock__` | `__NSStackBlock__` 调用了 copy - > Automatic key-value observing is implemented using a technique called isa-swizzling... When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class ... +每一种类型的 block 调用 copy 后的结果如下所示 -从[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)可以看出:Apple 并不希望过多暴露 KVO 的实现细节。不过,要是借助 runtime 提供的方法去深入挖掘,所有被掩盖的细节都会原形毕露: - > 当你观察一个对象时,一个新的类会被动态创建。这个类继承自该对象的原本的类,并重写了被观察属性的 setter 方法。重写的 setter 方法会负责在调用原 setter 方法之前和之后,通知所有观察对象:值的更改。最后通过 ` isa 混写(isa-swizzling)` 把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。我画了一张示意图,如下所示: +Block 的类 | 副本源的配置存储域| 复制效果 +:-------------:|:-------------:|:-------------: +`_NSConcreteGlobalBlock`| 程序的数据区域 | 什么也不做 +`_NSConcreteStackBlock` | 栈| 从栈复制到堆 +`_NSConcreteMallocBlock`| 堆 | 引用计数增加 -![enter image description here](http://i62.tinypic.com/sy57ur.jpg) - KVO 确实有点黑魔法: +在 ARC 环境下,编译器会根据情况自动将栈上的 block 复制到堆上,比如以下情况: +- block 作为函数返回值时 +- 将 block 赋值给 __strong 指针时 +- block 作为 Cocoa API 中方法名含有 using Block 的方法参数时 +- Block 作为 GCD APIE 的方法参数时 - > Apple 使用了 ` isa 混写(isa-swizzling)`来实现 KVO 。 +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfiwolczn7j30sa0xaq8k.jpg) -下面做下详细解释: +更多细节可以查看: -键值观察通知依赖于 NSObject 的两个方法: `willChangeValueForKey:` 和 `didChangevlueForKey:` 。在一个被观察属性发生改变之前, `willChangeValueForKey:` 一定会被调用,这就 -会记录旧的值。而当改变发生后, `didChangeValueForKey:` 会被调用,继而 `observeValueForKey:ofObject:change:context:` 也会被调用。可以手动实现这些调用,但很少有人这么做。一般我们只在希望能控制回调的调用时机时才会这么做。大部分情况下,改变通知会自动调用。 - 比如调用 `setNow:` 时,系统还会以某种方式在中间插入 `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` 的调用。大家可能以为这是因为 `setNow:` 是合成方法,有时候我们也能看到人们这么写代码: +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfkx49l2xxj30u012bqfs.jpg) + + +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfl31akk5hj30zg0lojz9.jpg) + + 在 `block` 内为什么不能修改 `block` 外部变量 +------------- + + + +为了保证 block 内部能够正常访问外部的变量,block 有一个变量捕获机制。 + + +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfks99t8fej30u017uqf8.jpg) + + + + +首先分析一下为什么不能修改: + + +**Block不允许修改外部变量的值**。Apple这样设计,应该是考虑到了block的特殊性,block 本质上是一个对象,block 的花括号区域是对象内部的一个函数,变量进入 花括号,实际就是已经进入了另一个函数区域---改变了作用域。在几个作用域之间进行切换时,如果不加上这样的限制,变量的可维护性将大大降低。又比如我想在block内声明了一个与外部同名的变量,此时是允许呢还是不允许呢?只有加上了这样的限制,这样的情景才能实现。 + + +所以 Apple 在编译器层面做了限制,如果在 block 内部试图修改 auto 变量(无修饰符),那么直接编译报错。 +你可以把编译器的这种行为理解为:对 block 内部捕获到的 auto 变量设置为只读属性---不允许直接修改。 + +从代码层面进行证明: + +写一段 block 代码: ```Objective-C -- (void)setNow:(NSDate *)aDate { - [self willChangeValueForKey:@"now"]; // 没有必要 - _now = aDate; - [self didChangeValueForKey:@"now"];// 没有必要 +// +// main.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" +typedef void (^CYLBlock)(void); +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + appDelegateClassName = NSStringFromClass([AppDelegate class]); + int age = 10; + CYLBlock block = ^{ + NSLog(@"age is %@", @(age)); + }; + block(); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); } + ``` -这是完全没有必要的代码,不要这么做,这样的话,KVO代码会被调用两次。KVO在调用存取方法之前总是调用 `willChangeValueForKey:` ,之后总是调用 `didChangeValueForkey:` 。怎么做到的呢?答案是通过 isa 混写(isa-swizzling)。第一次对一个对象调用 `addObserver:forKeyPath:options:context:` 时,框架会创建这个类的新的 KVO 子类,并将被观察对象转换为新子类的对象。在这个 KVO 特殊子类中, Cocoa 创建观察属性的 setter ,大致工作原理如下: - ```Objective-C -- (void)setNow:(NSDate *)aDate { - [self willChangeValueForKey:@"now"]; - [super setValue:aDate forKey:@"now"]; - [self didChangeValueForKey:@"now"]; +使用如下命令来查看对应的 C++ 代码: + + + ```shell + xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m + ``` + + 代码如下所示: + +![](https://tva1.sinaimg.cn/large/007S8ZIlly1gffg4w6nrmj30x10u04nr.jpg) + + + + ```Java + +typedef void (*CYLBlock)(void); + +struct __main_block_impl_0 { + struct __block_impl impl; + struct __main_block_desc_0* Desc; + int age; + __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int _age, int flags=0) : age(_age) { + impl.isa = &_NSConcreteStackBlock; + impl.Flags = flags; + impl.FuncPtr = fp; + Desc = desc; + } +}; +static void __main_block_func_0(struct __main_block_impl_0 *__cself) { + int age = __cself->age; // bound by copy + + NSLog((NSString *)&__NSConstantStringImpl__var_folders_2w_wgnctp1932z76770l8lrrrbm0000gn_T_main_0d7ffa_mi_0, ((NSNumber *(*)(Class, SEL, int))(void *)objc_msgSend)(objc_getClass("NSNumber"), sel_registerName("numberWithInt:"), (int)(age))); + } + +static struct __main_block_desc_0 { + size_t reserved; + size_t Block_size; +} __main_block_desc_0_DATA = { 0, sizeof(struct __main_block_impl_0)}; +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; + appDelegateClassName = NSStringFromClass(((Class (*)(id, SEL))(void *)objc_msgSend)((id)objc_getClass("AppDelegate"), sel_registerName("class"))); + int age = 10; + CYLBlock block = ((void (*)())&__main_block_impl_0((void *)__main_block_func_0, &__main_block_desc_0_DATA, age)); + ((void (*)(__block_impl *))((__block_impl *)block)->FuncPtr)((__block_impl *)block); + } + return UIApplicationMain(argc, argv, __null, appDelegateClassName); } +static struct IMAGE_INFO { unsigned version; unsigned flag; } _OBJC_IMAGE_INFO = { 0, 2 }; + ``` -这种继承和方法注入是在运行时而不是编译时实现的。这就是正确命名如此重要的原因。只有在使用KVC命名约定时,KVO才能做到这一点。 -KVO 在实现中通过 ` isa 混写(isa-swizzling)` 把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。这在[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)可以得到印证: - > Automatic key-value observing is implemented using a technique called isa-swizzling... When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class ... +最优解及原理解析 +------------- +说最优解前,先来说一下 -然而 KVO 在实现中使用了 ` isa 混写( isa-swizzling)` ,这个的确不是很容易发现:Apple 还重写、覆盖了 `-class` 方法并返回原来的类。 企图欺骗我们:这个类没有变,就是原本那个类。。。 +其他几种解法 +------------- -但是,假设“被监听的对象”的类对象是 `MYClass` ,有时候我们能看到对 `NSKVONotifying_MYClass` 的引用而不是对 `MYClass` 的引用。借此我们得以知道 Apple 使用了 ` isa 混写(isa-swizzling)`。具体探究过程可参考[ 这篇博文 ](https://www.mikeash.com/pyblog/friday-qa-2009-01-23.html)。 + - 加 static (放在静态存储区/全局初始化区 ) 缺点是会永久存储,内存开销大。 + - 将变量设置为全局变量,缺点也是内存开销大。 -###52. IBOutlet连出来的视图属性为什么可以被设置成weak? +将变量设置为全局变量 -参考链接:[ ***Should IBOutlets be strong or weak under ARC?*** ](http://stackoverflow.com/questions/7678469/should-iboutlets-be-strong-or-weak-under-arc) +![将变量设置为全局变量](https://tva1.sinaimg.cn/large/007S8ZIlly1gfkzpoivkij31470u04qp.jpg) -文章告诉我们: +原理是 block 内外可直接访问全局变量 -> 因为既然有外链那么视图在xib或者storyboard中肯定存在,视图已经对它有一个强引用了。 +![](https://tva1.sinaimg.cn/large/007S8ZIlly1gfkzqxd6vkj31460u07wh.jpg) +加 static (放在静态存储区/全局初始化区) -不过这个回答漏了个重要知识,使用storyboard(xib不行)创建的vc,会有一个叫_topLevelObjectsToKeepAliveFromStoryboard的私有数组强引用所有top level的对象,所以这时即便outlet声明成weak也没关系 +原理是 block 内部对外部auto变量进行指针捕获 -###53. IB中User Defined Runtime Attributes如何使用? +![加 static (放在静态存储区/全局初始化区)](https://tva1.sinaimg.cn/large/007S8ZIlly1gfkzqiy0myj314a0u0b29.jpg) -它能够通过KVC的方式配置一些你在interface builder 中不能配置的属性。当你希望在IB中作尽可能多得事情,这个特性能够帮助你编写更加轻量级的viewcontroller +下面介绍下最优解 + - 使用 `__block` 关键字 -###54. 如何调试BAD_ACCESS错误 +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gfks7378ktj30sk1auqby.jpg) - 1. 重写object的respondsToSelector方法,现实出现EXEC_BAD_ACCESS前访问的最后一个object - 2. 通过 Zombie -![enter image description here](http://i.stack.imgur.com/ZAdi0.png) +改外部变量必要条件之"将 auto 从栈 copy 到堆" +------------- - 3. 设置全局断点快速定位问题代码所在行 - 4. Xcode 7 已经集成了BAD_ACCESS捕获功能:**Address Sanitizer**。 -用法如下:在配置中勾选✅Enable Address Sanitizer - ![enter image description here](https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Art/xc7-asan_2x.png) +之所以要放堆里,原因是栈中内存管理是由系统管理,出了作用域就会被回收, 堆中才是可以由我们程序员管理。 -###55. lldb(gdb)常用的调试命令? +这里先说结论: - - breakpoint 设置断点定位到某一个函数 - - n 断点指针下一步 - - po打印对象 +> 在 ARC 中无论是否添加 `__block` ,block 中的 auto 变量都会被从栈上 copy 到堆上。 -更多 lldb(gdb) 调试命令可查看 +下面证明下该结论: +先认识一下 `__block` 修饰符: - 1. [ ***The LLDB Debugger*** ](http://lldb.llvm.org/lldb-gdb.html); - 2. 苹果官方文档:[ ***iOS Debugging Magic*** ](https://developer.apple.com/library/ios/technotes/tn2239/_index.html)。 + - `__block` 可以用于解决 block 内部无法修改 auto 变量值的问题 + - `__block` 不能修饰全局变量、静态、变量(static) +编译器会将 `__block` 变量包装成一个对象 ----------- + ```Objective-C +// +// main.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" +typedef void (^CYLBlock)(void); +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + appDelegateClassName = NSStringFromClass([AppDelegate class]); + __block int age = 10;//__block 可替换为 __block auto (auto 可省略) + CYLBlock block = ^{ + age = 20; + NSLog(@"age is %@", @(age)); + }; + block(); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} + + ``` + +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlly1gffiapgoefj31420u0b29.jpg) + + + + + +下面用代码证明下外部变量被 copy 到堆上: + +我们可以打印下内存地址来进行验证: + + ```Objective-C + __block int a = 0; + NSLog(@"定义前:%p", &a); //栈区 + void (^foo)(void) = ^{ + a = 1; + NSLog(@"block内部:%p", &a); //堆区 + }; + NSLog(@"定义后:%p", &a); //堆区 + foo(); + ``` + + ```Objective-C +2016-05-17 02:03:33.559 LeanCloudChatKit-iOS[1505:713679] 定义前:0x16fda86f8 +2016-05-17 02:03:33.559 LeanCloudChatKit-iOS[1505:713679] 定义后:0x155b22fc8 +2016-05-17 02:03:33.559 LeanCloudChatKit-iOS[1505:713679] block内部: 0x155b22fc8 + ``` + + +“定义后”和“block内部”两者的内存地址是一样的,我们都知道 block 内部的变量会被 copy 到堆区,“block内部”打印的是堆地址,因而也就可以知道,“定义后”打印的也是堆的地址。 + + + 那么如何证明“block内部”打印的是堆地址? + + 把三个16进制的内存地址转成10进制就是: + + 1. 定义后前:6171559672 + 2. block内部:5732708296 + 3. 定义后:5732708296 + +中间相差438851376个字节,也就是 418.5M 的空间,因为堆地址要小于栈地址,又因为 iOS 中主线程的栈区内存只有1M,Mac也只有8M,既然 iOS 中一条线程最大的栈空间是1M,显然a已经是在堆区了。 + +这也证实了:a 在定义前是栈区,但只要进入了 block 区域,就变成了堆区。 + +从代码角度讲: + + + + ```Objective-C +__block int a = 0; // 【a 会被编译成一个结构体,a struct 里会有一个 a 存储 0】 +NSLog(@"定义前:%p", &a); //栈区 +void (^foo)(void) = ^{ +a = 1; +NSLog(@"block内部:%p", &a); //堆区 +}; + ``` + + +这里会执行 copy 操作,下面是编译后的 copy 方法,a struct 会被拷贝到堆里,自然里面的 a struct->a 也会拷贝到堆里 + + ```Objective-C +static void __main_block_copy_0(struct __main_block_impl_0*dst, struct __main_block_impl_0*src) {_Block_object_assign((void*)&dst->a, (void*)src->a, 8/*BLOCK_FIELD_IS_BYREF*/);} + ``` + + +同理可证: + + > 在 ARC 中无论是否添加 `__block` ,block 中的 auto 变量都会被从栈上 copy 到堆上。 + + + 证明代码如下: + + ```Objective-C + __block int a = 0; + int b = 1; + NSLog(@"定义前外部:a:%p", &a); //栈区 + NSLog(@"定义前外部:b:%p", &b); //栈区 + void (^foo)(void) = ^{ + a = 1; + NSLog(@"block内部:a:%p", &a); //堆区 + NSLog(@"block内部:b:%p", &b); //堆区 + }; + NSLog(@"定义后外部:a:%p", &a); //堆区 + NSLog(@"定义后外部:b:%p", &b); //栈区 + foo(); + ``` + +打印是: + + + ```Objective-C +2020-06-08 12:59:43.633180+0800 Demo_38_block_edit_var[35375:7813379] 定义前外部:a:0x7ffee3d81078 +2020-06-08 12:59:43.633328+0800 Demo_38_block_edit_var[35375:7813379] 定义前外部:b:0x7ffee3d8105c +2020-06-08 12:59:43.633535+0800 Demo_38_block_edit_var[35375:7813379] 定义后外部:a:0x600003683578 +2020-06-08 12:59:43.633640+0800 Demo_38_block_edit_var[35375:7813379] 定义后外部:b:0x7ffee3d8105c +2020-06-08 12:59:43.633754+0800 Demo_38_block_edit_var[35375:7813379] block内部:a:0x600003683578 +2020-06-08 12:59:43.633859+0800 Demo_38_block_edit_var[35375:7813379] block内部:b:0x6000038ff628 + + ``` + + `__block` 关键字修饰后,int类型也从4字节变成了32字节,这是 Foundation 框架 malloc 出来的。这也同样能证实上面的结论。(PS:居然比 NSObject alloc 出来的 16 字节要多一倍)。 + + + +改外部变量必要条件之“将 auto 变量封装为结构体(对象)” +------------- + + + +正如上文提到的: + + > 我们都知道:**Block不允许修改外部变量的值**,这里所说的外部变量的值,指的是栈中 auto 变量。`__block` 作用是将 auto 变量封装为结构体(对象),在结构体内部新建一个同名 auto 变量,block 内截获该结构体的指针,在 block 中使用自动变量时,使用指针指向的结构体中的自动变量。于是就可以达到修改外部变量的作用。 + +如果把编译器的“不允许修改外部”这种行为理解为:对 block 内部捕获到的 auto 变量设置为只读属性---不允许直接修改。 + +那么 `__block` 的作用就是创建了一个函数,允许你通过这个函数修改“对外只读”的属性。 + +属性对外只读,但是对外提供专门的修改值的方法,在开发中这种做法非常常见。 + +自动变量生成的结构体: + + + ```Objective-C +struct __Block_byref_c_0 { + void *__isa; +__Block_byref_c_0 *__forwarding; + int __flags; + int __size; +//自动变量 + int c; +}; + ``` + + +block: + + ```Objective-C +struct __main_block_impl_0 { + struct __block_impl impl; + struct __main_block_desc_0* Desc; +//截获的结构体指针 + __Block_byref_c_0 *c; // by ref + __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, __Block_byref_c_0 *_c, int flags=0) : c(_c->__forwarding) { + impl.isa = &_NSConcreteStackBlock; + impl.Flags = flags; + impl.FuncPtr = fp; + Desc = desc; + } +}; + ``` + +block中使用自动变量: + + + ```Objective-C +static int __main_block_func_0(struct __main_block_impl_0 *__cself, int a) { +//指针 + __Block_byref_c_0 *c = __cself->c; // bound by ref + (c->__forwarding->c) = 11; + a = a + (c->__forwarding->c); + return a; +} + ``` + + + +理解到这是因为添加了修改只读属性的方法,而非所谓的“写操作生效”,这一点至关重要,要不然你如何解释下面这个现象: + +以下代码编译可以通过,并且在 block 中成功将 a 的从 Tom 修改为 Jerry。 + + ```Objective-C + NSMutableString *a = [NSMutableString stringWithString:@"Tom"]; + void (^foo)(void) = ^{ + a.string = @"Jerry"; + //a = [NSMutableString stringWithString:@"William"]; //编译报错 + }; + foo(); + ``` + + + + 同理如下操作也是允许的: + + + ```Objective-C +// +// main.m +// Demo_38_block_edit_var +// +// Created by chenyilong on 2020/6/3. +// Copyright © 2020 ChenYilong. All rights reserved. +// + +#import +#import "AppDelegate.h" +typedef void (^CYLBlock)(void); +int main(int argc, char * argv[]) { + NSString * appDelegateClassName; + @autoreleasepool { + appDelegateClassName = NSStringFromClass([AppDelegate class]); + NSMutableArray *array = [[NSMutableArray array] init]; + CYLBlock block = ^{ + [array addobject: 0"123"]; + array = nil; //编译报错 + }; + block(); + } + return UIApplicationMain(argc, argv, nil, appDelegateClassName); +} + + ``` + + +以上都是在使用变量而非修改变量,所以不会编译报错。 + +![](https://tva1.sinaimg.cn/large/007S8ZIlly1gfl28fzqzhj31k40m2amd.jpg) + + +### 39. 使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题? + +注:39题对应Demo 请在仓库中查看以 Demo39 开头的工程。 + +出题只举了一个例子,我们多举几个例子: + + + ```Objective-C +//判断如下几种情况,是否有循环引用? 是否有内存泄漏? +//[2023-07-28 05:33:46] @iTeaTime(技术清谈)@ChenYilong + + //情况❶ UIViewAnimationsBlock +[UIView animateWithDuration:duration animations:^{ [self.superview layoutIfNeeded]; }]; + + //情况❷ NSNotificationCenterBlock +[[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification * notification) { + self.someProperty = xyz; }]; + + //情况❸ NSNotificationCenterIVARBlock + _observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" + object:nil + queue:nil + usingBlock:^(NSNotification *note) { + [self dismissModalViewControllerAnimated:YES]; + }]; + + //情况❹ GCDBlock + dispatch_group_async(self.operationGroup, self.serialQueue, ^{ + [self doSomething]; + }); + +//情况❺ NSOperationQueueBlock +[[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; + +//情况❻ Swift Concurrent +Task { + print(self.title ?? "") +} +//情况❼ Swift Concurrent +self.updateTask = Task { + print(self.title ?? "") +} + ``` + + +情况 | 循环引用 | 内存泄漏 +:-------------:|:-------------:|:-------------: +情况 1 |不会循环引用 | 不会发生内存泄漏 +情况 2 |不会循环引用 | 会发生内存泄漏 +情况 3 |不会循环引用 |会发生内存泄漏 +情况 4 |不会循环引用 |不会发生内存泄漏 +情况 5 |不会循环引用 |不会发生内存泄漏 +情况 6 |不会循环引用 |不会发生内存泄漏 +情况 7 |会循环引用 |会发生内存泄漏 + +1. 情况 1: 动画结束后,引用自动解除,不会有循环引用和内存泄漏。 +2. 情况 2: 通知中心持有 block 和 self,如果没有手动移除观察者,会导致内存泄漏,但是并没有循环引用。 +3. 情况 3: NSNotificationCenter 持有 block,而 block 强引用了 self,但 self 没有强引用 block 或 observer,所以没有形成循环引用。但如果没有在适当的时机移除观察者,会导致内存泄漏。 +4. 情况 4: GCD 任务结束后,引用自动解除,没有循环引用和内存泄漏。 +5. 情况 5: mainQueue 并不持有 block,不会形成循环引用,任务完成后就会销毁,不会导致内存泄漏。 +6. 情况 6: Swift 的 Concurrent 特性,在 Task 结束后自动解除引用,没有循环引用和内存泄漏。 +7. 情况 7: self 强引用 Task,Task 强引用 self,形成循环引用,导致内存泄漏。 + + + + +情况一: + +系统的某些block api中,比如 `UIView` 的 `block` 版本写动画时不需要考虑循环引用的问题,但也有一些系统 api 需要考虑内存泄漏的问题。 + +其中 `UIView` 的 `block` 版本写动画时不需要考虑虑循环引用的原因是: + +比如典型的代码是这样: + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + //思考:是否有内存泄漏?是否有循环引用? +[UIView animateWithDuration:duration animations:^{ [self.superview layoutIfNeeded]; }]; + ``` + + 其中 `block` 会立即执行,所以并不会持有 `block` 。 其中 `duration` 延迟时间并不能决定 `block` 执行的时机, `block` 始终是瞬间执行。 + + + 这里涉及了 `CoreAnimation` (核心动画)相关的知识: + + 首先分清下面几个结构概念: + + - UIView 层 + - Layer 层 + - data 数据层 + + 其中 + + - UIView 层的`block` 仅仅是提供了类似快照 data 的变化。 + - 当真正执行 `Animation` 动画时才会将“原有状态”与“执行完 `block` 的状态”做一个差值,来去做动画。 + +这个问题关于循环引用的部分已经解答完毕,下面我们来扩展一下,探究一下系统 API 相关的内存泄漏问题。 + + +------------- + +情况二: + + + + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + //思考:是否有内存泄漏?是否有循环引用? +[[NSNotificationCenter defaultCenter] addObserverForName:@"someNotification" + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification * notification) { + self.someProperty = xyz; }]; + ``` + + 情况三: + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + //思考:是否有内存泄漏?是否有循环引用? + _observer = [[NSNotificationCenter defaultCenter] addObserverForName:@"testKey" + object:nil + queue:nil + usingBlock:^(NSNotification *note) { + [self dismissModalViewControllerAnimated:YES]; + }]; + ``` + + +情况四: + +而下面的代码虽然有类似的结构但并不存在内存泄漏: + + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + //思考:是否有内存泄漏?是否有循环引用? + dispatch_group_async(self.operationGroup, self.serialQueue, ^{ + [self doSomething]; + }); + ``` + + +那么为什么情况二 `NSNotificationCenter` 的代码会有内存泄漏问题呢? + + +~~我之前的理解: self --> _observer --> block --> self 显然这也是一个循环引用。(对循环引用的成因解释有误,详见issue#73 https://github.com/ChenYilong/iOSInterviewQuestions/issues/73 )~~ + + +其实和循环引用没有关系;这里 `block` 强引用了 `self` , 但是 `self` 并没有强引用`block`; 所以没有循环引用。 + +情况二这里出现内存泄漏问题实际上是因为: + + - `[NSNoficationCenter defaultCenter]` 持有了 `block` + - 这个 `block` 持有了 `self`; + - 而 `[NSNoficationCenter defaultCenter]` 是一个单例,因此这个单例持有了 `self`, 从而导致 `self` 不被释放。 + +![https://github.com/ChenYilong](https://tva1.sinaimg.cn/large/007S8ZIlgy1gfcrlp0gn0j30z40lwag6.jpg) + +这个结论可参考参考issue中讨论:[《第39题的一些疑问 #138》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/138) + + + +![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gfd5t6s8n8j31c00u0u0y.jpg) + +以下来自[APPLE API文档 -- Instance Method +addObserverForName:object:queue:usingBlock:]( https://developer.apple.com/documentation/foundation/nsnotificationcenter/1411723-addobserverforname) : + +> The block is copied by the notification center and (the copy) held until the observer registration is removed. + +但整个过程中并没有循环引用,因为 `self` 没有持有 `NotificationCenter` , 也没有持有 `block`。即使 `self` 持有这个`Observer`, 并没有任何证据或者文档标明 `Observer` 会持有这个`block`, 所以我之前的解释是不正确的。这里 Observer 应该是不持有 block 的,因为只需要 `NSNotificationCenter` 同时持有 `Observer` 和 `block` 即可实现 `API` 所提供的功能, 这里也不存在循环引用。 + + + +其中情况三: + +不存在循环引用 + + +_observer并不会持有block,而是由NSNotificationCenter持有。因此,这里同样没有形成循环引用,但是如果没有在合适的时机移除监听,将会导致内存泄漏。 + + + + +在情况三中,NSNotificationCenter默认不会自动移除观察者,所以需要在合适的时机手动移除,以避免内存泄漏。通常来说,我们会在控制器的 `dealloc` 方法或者 `viewDidDisappear` 方法中移除观察者,具体选择哪个方法取决于你的业务需求。 + +以下是如何在 Objective-C 中解决这个问题的代码示例: + +```Objective-C +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self.observer]; +} + +@end + +``` + +比如我们可以首先在 `viewDidLoad` 中注册了一个观察者,并将其保存在一个属性中。然后,在 `dealloc` 方法中,我们移除了这个观察者,以确保它不会在对象销毁后继续存在。 + + + +![https://github.com/ChenYilong](https://i.loli.net/2020/06/02/pDLde8Hgkt4X69u.gif) + +![](https://tva1.sinaimg.cn/large/007S8ZIlgy1gfd5v5laamj31hc0u0dvv.jpg) + +根据上面的原理,思考一下情况五: + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + //思考:是否有内存泄漏?是否有循环引用? +[[NSOperationQueue mainQueue] addOperationWithBlock:^{ self.someProperty = xyz; }]; + ``` + + +在 Gnustep 源码中可以证实 +`[NSOperationQueue mainQueue]` 是单例,然后参考 `addOperationWithBlock` 源码可知: + +虽然是单例,但它并不持有 `block`,不会造成循环引用,传递完成后就销毁了,不会造成无法释放的内存泄漏问题。 + +参考issue中讨论:[《第39题的一些疑问 #138》](https://github.com/ChenYilong/iOSInterviewQuestions/issues/138) + +------------- + +针对情况四 `GCD` 的问题,实际上,self确实持有了queue; 而block也确实持有了self; 但是并没有证据或者文档表明这个queue一定会持有block; 而且即使queue持有了block, 在block执行完毕的时候,由于需要将任务从队列中移除,因此完全可以解除queue对block的持有关系,所以实际上这里也不存在循环引用。下面的测试代码可以验证这一点(其中`CYLUser`有一个属性name): + + + ```Objective-C + //@iTeaTime(技术清谈)@ChenYilong + CYLUser *user = [[CYLUser alloc] init]; + dispatch_group_async(self.operationGroup, self.serialQueue, ^{ + NSLog(@"dispatch_async demoGCDRetainCycle"); + [self.testList addObject:@"demoGCDRetainCycle2"]; + user.name = @"测试"; + NSLog(@"Detecor 's name: %@", user.name); + }); + ``` + + +那么会看到先打印出 `dispatch_async demoGCDRetainCycle`, 然后打印出这个 `user` 的name, 然后执行 `CYLUser` 的 `-dealloc` 方法。也就是说在这个block执行完毕的时候,仅由这个block持有的 `user`就会被释放了, 从而验证这个 `block` 都被释放了,即使对应的 `queue` 还存在。 + + +什么时候这里会有循环引用呢?仍然是当 `self` 持有 `block` 的时候,例如这个 `block`是 `self` 的一个 `strong` 的属性,但这就和 `GCD` 的调用无关了,这个时候无论是否调用 `GCD` 的 `API` 都会有循环引用的。 + + +检测代码中是否存在循环引用/内存泄漏问题, + +- 可用 Xcode-instruments-Leak 工具查看 +- 也可以使用可以使用 Xcode 的 Debug 工具--内存图查看,使用方法 +- ![https://github.com/ChenYilong](https://i.loli.net/2020/06/02/pDLde8Hgkt4X69u.gif) +- 使用 Facebook 开源的一个检测工具 [***FBRetainCycleDetector***](https://github.com/facebook/FBRetainCycleDetector) 。 + + + +**情况6:** +```swift +Task { + print(self.title ?? "") +} +``` + +在这种情况下,在闭包中使用了`self`,因为但这个`Task`并没有被任何对象强引用,因此在`Task`执行结束后会被销毁,此时并不会存在循环引用或内存泄漏问题。 + + +但也需要注意, 在某些极端情况下,如果这个任务在类实例被销毁之后仍然存活,或者这个任务在闭包中捕获了对`self`的强引用并且`self`也强引用了这个任务,那么可能存在内存泄漏。但这并不是这段代码的问题,因为单从本段代码来看`Task`并没有被任何对象强引用。 + +以下是一个极端的问题场景,展示了并发任务如何可能引发内存泄漏: + + +```swift +class MyClass { + var title: String? + var task: Task.Handle? + + init() { + title = "Hello, World!" + task = Task { + while true { + print(self.title ?? "") + await Task.sleep(1_000_000_000) // sleep for 1 second + } + } + } + + deinit { + task?.cancel() + } +} +``` + +在这个例子中,`MyClass`实例创建了一个无限循环的并发任务,这个任务捕获并持有了对`self`的强引用。由于任务是无限循环的,所以它将一直持有对`self`的强引用,即使`MyClass`实例被销毁。这就导致了内存泄漏,因为`MyClass`实例将永远不会被正确的销毁。 + +解决这个问题的方法是在`deinit`方法中取消任务。然而,这仍然需要你在`MyClass`实例被销毁前取消任务,否则内存泄漏将会发生。 + +再次强调,原始代码示例(情况6)并不会引起这个问题,因为任务在执行结束后就会被销毁,而且它没有被任何对象强引用。这个示例仅仅是为了展示一个可能的内存泄漏场景。 + + + + +**情况7:** +```swift +self.updateTask = Task { + print(self.title ?? "") +} +``` + +在这个例子中,`self`强引用了`updateTask`,而`updateTask`的闭包中又捕获并持有对`self`的强引用,形成了一个强引用循环,导致内存泄漏。要解决这个问题,可以使用捕获列表创建对`self`的 `weak` (弱引用) 或 `unowned` (无主引用),以打破这个循环,例如: + +```swift +self.updateTask = Task { [weak self] in + print(self?.title ?? "") +} +``` + +并且可以在必要时, cancel 并设置为 nil: + + ```swift +func applicationDidEnterBackground(_ application: UIApplication) { + self.updateTask?.cancel() + self.updateTask = nil +} + +func applicationWillEnterForeground(_ application: UIApplication) { + self.updateTask = Task { [weak self] in + guard let self = self else { return } + for i in 1...10 { + if Task.isCancelled { + self.updateTask = nil + break + } + print(self.title ?? "") + await Task.sleep(1_000_000_000) // sleep for 1 second + } + } +} + +deinit { + updateTask?.cancel() + updateTask = nil +} + + ``` + +结合在情况6和7, 总的来说,应始终注意在闭包和并发任务中可能存在的强引用循环,以及它们可能导致的内存泄漏问题。 并可通过使用 `weak` (弱引用) 或 `unowned` (无主引用),或在适当的时候取消任务,来避免这些问题。 + +### 40. GCD的队列(`dispatch_queue_t`)分哪两种类型? + + + 1. 串行队列Serial Dispatch Queue + 2. 并发队列Concurrent Dispatch Queue + +### 41. 如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图) + +使用Dispatch Group追加block到Global Group Queue,这些block如果全部执行完毕,就会执行Main Dispatch Queue中的结束处理的block。 + +```Objective-C +dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); +dispatch_group_t group = dispatch_group_create(); +dispatch_group_async(group, queue, ^{ /*加载图片1 */ }); +dispatch_group_async(group, queue, ^{ /*加载图片2 */ }); +dispatch_group_async(group, queue, ^{ /*加载图片3 */ }); +dispatch_group_notify(group, dispatch_get_main_queue(), ^{ + // 合并图片 +}); +``` +### 42. `dispatch_barrier_async`的作用是什么? + 在并发队列中,为了保持某些任务的顺序,需要等待一些任务完成后才能继续进行,使用 barrier 来等待之前任务完成,避免数据竞争等问题。 + `dispatch_barrier_async` 函数会等待追加到Concurrent Dispatch Queue并发队列中的操作全部执行完之后,然后再执行 `dispatch_barrier_async` 函数追加的处理,等 `dispatch_barrier_async` 追加的处理执行结束之后,Concurrent Dispatch Queue才恢复之前的动作继续执行。 + +打个比方:比如你们公司周末跟团旅游,高速休息站上,司机说:大家都去上厕所,速战速决,上完厕所就上高速。超大的公共厕所,大家同时去,程序猿很快就结束了,但程序媛就可能会慢一些,即使你第一个回来,司机也不会出发,司机要等待所有人都回来后,才能出发。 `dispatch_barrier_async` 函数追加的内容就如同 “上完厕所就上高速”这个动作。 + +(注意:使用 `dispatch_barrier_async` ,该函数只能搭配自定义并发队列 `dispatch_queue_t` 使用。不能使用: `dispatch_get_global_queue` ,否则 `dispatch_barrier_async` 的作用会和 `dispatch_async` 的作用一模一样。 ) + + +### 43. 苹果为什么要废弃`dispatch_get_current_queue`? + +`dispatch_get_current_queue`函数的行为常常与开发者所预期的不同。 +由于派发队列是按层级来组织的,这意味着排在某条队列中的块会在其上级队列里执行。 +队列间的层级关系会导致检查当前队列是否为执行同步派发所用的队列这种方法并不总是奏效。`dispatch_get_current_queue`函数通常会被用于解决由不可以重入的代码所引发的死锁,然后能用此函数解决的问题,通常也可以用"队列特定数据"来解决。 + +### 44. 以下代码运行结果如何? + + + + ```Objective-C + - (void)viewDidLoad { + [super viewDidLoad]; + NSLog(@"1"); + dispatch_sync(dispatch_get_main_queue(), ^{ + NSLog(@"2"); + }); + NSLog(@"3"); + } + ``` + + +只输出:1 。发生主线程锁死。 + + +### 45. addObserver:forKeyPath:options:context:各个参数的作用分别是什么,observer中需要实现哪个方法才能获得KVO回调? + +```Objective-C +// 添加键值观察 +/* +1 观察者,负责处理监听事件的对象 +2 观察的属性 +3 观察的选项 +4 上下文 +*/ +[self.person addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:@"Person Name"]; +``` +observer中需要实现一下方法: + + + +```Objective-C +// 所有的 kvo 监听到事件,都会调用此方法 +/* + 1. 观察的属性 + 2. 观察的对象 + 3. change 属性变化字典(新/旧) + 4. 上下文,与监听的时候传递的一致 + */ +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context; +``` + +### 46. 如何手动触发一个value的KVO + +所谓的“手动触发”是区别于“自动触发”: + +自动触发是指类似这种场景:在注册 KVO 之前设置一个初始值,注册之后,设置一个不一样的值,就可以触发了。 + +想知道如何手动触发,必须知道自动触发 KVO 的原理: + +键值观察通知依赖于 NSObject 的两个方法: `willChangeValueForKey:` 和 `didChangevlueForKey:` 。在一个被观察属性发生改变之前, `willChangeValueForKey:` 一定会被调用,这就 +会记录旧的值。而当改变发生后, `observeValueForKey:ofObject:change:context:` 会被调用,继而 `didChangeValueForKey:` 也会被调用。如果可以手动实现这些调用,就可以实现“手动触发”了。 + +那么“手动触发”的使用场景是什么?一般我们只在希望能控制“回调的调用时机”时才会这么做。 + +具体做法如下: + + + +如果这个 `value` 是 表示时间的 `self.now` ,那么代码如下:最后两行代码缺一不可。 + +相关代码已放在仓库里。 + + ```Objective-C +// .m文件 +// Created by https://github.com/ChenYilong +// 微博@iOS程序犭袁(http://weibo.com/luohanchenyilong/). +// 手动触发 value 的KVO,最后两行代码缺一不可。 + +//@property (nonatomic, strong) NSDate *now; +- (void)viewDidLoad { + [super viewDidLoad]; + _now = [NSDate date]; + [self addObserver:self forKeyPath:@"now" options:NSKeyValueObservingOptionNew context:nil]; + NSLog(@"1"); + [self willChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"2"); + [self didChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"4"); +} + ``` + +但是平时我们一般不会这么干,我们都是等系统去“自动触发”。“自动触发”的实现原理: + + + > 比如调用 `setNow:` 时,系统还会以某种方式在中间插入 `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` 的调用。 + + +大家可能以为这是因为 `setNow:` 是合成方法,有时候我们也能看到有人这么写代码: + + ```Objective-C +- (void)setNow:(NSDate *)aDate { + [self willChangeValueForKey:@"now"]; // 没有必要 + _now = aDate; + [self didChangeValueForKey:@"now"];// 没有必要 +} + ``` + +这完全没有必要,不要这么做,这样的话,KVO代码会被调用两次。KVO在调用存取方法之前总是调用 `willChangeValueForKey:` ,之后总是调用 `didChangeValueForkey:` 。怎么做到的呢?答案是通过 isa 混写(isa-swizzling)。下文《apple用什么方式实现对一个对象的KVO?》会有详述。 + + +其中会触发两次,具体原因可以查看文档[Apple document : Key-Value Observing Programming Guide-Manual Change Notification]( https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#//apple_ref/doc/uid/20002178-SW3 "") ,主要是 `+automaticallyNotifiesObserversForKey:` 类方法了。 + + + +参考链接: [Manual Change Notification---Apple 官方文档](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#//apple_ref/doc/uid/20002178-SW3) + +### 47. 若一个类有实例变量 `NSString *_foo` ,调用setValue:forKey:时,可以以foo还是 `_foo` 作为key? +都可以。 +### 48. KVC的keyPath中的集合运算符如何使用? + + 1. 必须用在集合对象上或普通对象的集合属性上 + 2. 简单集合运算符有@avg, @count , @max , @min ,@sum, + 3. 格式 @"@sum.age"或 @"集合属性.@max.age" + +### 49. KVC和KVO的keyPath一定是属性么? + +KVC 支持实例变量,KVO 只能手动支持[手动设定实例变量的KVO实现监听](https://yq.aliyun.com/articles/30483) + +### 50. 如何关闭默认的KVO的默认实现,并进入自定义的KVO实现? + + +请参考: + + 1. [《如何自己动手实现 KVO》](http://tech.glowing.com/cn/implement-kvo/) + 2. [**KVO for manually implemented properties**]( http://stackoverflow.com/a/10042641/3395008 ) + +### 51. apple用什么方式实现对一个对象的KVO? + + + +[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)对 KVO 实现的描述: + + > Automatic key-value observing is implemented using a technique called isa-swizzling... When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class ... + +从[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)可以看出:Apple 并不希望过多暴露 KVO 的实现细节。不过,要是借助 runtime 提供的方法去深入挖掘,所有被掩盖的细节都会原形毕露: + + > 当你观察一个对象时,一个新的类会被动态创建。这个类继承自该对象的原本的类,并重写了被观察属性的 setter 方法。重写的 setter 方法会负责在调用原 setter 方法之前和之后,通知所有观察对象:值的更改。最后通过 ` isa 混写(isa-swizzling)` 把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。我画了一张示意图,如下所示: + + +

+ + + KVO 确实有点黑魔法: + + + > Apple 使用了 ` isa 混写(isa-swizzling)`来实现 KVO 。 + + +下面做下详细解释: + +键值观察通知依赖于 NSObject 的两个方法: `willChangeValueForKey:` 和 `didChangevlueForKey:` 。在一个被观察属性发生改变之前, `willChangeValueForKey:` 一定会被调用,这就会记录旧的值。而当改变发生后, `observeValueForKey:ofObject:change:context:` 会被调用,继而 `didChangeValueForKey:` 也会被调用。可以手动实现这些调用,但很少有人这么做。一般我们只在希望能控制回调的调用时机时才会这么做。大部分情况下,改变通知会自动调用。 + + 比如调用 `setNow:` 时,系统还会以某种方式在中间插入 `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` 的调用。大家可能以为这是因为 `setNow:` 是合成方法,有时候我们也能看到有人这么写代码: + + ```Objective-C +- (void)setNow:(NSDate *)aDate { + [self willChangeValueForKey:@"now"]; // 没有必要 + _now = aDate; + [self didChangeValueForKey:@"now"];// 没有必要 +} + ``` + +这完全没有必要,不要这么做,这样的话,KVO代码会被调用两次。KVO在调用存取方法之前总是调用 `willChangeValueForKey:` ,之后总是调用 `didChangeValueForkey:` 。怎么做到的呢?答案是通过 isa 混写(isa-swizzling)。第一次对一个对象调用 `addObserver:forKeyPath:options:context:` 时,框架会创建这个类的新的 KVO 子类,并将被观察对象转换为新子类的对象。在这个 KVO 特殊子类中, Cocoa 创建观察属性的 setter ,大致工作原理如下: + + ```Objective-C +- (void)setNow:(NSDate *)aDate { + [self willChangeValueForKey:@"now"]; + [super setValue:aDate forKey:@"now"]; + [self didChangeValueForKey:@"now"]; +} + ``` +这种继承和方法注入是在运行时而不是编译时实现的。这就是正确命名如此重要的原因。只有在使用KVC命名约定时,KVO才能做到这一点。 + +KVO 在实现中通过 ` isa 混写(isa-swizzling)` 把这个对象的 isa 指针 ( isa 指针告诉 Runtime 系统这个对象的类是什么 ) 指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。这在[Apple 的文档](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOImplementation.html)可以得到印证: + + > Automatic key-value observing is implemented using a technique called isa-swizzling... When an observer is registered for an attribute of an object the isa pointer of the observed object is modified, pointing to an intermediate class rather than at the true class ... + + +然而 KVO 在实现中使用了 ` isa 混写( isa-swizzling)` ,这个的确不是很容易发现:Apple 还重写、覆盖了 `-class` 方法并返回原来的类。 企图欺骗我们:这个类没有变,就是原本那个类。。。 + +但是,假设“被监听的对象”的类对象是 `MYClass` ,有时候我们能看到对 `NSKVONotifying_MYClass` 的引用而不是对 `MYClass` 的引用。借此我们得以知道 Apple 使用了 ` isa 混写(isa-swizzling)`。具体探究过程可参考[ 这篇博文 ](https://www.mikeash.com/pyblog/friday-qa-2009-01-23.html)。 + + +那么 `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` 这三个方法的执行顺序是怎样的呢? + + `wilChangeValueForKey:` 、 `didChangeValueForKey:` 很好理解,`observeValueForKeyPath:ofObject:change:context:` 的执行时机是什么时候呢? + + 先看一个例子: + +代码已放在仓库里。 + + ```Objective-C +- (void)viewDidLoad { + [super viewDidLoad]; + [self addObserver:self forKeyPath:@"now" options:NSKeyValueObservingOptionNew context:nil]; + NSLog(@"1"); + [self willChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"2"); + [self didChangeValueForKey:@"now"]; // “手动触发self.now的KVO”,必写。 + NSLog(@"4"); +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + NSLog(@"3"); +} + + ``` + + + +如果单单从下面这个例子的打印上, + +顺序似乎是 `wilChangeValueForKey:` 、 `observeValueForKeyPath:ofObject:change:context:` 、 `didChangeValueForKey:` 。 + +其实不然,这里有一个 `observeValueForKeyPath:ofObject:change:context:` , 和 `didChangeValueForKey:` 到底谁先调用的问题:如果 `observeValueForKeyPath:ofObject:change:context:` 是在 `didChangeValueForKey:` 内部触发的操作呢? 那么顺序就是: `wilChangeValueForKey:` 、 `didChangeValueForKey:` 和 `observeValueForKeyPath:ofObject:change:context:` + +不信你把 `didChangeValueForKey:` 注视掉,看下 `observeValueForKeyPath:ofObject:change:context:` 会不会执行。 + +了解到这一点很重要,正如 [46. 如何手动触发一个value的KVO](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md#46-如何手动触发一个value的kvo) 所说的: + +“手动触发”的使用场景是什么?一般我们只在希望能控制“回调的调用时机”时才会这么做。 + +而“回调的调用时机”就是在你调用 `didChangeValueForKey:` 方法时。 + +### 52. IBOutlet连出来的视图属性为什么可以被设置成weak? + +参考链接:[ ***Should IBOutlets be strong or weak under ARC?*** ](http://stackoverflow.com/questions/7678469/should-iboutlets-be-strong-or-weak-under-arc) + +文章告诉我们: + +> 因为既然有外链那么视图在xib或者storyboard中肯定存在,视图已经对它有一个强引用了。 + + +不过这个回答漏了个重要知识,使用storyboard(xib不行)创建的vc,会有一个叫`_topLevelObjectsToKeepAliveFromStoryboard` 的私有数组强引用所有 top level 的对象,所以这时即便 outlet 声明成weak也没关系 + +如果对本回答有疑问,欢迎参与讨论: + +- [《第52题 IBOutlet连出来的视图属性为什么可以被设置成weak? #51》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/51 ) +- [《关于weak的一个问题 #39》]( https://github.com/ChenYilong/iOSInterviewQuestions/issues/39 ) + +### 53. IB中User Defined Runtime Attributes如何使用? + +它能够通过KVC的方式配置一些你在interface builder 中不能配置的属性。当你希望在IB中作尽可能多得事情,这个特性能够帮助你编写更加轻量级的viewcontroller + +

+ + +### 54. 如何调试BAD_ACCESS错误 + + + 1.启用Zombie对象:Zombie对象可以帮助你跟踪BAD_ACCESS错误,这些错误通常是因为你试图访问已经被释放的对象,也就是野指针。要启用Zombie对象,你需要在Xcode中进行以下操作:点击你的项目名 -> Edit Scheme -> Diagnostics -> 在Memory Management下面勾选✅ Zombie Objects。 + ![https://github.com/ChenYilong](assets/54_How%20to_debug_the_BAD_ACCESS_error_01.jpg) + + +BAD_ACCESS错误通常是因为你尝试访问了一个已经被释放的对象。当你启用Zombie Objects时,系统不会立即释放对象,而是把它变成一个“僵尸对象”。如果你试图访问一个僵尸对象,Xcode会抛出一个异常并告诉你哪个已经被释放的对象被访问了,这样你就可以找出问题所在。 + +注意: + +"Zombie Objects" 主要用于 Objective-C,对 Swift 代码不起作用. 它用于捕获对已经释放的实例发送的消息。在 Objective-C 中,如果你尝试对一个已经被释放的对象发送消息,你将会得到一个运行时错误。启用 "Zombie Objects" 会导致应用在尝试对已经被释放的对象发送消息时停止运行,并在控制台打印出有关该对象的信息,这对于找出程序中的内存问题非常有用。 + +在 Swift 中,Zombie Objects 调试技术不起作用,因为 Swift 在设计时考虑到了内存安全。Swift 的内存管理通过自动引用计数(ARC)来处理,当一个对象不再被需要时,ARC 会释放该对象所使用的内存,以便用于其他目的。也就是说,实例被释放,访问实例的属性或调用其方法是无效的。 + +这意味着,在 Swift 中,一旦一个对象被释放,我们就不能再发送任何消息给它,这就是为什么在 Swift 代码中启用 "Zombie Objects" 选项没有效果的原因。 + +Swift 代码请采用下面的几种方案。 + + 2.设置全局断点快速定位问题代码所在行:在Xcode中设置异常断点可以在异常发生时立即停止代码运行。你可以在Xcode的断点导航器中点击左下角的加号 -> Exception Breakpoint -> Done来添加一个异常断点。 + ![](assets/16909544760924.jpg) + + + + 3.Xcode 7 已经集成了BAD_ACCESS捕获功能:**Address Sanitizer**。 +用法如下:在 Xcode 中点击你的项目名 -> Edit Scheme -> Diagnostics -> ✅勾选Address Sanitizer。

+ + 使用Address Sanitizer:Address Sanitizer是LLVM编译器的一种工具,可以检测各种内存访问错误。它使用了一种名为影子内存的技术来存储内存状态信息。每当你的程序访问内存时,Address Sanitizer都会检查影子内存中的对应项,看看是否存在问题,如读/写已释放的内存,堆缓冲区溢出等。如果有,它会立即停止程序并报告错误。 +![https://github.com/ChenYilong](assets/Screen%20Shot%202023-08-02%20at%2020.15.47.png) + +4.使用Instruments:Instruments是一个动态分析和性能调试工具,它可以帮助你找到BAD_ACCESS错误。你可以在Xcode中的Product菜单下选择Profile来打开Instruments,然后选择Leaks或者Zombies来检查内存问题。 + +除了以上 Xcode 的配置之外, 也可以在改造代码, 来进行辅助, 比如: 重写object的respondsToSelector方法,现实出现EXEC_BAD_ACCESS前访问的最后一个object + +### 55. lldb(gdb)常用的调试命令? + + - breakpoint 设置断点定位到某一个函数 + - n 断点指针下一步 + - po打印对象 + +更多 lldb(gdb) 调试命令可查看 + + + 1. [ ***The LLDB Debugger*** ](http://lldb.llvm.org/lldb-gdb.html); + 2. 苹果官方文档:[ ***iOS Debugging Magic*** ](https://developer.apple.com/library/ios/technotes/tn2239/_index.html)。 + +------- + +点击下图访问上篇: + +

+ +------------- + +Posted by Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) & [公众号@iTeaTime技术清谈](https://mp.weixin.qq.com/s/A4e5h3xgIEh6PInf1Rjqsw) +原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh) + +

-Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) -原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh) \ No newline at end of file diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.h" deleted file mode 100644 index da399d1..0000000 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.h" +++ /dev/null @@ -1,13 +0,0 @@ -// -// SubView.h -// nil对象调用点语法 -// -// Created by https://github.com/ChenYilong on 15/8/30. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. -// - -#import "SuperView.h" - -@interface SubView : SuperView - -@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.m" deleted file mode 100644 index a4c2ddd..0000000 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SubView.m" +++ /dev/null @@ -1,17 +0,0 @@ -// -// SubView.m -// nil对象调用点语法 -// -// Created by https://github.com/ChenYilong on 15/8/30. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. -// - -#import "SubView.h" - -@implementation SubView -@synthesize string = _string; - -- (void)setString:(NSString *)string { - _string = @"subView"; -} -@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.h" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.h" deleted file mode 100644 index aa3a300..0000000 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.h" +++ /dev/null @@ -1,13 +0,0 @@ -// -// SuperView.h -// nil对象调用点语法 -// -// Created by https://github.com/ChenYilong on 15/8/30. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. -// - -#import - -@interface SuperView : UIView -@property (nonatomic, copy) NSString *string; -@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.m" deleted file mode 100644 index d09fc91..0000000 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/SuperView.m" +++ /dev/null @@ -1,25 +0,0 @@ - -// -// SuperView.m -// nil对象调用点语法 -// -// Created by https://github.com/ChenYilong on 15/8/30. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. -// - -#import "SuperView.h" - -@implementation SuperView - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - self.string = @"Super"; - NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, self.string); - } - return self; -} - - -@end diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" deleted file mode 100644 index aa88e5e..0000000 --- "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/nil\345\257\271\350\261\241\350\260\203\347\224\250\347\202\271\350\257\255\346\263\225/ViewController.m" +++ /dev/null @@ -1,33 +0,0 @@ -// -// ViewController.m -// nil对象调用点语法 -// -// Created by https://github.com/ChenYilong on 15/8/29. -// Copyright (c) 2015年 http://weibo.com/luohanchenyilong/ 微博@iOS程序犭袁. All rights reserved. -// - -#import "ViewController.h" -#import "Person.h" -#import "MaPerson.h" -#import "SubView.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - //只需一步:初始化 MaPerson (调用init方法) - MaPerson *ma = [[MaPerson alloc] init]; - NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, ma.lastName); - //不需要第二步:调用Person的init -// Person *p = [[Person alloc] init]; -// NSLog(@"🔴类名与方法名:%s(在第%d行),描述:%@", __PRETTY_FUNCTION__, __LINE__, p.lastName); - SubView *sub = [[SubView alloc] init]; -} - -@end - - diff --git "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" "b/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" deleted file mode 100644 index 2b986b7..0000000 Binary files "a/01\343\200\212\346\213\233\350\201\230\344\270\200\344\270\252\351\235\240\350\260\261\347\232\204iOS\343\200\213\351\235\242\350\257\225\351\242\230\345\217\202\350\200\203\347\255\224\346\241\210/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225/\344\270\272\344\273\200\344\271\210\344\270\215\346\216\250\350\215\220\345\234\250init\346\226\271\346\263\225\344\270\255\344\275\277\347\224\250\347\202\271\350\257\255\346\263\225.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate" and /dev/null differ diff --git a/02_Swift_interview_questions/README.md b/02_Swift_interview_questions/README.md new file mode 100644 index 0000000..7fb3290 --- /dev/null +++ b/02_Swift_interview_questions/README.md @@ -0,0 +1,13 @@ +## iOS面试题集锦(附答案)(Swift 版本) + +

+ +- [《理论篇: Swift/ObjC 语言基础》](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/theory.md) + + +

+ + + + - [《实战篇: iOS项目开发技能》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/practical.md ) + \ No newline at end of file diff --git a/02_Swift_interview_questions/Software_Development_Terminology.md b/02_Swift_interview_questions/Software_Development_Terminology.md new file mode 100644 index 0000000..5b9b28d --- /dev/null +++ b/02_Swift_interview_questions/Software_Development_Terminology.md @@ -0,0 +1,262 @@ +# Coding language + +## Basic punctuation +* comma , +* dot . +* question mark ? +* exclamation mark ! +* dash - +* underline _ +* asterisk * +* slash / +* backslash \ +* vertical bar | +* tilde ~ +* hash # +* caret ^ +* ellipsis ... +* ampersand & +* grave ` +## Bracket +* Parentheses () +* Square bracket [] +* Angle bracket <> +* Curly brackets {} + +## Colon +* Colon : +* Semicolon ; +## Quotation mark +* Quotes " " +* Single quotes ' ' + +## Operators + +### Terminology +* Unary operators operate on a single target. `-a` +* Binary operators operate on two targets. `a + b` +* Ternary operators operate on three targets. ` a ? b : c ` + +### Assignment Operator +`a = 5` 5 assign to a +### Arithmetic Operators +* Addition (+) +* Substraction(-) +* Multiplication(*) +* Division(/) + +`a + b` a add b / a plus b +`a - b` a minus b +`a * b` a multiplied by b / a times b +`a / b` a divided by b + +### Remainder Operator +`9 % 4` 9 remainder with 4 +### Compound Assignment Operators +`a += 2` a plus equals 2 +### Comparison Operators +* Equal to (a == b) +* Not equal to (a != b) +* Greater than (a > b) +* Less than (a < b) +* Greater than or equal to (a >= b) +* Less than or equal to (a <= b) + +### Nil-Coalescing Operator +`a ?? b` +### Range Operators +* Closed Range Operators `1...5` from 1 to 5 +* Half-Open Range Operators `a..> 1) +* NOT (~a) +* AND (a & b) +* OR (a | b) +* exclusive OR (a ^ b) + +### Overflow Operators +* Overflow addition (&+) +* Overflow subtraction (&-) +* Overflow multiplication (&*) + +## Syntax + +### Oriented-Object Programming + +* 封装:encapsulation (capsule是胶囊,encapulate就是装到胶囊里,封装的动词) +* 集成:inheritance (inherit继承的动词) +* 多态:polymorphism (在希腊语里poly是多,morphic是形态学的) + +* 函数:function +* 方法:method +* 参数:parameter +* 类:class +* 子类:subclass +* 父类:superclass +* 结构体:structure +* 元组:tuple +* 构造函数:constructor +* 实例:instance (实例化:instantiation) +* 对象:object +* 变量:variable +* 全局变量:global variable +* 局部变量:local variable +* 作用域:scope +* 常量:constant +* 成员变量:member +* 属性:property +* 储存变量:stored property +* 计算变量:computed property +* 栈:stack +* 堆:heap +* 属性包装器:property wrapper +* 字段:field +* 可空类型:optional type +* 解包可空类型:unwrapping optionals +* 强制解包:force unwrap +* 模型:model +* 模块:module (模块化:modulize) +* 值类型:value type +* 引用类型:reference type +* 重写:override +* 重载:overloading (运算符重载:operator overloading) +* 开辟内存:alloc memory +* 释放:release +* 持有:retain/store +* 循环引用:retain cycle/cycle reference +* 垃圾回收:garbage collection +* 内存泄漏:memory leak +* 调用:call/invoke +* 触发:trigger +* 扩展:extension +* 模版:template +* 原形:prototype +* 自动引用计数:ARC(automatic reference counting) +* 手动持有释放:MRR(manual retain-release) +* 上下文: context +* 声明式:declarative +* 祈使式:imperative +* 拆分:segregate/slice/split/separate +* 回调:callback + +### Oriented-Protocol Programming + +* 接口:protocol/interface +* 默认实现:default implementation +* 遵从接口:comform to protocol +* 代理:delegate +* 关联类型:associatedtype +* 类型别名:typealias +* 可选接口方法:optional protocol methods +* 泛型:generics +* 类型参数:type parameter (< T >) +* 不透明类型:opaque type (some View) +* 装饰器:decorator + +### Reactive +* 发布者:publisher +* 订阅者:subscriber +* 事件驱动:event-driven + +### Multi-thread +* 线程:thread +* 进程:process +* 信号量:semaphore +* 线程安全:thread safety +* 死锁:deadlock +* 并发:concurrency +* 串行:serialisation (serial串行的) +* 并行:parallel +* 同步:synchronous +* 异步:asynchronous +* 结构并发:structured concurrency +* 任务:task/job +* 挂起:wait/suspend +* 阻塞:pend/notify +* 休眠:sleep +* 轮询:polling +* 中断:interrupt + +### Data +* 数据库: database +* 关系型数据库: relational database +* 序列化: serialize (serialization名词) +* 反序列化: deserialize +* 建表: create table +* 读取: read +* 更新: update +* 删除: delete +* 持久化: persistence +* 实体: entity +* 存储: storage +* 单项数据流: unidirectional data flow +* 双向绑定:Two-Way bindings +* 升序:ascending +* 降序:descending + +### Network +* 仓库:repository +* 节点:endpoint +* 广播风暴:broadcast storm +* 重定向:redirect +* 授权:authentication +* 压缩:compression +* 缓存:cache +* 三次握手:3-way handshake +* 应答: acknowledgement + +### Access Control + +* 公有:public +* 私有:private +* 文件私有:file private +* 内联:internal + +## Operation +* 灰度发布:gray release +* 开发环境:development environment +* 生产环境:product environment +* A/B测试:A/B Test +* 打点日志:tracking log +* 数据收集:data collection +* 诊断:diagnose +* 迭代:iterative + +## UI +* 布局:layout +* 自动布局:autolayout +* 约束:restraint +* 对齐: alignment +* 行首空格:indent + +## Security +* 编码: encode +* 解码: decode +* 加密: encryption +* 解密: decryption +* 对称加密: symmetric-key encryption +* 非对称加密: public-key encryption (asymmetric encryption) +* 混淆: hash +* SSL: Secure Sockets Layer + +## Debug +* 歧义:ambiguity +* 错误处理:error handling/exception handling + +## Others + +### Code Mess +* Spaghetti code (意大利面代码,表示乱的搅在了一起) +* Ravioli code (意大利饺子代码,表示代码分了模块) +* Lasagna code (千层面代码,表示代码分了层) \ No newline at end of file diff --git a/02_Swift_interview_questions/assets/1-1.jpg b/02_Swift_interview_questions/assets/1-1.jpg new file mode 100644 index 0000000..d33f5e1 Binary files /dev/null and b/02_Swift_interview_questions/assets/1-1.jpg differ diff --git a/02_Swift_interview_questions/assets/1-2.jpg b/02_Swift_interview_questions/assets/1-2.jpg new file mode 100644 index 0000000..9997e72 Binary files /dev/null and b/02_Swift_interview_questions/assets/1-2.jpg differ diff --git a/02_Swift_interview_questions/assets/1-3.jpg b/02_Swift_interview_questions/assets/1-3.jpg new file mode 100644 index 0000000..aada6d7 Binary files /dev/null and b/02_Swift_interview_questions/assets/1-3.jpg differ diff --git a/02_Swift_interview_questions/assets/1-4.jpg b/02_Swift_interview_questions/assets/1-4.jpg new file mode 100644 index 0000000..83f545a Binary files /dev/null and b/02_Swift_interview_questions/assets/1-4.jpg differ diff --git a/02_Swift_interview_questions/assets/1.jpg b/02_Swift_interview_questions/assets/1.jpg new file mode 100644 index 0000000..0832427 Binary files /dev/null and b/02_Swift_interview_questions/assets/1.jpg differ diff --git a/02_Swift_interview_questions/assets/1.png b/02_Swift_interview_questions/assets/1.png new file mode 100644 index 0000000..eabe628 Binary files /dev/null and b/02_Swift_interview_questions/assets/1.png differ diff --git a/02_Swift_interview_questions/assets/10.jpg b/02_Swift_interview_questions/assets/10.jpg new file mode 100644 index 0000000..731fd2d Binary files /dev/null and b/02_Swift_interview_questions/assets/10.jpg differ diff --git a/02_Swift_interview_questions/assets/11.jpg b/02_Swift_interview_questions/assets/11.jpg new file mode 100644 index 0000000..b54f1a6 Binary files /dev/null and b/02_Swift_interview_questions/assets/11.jpg differ diff --git a/02_Swift_interview_questions/assets/16912874108037.jpg b/02_Swift_interview_questions/assets/16912874108037.jpg new file mode 100644 index 0000000..bd68f91 Binary files /dev/null and b/02_Swift_interview_questions/assets/16912874108037.jpg differ diff --git a/02_Swift_interview_questions/assets/16912874480991.jpg b/02_Swift_interview_questions/assets/16912874480991.jpg new file mode 100644 index 0000000..f26f531 Binary files /dev/null and b/02_Swift_interview_questions/assets/16912874480991.jpg differ diff --git a/02_Swift_interview_questions/assets/16912874813432.jpg b/02_Swift_interview_questions/assets/16912874813432.jpg new file mode 100644 index 0000000..a322194 Binary files /dev/null and b/02_Swift_interview_questions/assets/16912874813432.jpg differ diff --git a/02_Swift_interview_questions/assets/16912875027729.jpg b/02_Swift_interview_questions/assets/16912875027729.jpg new file mode 100644 index 0000000..0e6dbd9 Binary files /dev/null and b/02_Swift_interview_questions/assets/16912875027729.jpg differ diff --git a/02_Swift_interview_questions/assets/16913169429010.jpg b/02_Swift_interview_questions/assets/16913169429010.jpg new file mode 100644 index 0000000..12afae8 Binary files /dev/null and b/02_Swift_interview_questions/assets/16913169429010.jpg differ diff --git a/02_Swift_interview_questions/assets/16914714232134.jpg b/02_Swift_interview_questions/assets/16914714232134.jpg new file mode 100644 index 0000000..44d881c Binary files /dev/null and b/02_Swift_interview_questions/assets/16914714232134.jpg differ diff --git a/02_Swift_interview_questions/assets/16918516162699.jpg b/02_Swift_interview_questions/assets/16918516162699.jpg new file mode 100644 index 0000000..6a0d378 Binary files /dev/null and b/02_Swift_interview_questions/assets/16918516162699.jpg differ diff --git a/02_Swift_interview_questions/assets/16919848599418.jpg b/02_Swift_interview_questions/assets/16919848599418.jpg new file mode 100644 index 0000000..b166158 Binary files /dev/null and b/02_Swift_interview_questions/assets/16919848599418.jpg differ diff --git a/02_Swift_interview_questions/assets/16919852605513.jpg b/02_Swift_interview_questions/assets/16919852605513.jpg new file mode 100644 index 0000000..598ee43 Binary files /dev/null and b/02_Swift_interview_questions/assets/16919852605513.jpg differ diff --git a/02_Swift_interview_questions/assets/2-1.jpg b/02_Swift_interview_questions/assets/2-1.jpg new file mode 100644 index 0000000..9beddbe Binary files /dev/null and b/02_Swift_interview_questions/assets/2-1.jpg differ diff --git a/02_Swift_interview_questions/assets/2-2.jpg b/02_Swift_interview_questions/assets/2-2.jpg new file mode 100644 index 0000000..23a911e Binary files /dev/null and b/02_Swift_interview_questions/assets/2-2.jpg differ diff --git a/02_Swift_interview_questions/assets/2.jpg b/02_Swift_interview_questions/assets/2.jpg new file mode 100644 index 0000000..5fc6861 Binary files /dev/null and b/02_Swift_interview_questions/assets/2.jpg differ diff --git a/02_Swift_interview_questions/assets/2.png b/02_Swift_interview_questions/assets/2.png new file mode 100644 index 0000000..0e98829 Binary files /dev/null and b/02_Swift_interview_questions/assets/2.png differ diff --git a/02_Swift_interview_questions/assets/3-1.jpg b/02_Swift_interview_questions/assets/3-1.jpg new file mode 100644 index 0000000..c103a6f Binary files /dev/null and b/02_Swift_interview_questions/assets/3-1.jpg differ diff --git a/02_Swift_interview_questions/assets/3-2.jpg b/02_Swift_interview_questions/assets/3-2.jpg new file mode 100644 index 0000000..fd530a5 Binary files /dev/null and b/02_Swift_interview_questions/assets/3-2.jpg differ diff --git a/02_Swift_interview_questions/assets/3.jpg b/02_Swift_interview_questions/assets/3.jpg new file mode 100644 index 0000000..d02a9c0 Binary files /dev/null and b/02_Swift_interview_questions/assets/3.jpg differ diff --git a/02_Swift_interview_questions/assets/3.png b/02_Swift_interview_questions/assets/3.png new file mode 100644 index 0000000..3462550 Binary files /dev/null and b/02_Swift_interview_questions/assets/3.png differ diff --git a/02_Swift_interview_questions/assets/4-1.jpg b/02_Swift_interview_questions/assets/4-1.jpg new file mode 100644 index 0000000..92adceb Binary files /dev/null and b/02_Swift_interview_questions/assets/4-1.jpg differ diff --git a/02_Swift_interview_questions/assets/4-2.jpg b/02_Swift_interview_questions/assets/4-2.jpg new file mode 100644 index 0000000..99df8f9 Binary files /dev/null and b/02_Swift_interview_questions/assets/4-2.jpg differ diff --git a/02_Swift_interview_questions/assets/4.jpg b/02_Swift_interview_questions/assets/4.jpg new file mode 100644 index 0000000..916cc7e Binary files /dev/null and b/02_Swift_interview_questions/assets/4.jpg differ diff --git a/02_Swift_interview_questions/assets/4.png b/02_Swift_interview_questions/assets/4.png new file mode 100644 index 0000000..2069494 Binary files /dev/null and b/02_Swift_interview_questions/assets/4.png differ diff --git a/02_Swift_interview_questions/assets/5-1.jpg b/02_Swift_interview_questions/assets/5-1.jpg new file mode 100644 index 0000000..05b40f5 Binary files /dev/null and b/02_Swift_interview_questions/assets/5-1.jpg differ diff --git a/02_Swift_interview_questions/assets/5-2.jpg b/02_Swift_interview_questions/assets/5-2.jpg new file mode 100644 index 0000000..3d33724 Binary files /dev/null and b/02_Swift_interview_questions/assets/5-2.jpg differ diff --git a/02_Swift_interview_questions/assets/5.jpg b/02_Swift_interview_questions/assets/5.jpg new file mode 100644 index 0000000..cfe72cb Binary files /dev/null and b/02_Swift_interview_questions/assets/5.jpg differ diff --git a/02_Swift_interview_questions/assets/5.png b/02_Swift_interview_questions/assets/5.png new file mode 100644 index 0000000..ce84fde Binary files /dev/null and b/02_Swift_interview_questions/assets/5.png differ diff --git a/02_Swift_interview_questions/assets/6-1.jpg b/02_Swift_interview_questions/assets/6-1.jpg new file mode 100644 index 0000000..d87dff8 Binary files /dev/null and b/02_Swift_interview_questions/assets/6-1.jpg differ diff --git a/02_Swift_interview_questions/assets/6.jpg b/02_Swift_interview_questions/assets/6.jpg new file mode 100644 index 0000000..81bf3d4 Binary files /dev/null and b/02_Swift_interview_questions/assets/6.jpg differ diff --git a/02_Swift_interview_questions/assets/6.png b/02_Swift_interview_questions/assets/6.png new file mode 100644 index 0000000..c5ca0ab Binary files /dev/null and b/02_Swift_interview_questions/assets/6.png differ diff --git a/02_Swift_interview_questions/assets/7-1.jpg b/02_Swift_interview_questions/assets/7-1.jpg new file mode 100644 index 0000000..357bd41 Binary files /dev/null and b/02_Swift_interview_questions/assets/7-1.jpg differ diff --git a/02_Swift_interview_questions/assets/7.jpg b/02_Swift_interview_questions/assets/7.jpg new file mode 100644 index 0000000..db7f5c2 Binary files /dev/null and b/02_Swift_interview_questions/assets/7.jpg differ diff --git a/02_Swift_interview_questions/assets/7.png b/02_Swift_interview_questions/assets/7.png new file mode 100644 index 0000000..288df1f Binary files /dev/null and b/02_Swift_interview_questions/assets/7.png differ diff --git a/02_Swift_interview_questions/assets/8.PNG b/02_Swift_interview_questions/assets/8.PNG new file mode 100644 index 0000000..cff39e8 Binary files /dev/null and b/02_Swift_interview_questions/assets/8.PNG differ diff --git a/02_Swift_interview_questions/assets/8.jpg b/02_Swift_interview_questions/assets/8.jpg new file mode 100644 index 0000000..7fceee9 Binary files /dev/null and b/02_Swift_interview_questions/assets/8.jpg differ diff --git a/02_Swift_interview_questions/assets/9.jpg b/02_Swift_interview_questions/assets/9.jpg new file mode 100644 index 0000000..5181e49 Binary files /dev/null and b/02_Swift_interview_questions/assets/9.jpg differ diff --git a/02_Swift_interview_questions/assets/9.png b/02_Swift_interview_questions/assets/9.png new file mode 100644 index 0000000..ac9ed3a Binary files /dev/null and b/02_Swift_interview_questions/assets/9.png differ diff --git a/02_Swift_interview_questions/assets/reactive_programming_qa/cn.jpg b/02_Swift_interview_questions/assets/reactive_programming_qa/cn.jpg new file mode 100644 index 0000000..08cae78 Binary files /dev/null and b/02_Swift_interview_questions/assets/reactive_programming_qa/cn.jpg differ diff --git a/02_Swift_interview_questions/assets/reactive_programming_qa/en.jpg b/02_Swift_interview_questions/assets/reactive_programming_qa/en.jpg new file mode 100644 index 0000000..985ec71 Binary files /dev/null and b/02_Swift_interview_questions/assets/reactive_programming_qa/en.jpg differ diff --git a/02_Swift_interview_questions/practical.md b/02_Swift_interview_questions/practical.md new file mode 100755 index 0000000..e79050e --- /dev/null +++ b/02_Swift_interview_questions/practical.md @@ -0,0 +1,1552 @@ +# 实战篇: iOS项目开发技能 + +

+ +Swift面试题共分为两篇: + +- [《理论篇: Swift/ObjC 语言基础》](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/theory.md) + - [《实战篇: iOS项目开发技能》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/practical.md ) + +是我自己在国外面试时准备的笔记, 所以很多是英文的, 后续有时间再翻译. + +# 目录 + +**SwiftUI** + +- Are you familiar with SwiftUI? +- What’s the difference between SwiftUI and UIKit Lifecycle Methods? +- What is Property Wrapper in SwiftUI? What’s the difference between @ObservedObject, @State, and @EnvironmentObject? +- Can you explain the difference between a state object and an observed object in SwiftUI? + + **Combine、函数式与响应式编程:** + +- Explain reactive programming and its advantages, mentioning frameworks like RxSwift and Combine. 如何在 Swift 中实现函数式编程?请举一个示例。 +- Q.Swift 是面向对象还是函数式的编程语言? +- What's the difference between `passthroughSubject` and `CurrentValueSubject`? + +**设计模式:** + +- What's your ideal iOS project set up like? +- Can you explain how you would design a login page using the MVP/MVVM architecture? +- What is the singleton pattern, and what are some considerations when using it? +- What is the difference between MVVM (Model-View-ViewModel) and clean architecture?What is the difference between clean and MVVM architecture? +- What kind of code typically resides in view models in MVVM? +- Can you at a high level explain what are the different moving parts of MVP/MVVM architecture? +- Can you explain the technical details and the features you were responsible for covering off what architecture you used what, technical decisions you made? Could you touch up on any of the native iOS projects you worked on? What was the architecture you used in your projects? +- if you could add a high-level, based on any of your recent projects, the longest you've been associated with, can you just walk me through the features you were responsible for and just in terms of technical aspects, in terms of what architecture you used and things like that and then we can probably go on from there? + +**并发和多线程开发:** + +- How can you avoid data racing issues when using the singleton pattern in a multi-threaded environment? +- Can you give examples of different types of locks used in concurrent programming? +- Can you describe what async/await is? +- How can you wait for multiple network calls to complete before calling a function that relies on the results? +- 结构化并发(Structured Concurrency):How to implement structured concurrency? + + +**网络编程:** + +- How does the device register for push notifications, and how do notifications come from the server side? +- Can you explain how token-based authentication works, where you obtain a token from an API and use it for subsequent API calls? + +**安全相关:** + +- How do you securely store API keys in your Swift code without exposing them? Have you worked with making API calls that require API keys? How did you handle the secure storage of those keys? + +**调试、版本管理、项目管理:** + +- If your app has performance issues, how would you identify them and how do you resolve them? +- Are you familiar with setting up CI/CD pipelines for Swift projects? +- Can you tell me more about how you manage libraries and codebases in your project? +- How do you debug crash issues in your daily work? + +**Unit Test** + +1. How to mock data +1. How to separate production env and mock +2. How to test the view model with SwiftUI? +3. How to inject mocked networking logic? +4. What's Test-driven development? + + **UI布局** + +- How do you create UI elements like labels and images, and how do you manage their layout and orientation when the device is rotated? +- Are you using any third-party libraries for layout in Auto Layout? . +- What is the Intrinsic Content Size in Auto Layout for? +- What is the purpose of prepareForReuse of the Cell of UITableView and when will it be called? + + +# 正文 + +## **SwiftUI** + +## Are you familiar with SwiftUI? + +![SwiftUI_and_Combine](../assets/SwiftUI_and_Combine.png) + +However, from iOS17 things about Combine change a lot. + +You should always consult the developers’ documentation to find out about the most recent documentation: https://developer.apple.com/documentation/swiftui/. + +The Combine framework with this new update is going to be substituted with the Observation framework, which extends State and Environment to replace StateObject and EnvironmentObject. The net effect is a huge simplification. + +You can introduce the new changes in your existing apps that use Combine incrementally, keeping the old approaches in place and substituting them as you progress; much of what you know already and is available in previous versions of SwiftUI will remain valid for quite a while. It normally takes a couple of years for the old approach to be completely replaced. But keep in mind that Combine is practically going to die eventually. And with Combine, the concept of Apple supporting reactive frameworks natively will also die. + +So, relying on reactive frameworks is probably going to be a bad idea for your architectural choices on Apple systems, as the evolution of the Apple operating system seems to be moving away from that concept. + +Another piece of big news just presented during WWDC2023 is the replacement of the Core Data framework with the new, simpler-to-use SwiftData framework for data persistence. SwiftData is compatible with Core Data to the point that it is possible to use both in the same app. Xcode is able to convert Core Data models into classes for use with SwiftData, so the conversion to the new framework is going to be rather simple. It still makes sense to use Core Data, as this transition will take about two years, and SwiftData is interoperable with Core Data. + +There is, however, going to be less and less reason to depend on third-party frameworks such as Realm. + +From a historical perspective, trying to innovate in front of Apple by introducing change means that you are going to spend quite a lot to keep your applications up to spec and maintain them. All technical engineering choices are economic choices, and trying to guess the future is part of the business. + +## What’s the difference between SwiftUI and UIKit Lifecycle Methods? + +![SwiftUI_and_Combine](../assets/SwiftUI_vs_UIKit_Lifecycle_Methods_Difference.jpg) + +## What’s the difference between @ObservedObject, @State, and @EnvironmentObject? + +https://www.hackingwithswift.com/quick-start/swiftui/whats-the-difference-between-observedobject-state-and-environmentobject + +iOS17 以后 是Observation框架,性能更好了,不过写法不同了. [SwiftUI Data Flow 2023]( https://troz.net/post/2023/swiftui-data-flow-2023/ "") + + +[Answer from AI](https://chat.openai.com/share/cd46dff5-9d7e-4990-8fe9-595e2aa65080) + +![](../assets/Property_Wrapper_in_SwiftUI/ios16_overview.png) + +![](../assets/Property_Wrapper_in_SwiftUI/ios17_overview.png) + +![](../assets/Property_Wrapper_in_SwiftUI/ios16_code.png) +![](../assets/Property_Wrapper_in_SwiftUI/ios17_code.png) + +![](../assets/Property_Wrapper_in_SwiftUI/ios16_pros_cons.png) + +![](../assets/Property_Wrapper_in_SwiftUI/ios17_pros_cons.png) + +![](../assets/16912073172453.jpg) + + +![](../assets/16912073267482.jpg) + + +@ObservedObject, @State, and @EnvironmentObject? + +@State == value type + +@StateObject (@ObservedObject) == ref type + +@Binding two+ view value type + +@EnvironmentObject? == ref type 周期长 + +| | Single View | Multiple Views | +| --- | --- | --- | +| | Value Type | Reference Type | +| | | | + +![](../assets/16912073397523.jpg) + + +[MVVM in SwiftUI](https://swdevnotes.com/swift/2021/mvvm-in-swiftui/) + +[@StateObject vs. @ObservedObject: The differences explained](https://www.avanderlee.com/swiftui/stateobject-observedobject-differences/) + +[Understanding Data Flow in SwiftUI](https://www.kodeco.com/11781349-understanding-data-flow-in-swiftui) + +![](../assets/16912073494698.jpg) + + +## **Combine、函数式与响应式编程:** + +![SwiftUI_and_Combine](../assets/SwiftUI_and_Combine.png) +![swift-combine](../assets/swift-combine.jpg) + +## Explain reactive programming and its advantages, mentioning frameworks like RxSwift and Combine. + +![swift-combine](../assets/asynchronous_APIs_in_iOS/cn.jpg) +![swift-combine](../assets/asynchronous_APIs_in_iOS/en.jpg) + + [Answer from AI]( https://chat.openai.com/share/8e77bb97-fdf9-405a-bd44-9c769777211f "") + +Combine类似 RxSwift(一个类Redux的架构) + +## Q.Swift 是面向对象还是函数式的编程语言? + +A: + +Swift 既是面向对象的,又是函数式的编程语言。 +说 Swift 是面向对象的语言,是因为 Swift 支持类的封装、继承、和多态,从这点上来看与 Java 这类纯面向对象的语言几乎毫无差别。 +说 Swift 是函数式编程语言,是因为 Swift 支持 map, reduce, filter, flatmap 这类去除中间状态、数学函数式的方法,更加强调运算结果而不是中间过程。 + +函数式的编程,通俗易懂的讲解 + +[一文读懂Swift函数式编程](https://zhuanlan.zhihu.com/p/192483039) + +拓展问题: 如何在 Swift 中实现函数式编程?请举一个示例。 + +#### 5. What's the difference between `passthroughSubject` and `CurrentValueSubject`? + +https://chat.openai.com/share/390f02bf-7c26-461d-908a-172e53d9177f + +![3](assets/3-1.jpg) + + + [PassthroughSubject vs. CurrentValueSubject explained]( https://www.avanderlee.com/combine/passthroughsubject-currentvaluesubject-explained/ "") + + +## **设计模式:** +![1](assets/1-1.jpg) + +## MVC vs MVP vs MVVM + +[Researching MVVM in Swift](https://www.agnosticdev.com/blog-entry/swift/researching-mvvm-swift) + +## MVP vs MVVM + +What is the difference between MVP and MVVM, and the major difference why? Why do you like it? +What is the difference between MVP and MVVM? +In MVVM, is the view model aware of the view? Does the view model know about the view? +In MVP, does the presenter know about the view? + +![](../assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_qa.jpg) + + + +Sure! Let's break down the comparison between MVP (Model-View-Presenter) and MVVM (Model-View-ViewModel), and answer the questions you've posed: + +![](../assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_en.jpg) + +![](../assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_cn.jpg) + +![https://github.com/ChenYilong](../assets/mvp_architecture_design_pattern_presenters_replace_controller.gif) + + + +### MVP (Model-View-Presenter): +![](../assets/mvp_architecture_design_pattern.png) + +- **Model**: Represents the data and the business rules of the application. +- **View**: Represents the UI of the application, and forwards user actions to the Presenter. +- **Presenter**: Acts as a bridge between the Model and the View. It takes user actions from the View, processes (with the Model), and returns the output display to the View. + +In MVP, the Presenter has direct knowledge of the View, and often there is a one-to-one relationship between the Presenter and the View. + + +### MVVM (Model-View-ViewModel): + +- **Model**: Similar to MVP, represents the data and the business rules. +- **View**: Represents the UI, but is completely unaware of the ViewModel (it's loosely coupled). +- **ViewModel**: Acts as a bridge between the Model and the View, but it doesn't have direct knowledge of the View. It handles the presentation logic and exposes data-bound properties and commands for the View to use. + +### Major Differences: + +1. **Coupling**: MVVM is more loosely coupled than MVP, as the ViewModel is not directly aware of the specific View using it. In MVP, the Presenter is directly linked to the View. +2. **Testability**: MVVM's decoupling makes it easier to write unit tests for the ViewModel without considering the View. MVP can be more challenging to test since the Presenter is more closely tied to the View. +3. **Responsibility**: The ViewModel in MVVM mainly deals with data formatting and exposing commands, leaving the View to handle the user interface, whereas in MVP, the Presenter is responsible for updating the View, which might involve some UI logic. +4. **Data Binding**: MVVM often leverages data binding, allowing for more automatic synchronization between the View and the ViewModel. MVP usually requires manual updates. + +### Answers to Specific Questions: + +- **In MVVM, is the view model aware of the view? Does the view model know about the view?** + - No, in MVVM, the ViewModel doesn't have direct knowledge of the View, contributing to a more loosely coupled design. + +- **In MVP, does the presenter know about the view?** + - Yes, in MVP, the Presenter knows about the View, often through an interface, and directly communicates with it. + +### Personal Preference (hypothetical): + +As for why one might prefer one pattern over the other, it often depends on specific needs and project requirements. MVVM's loose coupling and ease of testing might make it more appealing for large-scale applications with complex data interactions, whereas MVP might be preferred for simpler applications where the strict separation between the View and Presenter is not necessary. Preferences can vary widely among developers based on their individual experiences and the technologies they are using. + + +## 17. What is the difference between MVVM (Model-View-ViewModel) and clean architecture? + +What is the difference between clean and MVVM architecture? + +![](../assets/MVVM_Clean_SOLID/banner_en.png) + +![](../assets/MVVM_Clean_SOLID/en.png) + +![](../assets/MVVM_Clean_SOLID/banner_cn.png) + +![](../assets/MVVM_Clean_SOLID/cn.png) +![](../assets/MVVM_Clean_SOLID/tca_onion_layering.png) +![](../assets/MVVM_Clean_SOLID/tca_horizontal_layer.png) + +## Clean MVVM 框架 + +[https://github.com/kudoleh/iOS-Clean-Architecture-MVVM](https://github.com/kudoleh/iOS-Clean-Architecture-MVVM) + +https://github.com/nanosoftonline/clean-architecture-ios-contacts + +新西兰的各类流行框架 + +[g-enius - Repositories](https://github.com/g-enius?page=1&tab=repositories) + +就是那个TCA?TCA在clean的基础上加了很多功能. 很多名称在TCA和clean上叫的不一样. + +而且tca组件之间通讯有点复杂. + +复杂页面的话. 冗余代码太多, 比如usercase和service + +父子通讯真的麻烦, 还得用delegate. + +一个clean的例子 + +[Clean Architecture: iOS App](https://paulallies.medium.com/clean-architecture-ios-app-100539550110) + +![](../assets/16912073606938.jpg) + + +TDD friendly我觉得是个优点. + +TCA(TCA一般是指:the composable architecture)有点插件式的感觉,你要调用子component的逻辑,你就得把它的state、action、scope都声明一下就能用了. + +有的, +TCA 虽然是一种设计模式, 但也有一个非常流行的最佳实践库, 可以理解为 [TCA 标准库: The Composable Architecture]( https://github.com/pointfreeco/swift-composable-architecture "") +感觉最大的优势,还是代码清晰。。。。 + +state,action本身内部内聚很高, 类似声明. 一旦类似delegate的action出去了. 单看一个模块就读不出完整逻辑了. 我觉得reducer做到了有所有的逻辑啊,delegate也只是一种effect而已. 跟其他的effect没有什么区别. 原来这个模块这条链路是这个意思.它问了Clean框架, 我说我听过, 没用过. 新西兰有很多移动端的架构就是Clean. + +![](../assets/tca_architecture_design_pattern/tca_architecture_design_pattern_qa.png) + +![](../assets/tca_architecture_design_pattern/tca_architecture_design_pattern_en.png) + + [Composable Architecture]( https://zenn.dev/inamiy/books/3dd014a50f321040a047/viewer/cca752a1fe8700f9d0c0 "") + +[Clean Architecture for SwiftUI](https://nalexn.github.io/clean-architecture-swiftui/) + +clean喜欢把protocol化可注入的层叫use case,命名一般叫xxxRepository + +![2](assets/2-1.jpg) + +## What kind of code typically resides in view models in MVVM? + +非常好的 MVVM 的开源项目, 可以学习下: https://github.com/kickstarter/ios-oss + +What is the difference between clean and MVVM architecture? + +[MVVM with Combine Tutorial for iOS](https://www.kodeco.com/4161005-mvvm-with-combine-tutorial-for-ios) + + +![](../assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_en.jpg) + +![](../assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_cn.jpg) + + + +然后这是几个系统设计或者客户端设计相关的repo: +[https://github.com/donnemartin/system-design-primer](https://github.com/donnemartin/system-design-primer) + +[https://github.com/weeeBox/mobile-system-design](https://github.com/weeeBox/mobile-system-design) + +[https://github.com/skyming/Trip-to-iOS-Design-Patterns](https://github.com/skyming/Trip-to-iOS-Design-Patterns) + +[https://github.com/kudoleh/iOS-Clean-Architecture-MVVM](https://github.com/kudoleh/iOS-Clean-Architecture-MVVM) + +[https://github.com/kickstarter/ios-oss](https://github.com/kickstarter/ios-oss) + +[https://chat.openai.com/share/30b798b8-96f2-45e2-a1e3-d02babd8d1c8](https://chat.openai.com/share/30b798b8-96f2-45e2-a1e3-d02babd8d1c8) + +在MVVM(Model-View-ViewModel)架构中,ViewModel 是一个抽象,它代表了 View 需要用到的数据和命令。因此,ViewModel 通常会包含以下类型的代码: + +1. **数据绑定**:ViewModel 包含了视图需要的所有数据,这些数据通常会通过数据绑定的方式在视图中显示。因此,ViewModel 通常会包含一些属性(property),这些属性被绑定到视图上,当属性的值改变时,视图会自动更新。 +2. **命令**:ViewModel 还会包含一些命令(Command),这些命令对应了用户的操作(比如点击按钮)。命令通常会修改 ViewModel 中的数据,然后这些修改会通过数据绑定反映到视图上。 +3. **数据访问和业务逻辑**:ViewModel 还可能包含一些业务逻辑,比如数据的读取和写入。这些业务逻辑可能会通过调用 Model 层的方法来实现。 +4. **状态管理**:ViewModel 还可能包含一些状态管理的代码,比如正在加载的状态、错误状态等。 + +![](../assets/16912073940590.jpg) + + +![](../assets/16912074008587.jpg) + + +需要注意的是,ViewModel 不应该直接访问 View,所有的交互都应该通过数据绑定和命令来完成。这样可以确保 ViewModel 和 View 的解耦,使得 ViewModel 可以方便的进行单元测试。 + +```swift +//下面是一段 MVVM 中的 ViewModel 代码. 请指出下面的代码中, 分别对应着 ViewModel 的哪些职责? +// [2023-07-28 16:43:05] @iTeaTime(技术清谈)@ChenYilong +enum ViewState { + case loading + case loaded + case error(string: String) +} + +protocol ContentListViewModelProtocol { + associatedtype Content + associatedtype ContentCellViewModel: ContentCellViewModelProtocol where ContentCellViewModel.Content == Content + var contents: Observable<[Content]> { get set } + var contentCellViewModels: [ContentCellViewModel] { get set } + var viewState: Observable { get } + var searchText: Observable { get } + + func contentCellViewModel(for content: Content) -> ContentCellViewModel + func update() async throws +} + +import Foundation + +final class PostListViewModel: ContentListViewModelProtocol { + + func contentCellViewModel(for post: Post) -> PostCellViewModel { + let postCellViewModel = PostCellViewModel(content: post) + return postCellViewModel + } + + var contentCellViewModels: [PostCellViewModel] = Array() + var contents = Observable<[Post]>(value: []) + var allPosts: [Post] = [] // this would hold all your contents + var viewState = Observable(value: .loading) + var searchText = Observable(value: "") + + private var repository: Repository + + init(repository: ApiRepository = ApiRepository()) { + self.repository = repository + setupSearchTextObserver() + } + + func setupSearchTextObserver() { + searchText.addObserver { [weak self] text in + self?.filterContentForSearchText(text) + } + } + + func filterContentForSearchText(_ searchText: String) { + guard !searchText.isEmpty else { + self.resetFilters() + return + } + + let filteredPosts = allPosts.filter { (post: Post) -> Bool in + return post.title.lowercased().contains(searchText.lowercased()) + } + contents.value = filteredPosts + } + + func resetFilters() { + setupAllPosts() + } + + func setupAllPosts() { + contents.value = allPosts + } + + func update() async throws { + do { + viewState.value = .loading + let contents = try await repository.fetchPosts() + if contents.isEmpty { + self.viewState.value = .loading + } else { + self.viewState.value = .loaded + self.allPosts = contents + setupAllPosts() + } + } catch { + // handle error + self.viewState.value = .error(string: error.localizedDescription) + throw error + } + } + + deinit { + contents.removeObserver() + viewState.removeObserver() + } +} +``` + +在你给出的代码中,以下是如何对应到我前面说的四个方面: + +1. **数据绑定**:在这个例子中,`contents`,`contentCellViewModels`,`viewState` 和 `searchText` 都是 `Observable` 类型,它们都被绑定到了视图上。当这些 `Observable` 对象的值改变时,视图会自动更新。 +2. **命令**:`func contentCellViewModel(for content: Content) -> ContentCellViewModel` 和 `func update() async throws` 这两个方法就是命令,它们对应了用户的操作,比如点击按钮或者刷新页面。 +3. **数据访问和业务逻辑**:在 `func update() async throws` 方法中,代码调用了 `repository.fetchPosts()` 方法从服务器获取数据,这部分就是数据访问。然后在获取数据后,代码根据获取的数据修改了 `contents` 和 `allPosts`,这部分就是业务逻辑。 +4. **状态管理**:`viewState` 属性就是用来管理状态的。它的值可能是 `.loading`,`.loaded` 或者 `.error`,分别代表了不同的状态。在 `func update() async throws` 方法中,根据数据加载的结果,代码会修改 `viewState` 的值,从而反映出当前的状态。 + +![](../assets/16912074108843.jpg) + + +![](../assets/mvvm_architecture_design_pattern.png) + + +### Architecture, Pattern, and System Design + +最初的MVC解决了 View 和 Model 的角色分离, 和 View Action 和 Model Action 的处理问题... 后续的七七八八的架构产生都是为了测试目的... + +国内其实除了MVVM, 其他的都不care, 毕竟衍生的架构都是为了test. 而我们不需要test... + +#### 1. Pattern +![](../assets/VIPER_architecture_design_pattern/1.jpg) + + +**VIPER** + + +![](../assets/VIPER_architecture_design_pattern/viper_architecture_design_pattern_en.jpg) + +

+ + + +![](../assets/viper_architecture_design_pattern.png) + + +viper就是过度设计的mvp. 其实就是比标准的mvp多了个interactor. +viper里E指的其实就是model,非得改个名字。R是router,感觉跟mvvm-c里的coordinate却差不多. +interactor感觉就是为了搞一个没有任何ui相关逻辑的可注入层. + +https://github.com/adib/ViperMovieDemo + +https://github.com/unwire/viper-demo-ios + +这应该是己知的 最早的出处了 https://www.objc.io/issues/13-architecture/viper/ + +https://rowant.co.uk/unit-testing-with-viper/ + +https://www.kodeco.com/29416318-getting-started-with-the-vip-clean-architecture-pattern + + +**MVVM**: + +Clean MVVM: https://www.vadimbulavin.com/modern-mvvm-ios-app-architecture-with-combine-and-swiftui/ + +https://github.com/kudoleh/iOS-Clean-Architecture-MVVM + +Modern MVVM: https://www.vadimbulavin.com/modern-mvvm-ios-app-architecture-with-combine-and-swiftui/ + +**Redux**: + + +Please look at the demo named SwiftUIRedux in this repository to learn more about redux with SwiftUI. + +Redux: https://www.raywenderlich.com/22096649-getting-a-redux-vibe-into-swiftui +![](../assets/redux_architecture_design_pattern/redux_architecture_design_pattern_QA.png) + + +![](../assets/redux_architecture_design_pattern/redux_architecture_design_pattern_en.png) + +![](../assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy1.png) +![](../assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy2.png) + +#### 2. Describe binding in MVVM. + +#### 3. Mobile System Design +https://github.com/donnemartin/system-design-primer + +https://github.com/weeeBox/mobile-system-design + +https://github.com/skyming/Trip-to-iOS-Design-Patterns + +#### 4. What's the Clean Architecture? +https://indiespark.top/programming/how-implement-viper-clean-architecture-ios/ + +## Software Engineering +https://www.whizlabs.com/blog/agile-scrum-interview-questions/ + +https://www.interviewbit.com/agile-interview-questions/ + +#### 1. What's the difference between Greenfield and Brownfield? +https://synoptek.com/insights/it-blogs/greenfield-vs-brownfield-software-development/ + +#### 2. What do you think of refactoring? + + +## Dependency Injection in SwiftUI + +![](assets/16919852605513.jpg) + +![](assets/16919848599418.jpg) + +### 依赖注入 + +Dependency injection aims to separate the concerns of constructing objects and using them, leading to loosely coupled programs. + +依赖注入(Dependency Injection),一种常用的软件设计模式,广泛应用于许多开发环境和语言中。重点在于低耦合。 + +#### 1. iOS上的依赖注入 + +在iOS开发中,依赖注入可能通过视图控制器的构造方法来实现。与Spring的@Autowired resource相比,虽然在某些方面存在异同,但核心目标依然是达到程序的低耦合。 + +#### 2. 依赖注入的理解层次 + +依赖注入并非一个独立的概念,它涵盖了构造函数注入、Setter方法注入等多种实现手段。一些开发人员可能会将其与Spring的特性相联系,但这种理解可能并不全面。更精确的理解应该强调组件间依赖的外部实现。 + +#### 3. iOS中的依赖注入实践 + +虽然某些开发人员对iOS中依赖注入的存在表示怀疑,正确的实践是确实存在的。 + +常见的依赖注入的实践: + +实践1: + +为每个 view controller 上都使用了一个 context 属性,并要求在 view controller 构建的时候传入这个上下文属性。虽然和基础 MVC 中设定一个 model 对象相比没有特别大的不同,但是它还是展示了一种避免单例的方式。这也是依赖注入降低耦合的实践. + +实践2: + +如果想在 view controller 上设置一个初始 model 值时,我们有不同的方式: + +方式一, 通过判定 controller 在 controller 层级上的位置以及 controller 的类型,直接访问一个全局的 model 对象。 +方式二, 开始时将 model 对象的引用设置为 nil 并让所有东西保持为空白状态,直到另一个 controller 提供了一个非 nil 值。 +第三种选择是在 controller 初始化时将 model 对象当作参数传递进来 (也就是依赖注入)。 + +下面的Swift代码段揭示了依赖注入的一种实践方式: + +```swift +class A { + func foo() { + print("A"); + }} + +class SA: A { + override func foo() {print("SA");}} + +func ft(_ a : A) { + a.foo( ) } +``` + +对于函数`ft`来说,它只知道类A,子类SA是外部注入的,它也只能依赖A的特征和行为。 + + +#### 4. 高层次的理解和扩展 + +通过将依赖注入描述为强依赖转变为弱依赖,可以深刻地揭示其背后的设计原则,如面向接口编程。此外,SwiftUI的 `Environtment`、`EnvironmentObject` 也可以看做是依赖注入的一种扩展实践。例如,这里有一个SwiftUI的依赖注入库: [swift-dependencies](https://github.com/pointfreeco/swift-dependencies)。 + +从理论上讲,依赖注入是一种实现依赖反转原则的技术。该原则指出,高级模块不应依赖于低级模块,而是两者都应依赖于抽象模块。 + +在 iOS 应用程序中,依赖注入意味着依赖于另一个对象(如依赖于模型对象的视图控制器)的对象将获得对其依赖对象的引用,而不是创建对象本身。这使得依赖于其他对象的对象更加灵活,也更易于测试,因为在测试过程中它可以获得一个模拟对象来使用。 + +![1](../assets/solid/1.jpg) + +![4](../assets/solid/4.jpg) + + +下面是一个在 iOS 应用程序中使用 SwiftUI 和 Combine 框架进行 DI(依赖注入)的简单示例: + + ```Java + +import Foundation +import SwiftUI +import Combine + +// MARK: - Presentation Layer +struct MyView: View { + @ObservedObject var viewModel: MyViewModel + + var body: some View { + Text(viewModel.data) + } +} + +// MARK: - Domain Layer +class MyViewModel: ObservableObject { + @Published var data: String = "" + private let dataFetcher: DataFetcher + private var cancellable: AnyCancellable? + + init(dataFetcher: DataFetcher) { + self.dataFetcher = dataFetcher + } + + func fetchData() { + // Fetch data from the network or a local database + // using the data access layer + cancellable = dataFetcher.fetchData() + // Handle the result of the fetch + .receive(on: RunLoop.main) + .sink { error in + if case let .failure(error) = error { + print(error.localizedDescription) + } + } receiveValue: { (value: String) in + self.data = value + } + } +} + +// MARK: - Data Access Layer +protocol DataFetcher { + func fetchData() -> AnyPublisher +} + +class NetworkDataFetcher: DataFetcher { + func fetchData() -> AnyPublisher { + // Fetch data from the network and call the completion handler + Just("Hello") + .setFailureType(to: Error.self) + .eraseToAnyPublisher() + } +} + +class DatabaseDataFetcher: DataFetcher { + func fetchData() -> AnyPublisher { + // Fetch data from the local database and call the completion handler + Just("Mom") + .setFailureType(to: Error.self) + .eraseToAnyPublisher() + } +} + ``` + + +在此示例中,UserListView 依赖于 UserViewModel,而 UserViewModel 依赖于 NetworkManager。 + +我们没有直接在 UserViewModel 中创建 NetworkManager,而是在 UserViewModel 的初始化器中传递了 NetworkManager 的引用。 + +这使得 UserViewModel 更加灵活,因为它可以获得任何符合 NetworkManager 协议的对象,而不仅仅是 NetworkManager 的特定实现。这使得测试 UserViewModel 更加容易,因为在测试过程中可以注入一个模拟对象。 + +现在,我们将尝试把 "简洁架构 "和 "依赖注入 "这两种方法结合在一起,利用前面示例中的知识来获得一个完整清晰的观点。 + + + +### 总结 + +依赖注入作为一个重要的设计模式,不仅在具体的实现细节上有着丰富的内容,而且在更高层次的设计原则上也有深远的意义。通过多角度、多平台的讨论,我们不仅能够对依赖注入的具体实现有更准确的理解,还可以洞察其背后所蕴藏的软件设计智慧。 + +讨论中涉及的观点,如依赖注入的核心目标:低耦合,属性注入和 Java 中的用法,插件化开发与依赖注入的联系,以及与多态的关系等,都为我们提供了丰富的视野和启示。 + + +Reference: +- [Dependency injection libs on GitHub](https://github.com/matteocrippa/awesome-swift#dependency-injection "") +- [Dependency Injection in Swift with Property Wrappers]( https://medium.com/swlh/dependency-injection-in-swift-with-property-wrappers-c1f02f06cd51 "") + +- [iOS: Clean Architecture using SwiftUI, Combine, and Dependency Injection]( https://betterprogramming.pub/ios-clean-architecture-using-swiftui-combine-and-dependency-injection-for-dummies-2e44600f952b "") +- [Dependiject: Make Dependency Injection easy in SwiftUI]( https://medium.com/@wesleyboyd_66190/dependiject-make-dependency-injection-easy-in-swiftui-bee6bf04fd3b "") +- [Dependency Injection in SwiftUI]( https://mokacoding.com/blog/swiftui-dependency-injection/ "") + +## **并发和多线程开发:** + +## 11. How can you avoid data racing issues when using the singleton pattern in a multi-threaded environment? + +是不是现在所有swift里的线程问题,都可以通过actor解决?我回答的, 是用GCD, 重写 getter和setter, 实现异步读取, 同步写入.只要保证setter和getter在一个队列里就行. setter是同步, getter同步和异步都行. + +#### 9. How do let functions run in the main queue? +@MainActor, DispatchQueue.main, Runloop.main + + + +## Can you give examples of different types of locks used in concurrent programming? + + +[https://chat.openai.com/share/6843abbf-37fe-46bc-94aa-fb8f9aea2d5b](https://chat.openai.com/share/6843abbf-37fe-46bc-94aa-fb8f9aea2d5b) + +Concurrency in iOS and Swift development can present a number of challenges, one of which is ensuring that shared resources are accessed safely. To control access to these resources and prevent issues such as race conditions, different types of locks are used. Here are some examples: + +1. **NSLock:** NSLock is one of the simplest locking mechanisms. It provides a basic lock and unlock functionality. + +```swift +let lock = NSLock() + +lock.lock() +// Critical section +lock.unlock() +``` + +2. **Recursive Lock (NSRecursiveLock):** Recursive locks are similar to NSLock, but they allow the same thread to acquire the lock multiple times without getting deadlocked. + +```swift +let recursiveLock = NSRecursiveLock() + +recursiveLock.lock() +// Critical section +recursiveLock.unlock() +``` + +3. **Condition Lock (NSConditionLock):** This type of lock allows for conditions to be used in conjunction with the locking mechanism, allowing threads to be locked or unlocked based on certain conditions. + +```swift +let conditionLock = NSConditionLock(condition: 1) + +conditionLock.lockWhenCondition(1) +// Critical section +conditionLock.unlockWithCondition(2) +``` + +4. **Read-Write Lock (pthread_rwlock_t):** This type of lock allows multiple reads without locking, but writes will lock. This is useful when you have a resource that is often read but rarely updated. + +```swift +var rwLock = pthread_rwlock_t() +pthread_rwlock_init(&rwLock, nil) + +pthread_rwlock_rdlock(&rwLock) // for read lock +// Read data +pthread_rwlock_unlock(&rwLock) + +pthread_rwlock_wrlock(&rwLock) // for write lock +// Write data +pthread_rwlock_unlock(&rwLock) +``` + +5. **Semaphore (DispatchSemaphore):** Semaphores manage a finite pool of resources. A DispatchSemaphore is an efficient implementation of a traditional counting semaphore. + +```swift +let semaphore = DispatchSemaphore(value: 1) + +semaphore.wait() // decrementing the semaphore's count +// Critical section +semaphore.signal() // incrementing the semaphore's count +``` + +6. **Synchronized:** While not directly a locking mechanism, the @synchronized directive in Objective-C provides a simple way to lock a section of code for a specific object, and Swift can take advantage of it using Objective-C runtime. However, it's not commonly used due to its performance overhead. + +7. **Atomic Operations:** Swift 5 introduced the ability to perform atomic operations, which can often be used to replace locks in certain situations. It provides the way to safely mutate shared state from multiple threads by providing a series of atomic load, store, and compare-and-exchange operations. + +8. **GCD (Grand Central Dispatch) Barriers:** While not technically a lock, dispatch barriers provide a mechanism to ensure that a certain block of code does not execute concurrently with other specified blocks of code. They're used with concurrent queues to create a serial-like section within the concurrent environment. + +Each of these mechanisms has its own advantages and disadvantages. The choice of which one to use will depend on the specifics of the problem you're trying to solve. It's important to note that these locking mechanisms can often lead to other concurrency problems like deadlocks, so they should be used wisely. + + +#### 10. Can you describe what async/await is? +https://www.avanderlee.com/swift/async-await/ + +## 19. How can you wait for multiple network calls to complete before calling a function that relies on the results? +![1](assets/1.jpg) + +这个题就是给Task.group量身定制的么. 过去可能得用Semaphore吧. + +it depends, if we do the network request in swift concurrency. I would use TaskGroup. + +otherwise, use simple dispatch_group_t + +[https://chat.openai.com/share/79258fec-cf51-41b4-adaf-64a7f91627b4](https://chat.openai.com/share/79258fec-cf51-41b4-adaf-64a7f91627b4) + +在 Swift 5.5 及以后的版本,可以使用 `async/await` 以及 `TaskGroup` 来实现你所说的多个请求同时发出,然后等待所有的结果都回来。以下是一个基本的示例: +![3](assets/3.jpg) + +```swift +import Foundation + +// 模拟一个异步的网络请求函数 +func fetchSomething(id: Int) async throws -> Int { + // 模拟网络延迟 + await Task.sleep(UInt64.random(in: 1...3) * 1_000_000_000) + return id +} + +async { + do { + // 创建一个新的任务组 + try await withTaskGroup(of: Int.self) { group in + // 添加异步任务到任务组 + for i in 1...5 { + group.addTask { + try await fetchSomething(id: i) + } + } + + // 等待所有的结果 + for try await result in group { + print("结果: \\(result)") + } + } + } catch { + print("发生错误: \\(error)") + } +} + +``` + +在这个示例中,`fetchSomething(id:)` 是一个模拟的异步网络请求函数。它接受一个 `id` 参数,然后在一段随机的时间后返回这个 `id`。 + +然后,我们创建一个 `TaskGroup`,并向这个任务组添加5个异步任务。每个任务都会调用 `fetchSomething(id:)`,并传入不同的 `id`。 + +然后,我们使用 `for try await result in group` 这个循环等待所有的结果。当所有的结果都返回时,这个循环才会结束。 + +注意,这个代码应该在某个 `async` 函数或者闭包中运行。在这个示例中,我们使用 `async {}` 创建了一个异步闭包来运行这段代码。如果你在你自己的代码中使用这个模式,你应该把这段代码放在一个 `async` 函数中。 + +最后,请注意处理可能会抛出的错误。在这个示例中,我们使用 `do-catch` 来捕获并打印可能会发生的错误。 + +在 Swift 中,如果你不使用 async/await,你可以使用 `DispatchGroup` 来管理多个并发的任务。以下是一个基本的示例: + +```swift +import Foundation + +// 模拟一个异步的网络请求函数 +func fetchSomething(id: Int, completion: @escaping (Int) -> Void) { + DispatchQueue.global().asyncAfter(deadline: .now() + .seconds(Int.random(in: 1...3))) { + completion(id) + } +} + +// 创建一个新的调度组 +let group = DispatchGroup() + +for i in 1...5 { + group.enter() // 在启动新任务前调用 + + fetchSomething(id: i) { result in + print("结果: \(result)") + group.leave() // 在任务完成后调用 + } +} + +// 等待所有的结果 +group.notify(queue: .main) { + print("所有结果都已回来") +} +``` + +在这个示例中,`fetchSomething(id:completion:)` 是一个模拟的异步网络请求函数。它接受一个 `id` 参数和一个完成回调,然后在一段随机的时间后调用这个回调并传入这个 `id`。 + +然后,我们创建一个 `DispatchGroup`,并向这个调度组添加5个异步任务。每个任务都会调用 `fetchSomething(id:completion:)`,并传入不同的 `id` 和一个完成回调。 + +在启动每个任务之前,我们调用 `group.enter()`。在每个任务完成后,我们在完成回调中调用 `group.leave()`。 + +最后,我们使用 `group.notify(queue:)` 来等待所有的结果。当所有的结果都返回时,这个回调会被调用。 + +如果你不使用 `DispatchGroup` 和 `async/await`,你可以使用 `OperationQueue` 和 `Operation`。你可以将每个网络请求封装为一个 `Operation`,并将这些 `Operation` 添加到一个 `OperationQueue` 中。然后,你可以创建一个完成操作,设置其依赖为所有的网络请求操作,以此来实现等待所有结果都返回的功能。 +![2](assets/2.jpg) + +以下是一个基本的示例: + +```swift +import Foundation + +// 模拟一个异步的网络请求操作 +class FetchOperation: Operation { + let id: Int + var result: Int? + + init(id: Int) { + self.id = id + } + + override func main() { + // 在这里进行网络请求 + Thread.sleep(forTimeInterval: TimeInterval(Int.random(in: 1...3))) + result = id + } +} + +// 创建一个操作队列 +let queue = OperationQueue() + +// 创建网络请求操作 +var operations = [FetchOperation]() +for i in 1...5 { + let operation = FetchOperation(id: i) + operations.append(operation) + queue.addOperation(operation) +} + +// 创建一个完成操作 +let completionOperation = BlockOperation { + for operation in operations { + print("结果: \(operation.result ?? 0)") + } +} + +// 设置完成操作的依赖 +for operation in operations { + completionOperation.addDependency(operation) +} + +// 添加完成操作到队列 +queue.addOperation(completionOperation) +``` + +在这个示例中,`FetchOperation` 是一个自定义的 `Operation`,用于模拟网络请求。它有一个 `id` 属性来标识每个请求,以及一个 `result` 属性来存储每个请求的结果。 + +然后,我们创建一个 `OperationQueue`,并向这个队列添加5个 `FetchOperation`。每个 `FetchOperation` 都会进行一个网络请求,并将结果存储在其 `result` 属性中。 + +接着,我们创建一个 `BlockOperation` 来作为完成操作。这个完成操作会等待所有的网络请求操作都完成,然后打印所有的结果。 + +为了实现这个功能,我们将所有的网络请求操作添加为这个完成操作的依赖。这样,只有当所有的网络请求操作都完成后,这个完成操作才会开始执行。 + +最后,我们将这个完成操作添加到队列中。 + +如果你不使用 `DispatchGroup`,`async/await`,和 `OperationQueue`,可以使用 `Semaphores` 一起配合 `DispatchQueue` 来实现等待所有结果返回。以下是一个基本的示例: + +```swift +import Foundation + +var results = [Int]() +let dispatchSemaphore = DispatchSemaphore(value: 0) +let dispatchQueue = DispatchQueue(label: "com.example.queue", attributes: .concurrent) + +for i in 1...5 { + dispatchQueue.async { + // 在这里进行网络请求 + Thread.sleep(forTimeInterval: TimeInterval(Int.random(in: 1...3))) + results.append(i) + dispatchSemaphore.signal() + } +} + +for _ in 1...5 { + dispatchSemaphore.wait() +} + +print("所有结果都已回来: \(results)") +``` + +在这个示例中,首先创建一个并行队列 `dispatchQueue` 和一个信号量 `dispatchSemaphore`。信号量的初始值为0,表示没有可以使用的资源。 + +对于每个网络请求,我们都在 `dispatchQueue` 中创建一个新的任务。每个任务都会进行一个网络请求,并将结果添加到 `results` 数组中。当任务完成时,我们调用 `dispatchSemaphore.signal()` 来增加信号量的值,表示一个资源变为可用。 + +然后,我们使用一个循环来等待所有的结果。在每次迭代中,我们都调用 `dispatchSemaphore.wait()` 来减少信号量的值,表示我们正在等待一个资源。当所有的资源都变为可用时(也就是所有的网络请求都完成时),这个循环就会结束。 + +最后,我们打印所有的结果。 + + + +Grand Central Dispatch (GCD) 的 `barrier` 可以被用来实现在特定的并行队列中创建一个临界区,这个临界区在所有的先前的任务都完成之后才开始执行,并且它完成之前不会开始执行任何后续的任务。你可以用 `barrier` 来确保所有的网络请求都完成后再执行依赖于这些请求结果的操作。 + +下面是一个基本的示例: + +```swift +import Foundation + +let concurrentQueue = DispatchQueue(label: "com.example.queue", attributes: .concurrent) +var results = [Int]() + +for i in 1...5 { + concurrentQueue.async { + // 在这里进行网络请求 + Thread.sleep(forTimeInterval: TimeInterval(Int.random(in: 1...3))) + results.append(i) + } +} + +concurrentQueue.async(flags: .barrier) { + print("所有结果都已回来: \(results)") +} +``` + +在这个示例中,首先创建一个并行队列 `concurrentQueue`。对于每个网络请求,我们都在 `concurrentQueue` 中创建一个新的任务。每个任务都会进行一个网络请求,并将结果添加到 `results` 数组中。 + +然后,我们使用 `concurrentQueue.async(flags: .barrier) {}` 来创建一个 `barrier` 任务。这个任务会等待所有先前的网络请求任务都完成后才开始执行,而且它完成之前不会开始执行任何后续的任务。在这个任务中,我们打印所有的结果。 + +注意:这个方法仅仅在自己创建的并行队列中有效,对于系统的全局并行队列并不起作用,因为全局并行队列不能被单个任务阻塞。 + + +#### 1. How to implement structured concurrency? +https://www.hackingwithswift.com/swift/5.5/structured-concurrency + + +结构化并发(Structured Concurrency): + +Structured concurrency is a programming paradigm that aims to make concurrent execution more robust and manageable. In Swift, it was introduced with Swift 5.5 and provides a way to work with asynchronous code that simplifies error handling and resource management. + +Here's a brief overview of how structured concurrency works in Swift: + +1. **Task Management**: Structured concurrency in Swift lets you create and manage concurrent tasks within a specific scope, ensuring that the tasks are properly canceled or completed before moving on. This helps to avoid resource leaks and unexpected behaviors. + +2. **Async/Await Pattern**: Using the `async` and `await` keywords, you can write code that appears synchronous, but can execute concurrently. This makes the code more readable and understandable, as it removes the need for callback closures, which can lead to "callback hell." + +3. **Child Tasks**: You can create child tasks within a parent task, and they will be automatically managed within the context of that parent. This provides a clear hierarchy and ownership of tasks, which aids in proper resource management and error handling. + +4. **Actors**: Swift’s structured concurrency also introduces actors, which are reference types that protect access to their mutable state. An actor class ensures that only one task is accessing its mutable state at any given time, helping to prevent data races. + +5. **Cancellation**: Tasks can be easily canceled within their structured context, which ensures that all resources are properly cleaned up. + +6. **Error Propagation**: Errors from child tasks can be easily propagated to parent tasks, making it simple to handle errors across different levels of the task hierarchy. + +Here's an example of using async/await in Swift: + +```swift +func fetchData() async throws -> Data { + // ... +} + +async { + do { + let data = try await fetchData() + // Process data + } catch { + // Handle error + } +} +``` + +Structured concurrency in Swift provides a safer and more intuitive way to write concurrent code, reducing common pitfalls associated with traditional concurrent programming practices. + + +## 网络编程 + +## 16. How does the device register for push notifications, and how do notifications come from the server side? + +[https://chat.openai.com/share/0dc5e81b-cbf8-4c9a-99db-7df06b80f6c2](https://chat.openai.com/share/0dc5e81b-cbf8-4c9a-99db-7df06b80f6c2) + +When registering for push notifications in iOS, there are a few steps involved: + +1. The first step is to ask the user's permission. You can use the UserNotifications framework to request authorization to interact with the user when local and remote notifications arrive. + +```swift +let center = UNUserNotificationCenter.current() +center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in + // Handle the result +} + +``` + +1. If permission is granted, you then register your app’s notification types with the system. You accomplish this by calling the registerForRemoteNotifications() method of the UIApplication object. + +```swift +UIApplication.shared.registerForRemoteNotifications() + +``` + +1. In response to the registration request, the system prompts the user to allow or deny the request, and it gives the user the ability to change the decision later in system settings. +2. If the registration succeeds, the system calls your app delegate’s application(_:didRegisterForRemoteNotificationsWithDeviceToken:) method. In this method, the device token is given which you need to send to your server. + +```swift +func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { + // Forward the token to your server +} + +``` + +On the server side, a push notification is sent via Apple Push Notification service (APNs) or using the HTTP/2-based APNs provider API. + +The general process is as follows: + +1. Your server sends a request to APNs with the device token for the user's device and the payload for the push notification. The payload includes the notification's message text, launch image, and custom sound, among other user-facing details. +2. APNs forwards the notification payload to the user's device. + +In terms of libraries, many companies use Firebase Cloud Messaging (FCM) or other third-party services such as OneSignal for handling notifications. They make it easier to manage the process of sending notifications, and they provide additional features such as analytics. + +When using such services, you generally need to send the device token to your own server or to these third-party servers. They then use this token to send notifications to the device. The device token is like the address that the push notification server uses to deliver the push notification to the correct device. + +## 24. Can you explain how token-based authentication works, where you obtain a token from an API and use it for subsequent API calls? + +![](assets/16913169429010.jpg) + +英文 | 中文 +:-------------:|:-------------: +obtain | = have = 获得. +subsequent | = following = 随后的. + + + +iOS 面试问题: 你能解释一下基于令牌的身份验证是如何工作的吗?如何在这种身份验证中,从应用程序接口获取一个令牌,并在随后的应用程序接口调用中使用它? + +token-based authentication == JWT. +该问题主要是考察JWT工作原理. + +[Answer from AI](https://chat.openai.com/share/cd8cfa69-ab4c-4cf3-b45d-45884b52a72c) + +令牌基础认证是一种用于验证用户身份并授权他们访问系统或应用的安全技术。以下是其基本运作过程: + +1. **用户登录**:用户向服务器提交其凭证(通常是用户名和密码)。 + +2. **令牌生成**:如果凭证有效,服务器将创建一个令牌。这个令牌可以是一个简单的随机字符串,一个JSON Web Token(JWT),或者其他形式的令牌,这取决于系统设计。通常,令牌包含或与用户信息相关,可能包含他们在系统中的权限或角色。 + +3. **令牌传送**:服务器将生成的令牌发送回客户端。 + +4. **客户端存储**:客户端应用在本地存储令牌,例如在web应用的本地存储、会话存储或一个cookie中,或在移动应用的一个安全存储区域。 + +5. **令牌附加到后续请求**:客户端应用在每个后续的API请求中都包含令牌。这通常在HTTP头部完成 - 通常是在'Bearer {token}'格式的Authorization头部,但这取决于API的具体情况。 + +6. **服务器验证**:服务器验证附加在API请求上的令牌。如果它是有效的(并且没有过期),请求就会被处理。如果不是,将返回一个错误,通常是401 Unauthorized(未授权)HTTP状态。 + +7. **过期和刷新**:令牌具有有限的生命周期,并会在一段时间后过期。这是一个安全功能,用来限制令牌被盗的损害。当令牌过期时,服务器将拒绝请求,客户端应用将需要获取新的令牌。这可以通过重新验证用户或使用"刷新令牌"来完成,刷新令牌是一种生命周期更长的令牌,可以用来换取新的访问令牌。 + +这个系统使服务器避免存储会话状态数据 - 代替的是,所有必要的东西都打包到令牌中,从而形成一个无状态的,可扩展的系统。同时,它提供了一个健壮和安全的用户认证方法。 + + +**安全相关:** + +## 22 .How do you securely store API keys in your Swift code without exposing them? Have you worked with making API calls that require API keys? How did you handle the secure storage of those keys? + +英文| 中文 +:-------------:|:-------------: +expose | 暴露 +secure storage | 安全存放问题 + +![7](assets/7.jpg) +![8](assets/8.jpg) +![9](assets/9.jpg) +![10](assets/10.jpg) +![11](assets/11.jpg) + + + +[Secure Secrets in iOS app](https://medium.com/swift-india/secure-secrets-in-ios-app-9f66085800b4) + +在Swift代码中安全存储API密钥的方法有几种: + +- 使用环境变量:你可以在编译时设置环境变量来存储API密钥。这种方法的优点是,即使源代码被公开,只有可以访问编译环境的人才能看到密钥。 +- 使用`.xcconfig`文件:可以将API密钥存储在`.xcconfig`文件中,并在项目设置中引用该文件。然后在代码中使用`Bundle.main.infoDictionary?["API_KEY"]`来访问API密钥。为了安全,`.xcconfig`文件不应该被包含在版本控制系统中。 +- 使用苹果的Keychain服务:Keychain是一个安全的存储系统,可以用来存储各种敏感信息,例如密码、密钥和证书等。 +- 使用第三方解决方案:例如,Cocoapods-keys是一个插件,可以让你安全地存储环境变量。 + +[Secret Management on iOS](https://nshipster.com/secrets/) + +是的,我在工作中使用过需要API密钥的API调用。我通常使用以上提到的几种方法来安全地存储这些密钥。实际选择哪种方法取决于具体的项目需求和团队协议。 + +当然,以下是一些关于如何改进在Swift中安全存储API密钥的建议: + +1. 使用环境变量:确保您的构建环境安全性,例如,使用有足够权限的用户帐户来运行构建,并限制对构建服务器的访问。 +2. 使用.xcconfig文件:在保存这种类型的文件时,您可以将它们加密,以便即使它们被复制或泄露,也无法直接访问。您还可以使用CI/CD工具,例如Jenkins或Gitlab CI,在构建时生成这些文件,并在构建完成后立即删除它们。 +3. 使用苹果的Keychain服务:您可以使用高级的加密算法(例如AES)对保存在Keychain中的数据进行加密,以防止被静态分析。 +4. 使用第三方解决方案:在选择第三方库时,应充分调查其安全性,并确保它们已通过适当的安全审查。您还应该定期更新这些库,以获取任何可能的安全更新。 +5. 零知识证明:这是一种先进的密码学技术,可以使服务器验证用户的身份,而无需知道用户的凭证。这种方法可以用来替代传统的API密钥,进一步提高应用的安全性。 +6. 在客户端不存储密钥:最好的方法可能是不在客户端存储密钥,而是在服务器端进行存储,并通过安全的方法在需要的时候将其传输到客户端。例如,每次需要API密钥时,都可以向一个安全的服务器端点发送请求,然后服务器会返回一个临时密钥,这个密钥在一段时间后会过期。这种方法的优点是密钥不会被永久存储在客户端,从而减少了被攻击者获取的可能性。 + + +上面是标准的答案, 下面谈一下之前在项目中的一些实际操作: + +这个我们是做了十六进制的混淆的,每次调用在runtime里decode一下 + +'ll do some letters replacement trick.like I'll replace all a to A, then save it to the disk.like key chains.这种, 简单的反汇编看到的string不是最终的key. + +这个之前看到有些是放到单独的类,然后好像是把这个类从 Git 里移除. + +凯撒密码。。。。机械加密法是最原始的加密方式.还不如hash呢. 不, 前提是这个key是字符串本地的 . 不是remote下载的. + +那就混合加密吧, 机械加密+DSA, 然后hash, 万无一失, + +比如现在告诉你, apple key id 是 "abcde" 让你存本地, 你会怎么存, 打包就会带上的, 转成ASCII,然后当string用.转成ascii的话. 如果我是想偷key的人, 我就会用反编译工具简单查看所有string.找到这个之后. 打眼一看就是ascii的. 无任何安全措施. + +it depends,一方面是代码里面可以加密解密. 增加反编译的难度. 另一方面, 可以讲这些key存放在本地的一个文件中, 例如你可以把信息放进一个image中, 通过读取image, 再转换成string. 因为没人会知道一张图片是一个存放key的地方, 就算知道了, 也不知道key存在image哪里.让我想起了当年贴吧上的种图. 把片子的种子文件放在一个.rar文件里,然后跟一个image合并,上传贴吧 阿里的组件, 接入流程里, 会告诉你需要安全图片, 实际上就是存放 Key的地方. [https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7662649.0.0.5608be48IxwIEA&treeId=129&articleId=118101&docType=1](https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7662649.0.0.5608be48IxwIEA&treeId=129&articleId=118101&docType=1) + +因为key高概率都是字母数字符号啥的. 基本都在0x7F内. 传统加密会遇到一些问题.你以为要加密, 所以要提供另一个key, 会引入新的安全问题. 但是当然key多了, 估计偷的人也傻逼了.hash一下呢. hash不可逆哦. 我们密码学课上老师讲过,没有破解不了的加密方式,但是你可以让破解成本趋近于无穷. hash之后, 偷的人不知道了, app自己也不知道了. base64也算一种hash. base64结构太典型, 一眼就能看出. 直接decode. 理论上md5都是可逆的。。。。 + +这个我们就是用的keystore而已,外加一个过期时间.这个策略也跟后台他们对token的验证策略有关. + +keystore的问题在于是明文存储.所以需要加密之后塞进去才安全.DSA一下呗.不过密钥怎么存.你这样会引入新的安全问题.当然, 只要你引入的多了. 一堆key 属于是狡兔三窟. 偷的人估计放弃了. 过去一直播的数据加密,也是RSA+DES. 所以我选择使用传替换逻辑. 数据非对称加密,再把密钥对称加密. 简单的话. 替换逻辑最快.偷的人需要知道string 以及变更逻辑.这个都不需要AI就能分析出来。。。。这个变更逻辑就是加密算法 (只不过这个加密算法不需要其他key, 只是替换. 模仿游戏看过么.凯撒密码?图灵那个年代都能给你解出来. + +[Secret Management on iOS](https://nshipster.com/secrets/) + +举个例子嘛, 就是需要一个不需要其他key的加密算法. 需要一本莫名其妙的小说,当密码母本是吧.你之前说的base64, 简单ascii, 破解起来太轻松了.我们能做的就是提高他们的破解门槛.他那台机子可不是一般人能有的.机械密码发展到最后也就是英格玛密码机了,40年代的算力都能破解. 他能破解我, 但是懒得破解我, 所以我是安全的. + +![](../assets/16912074297283.jpg) + + +![](../assets/16912074367818.jpg) + + +加点盐就够了.这是纯本地的嘛.appkey一般都是纯本地加密吧.你说的是oauth那套么.能放server不放client.如果只是判断用户身份的话. appkey没有啥好保密的. appsecret是关键, 是加密key.保护appsecret的方法就是上面咱们一直讨论的东西.app launch的时候就需要appkey呢?.放server的话,来不及啊.比如推送的key.看需求, 你说的是三方的appsecret是吧.我们之前用的推送库,既有appkey,也有appsecret.不可能放server啊,因为launch的时候,就需要验证这俩了.他们应该只需要传appkey吧.我看分享的那些只要appkey.不是,两个都得传.一个很奇怪的platform.以前用firebase,就只需要传一个.哦哦, 微博就是两个都穿.那确实奇怪. 为啥要穿这个. 可能微博用的不是理论上的appsecret ?现在呢. 我们换推送平台了.就变2个了 + +调试、版本管理、**项目管理:** + +## 13. How do you debug crash issues in your daily work in iOS development? + +[https://chat.openai.com/share/2bb17014-7b44-4310-bcb8-82e6344b2dde](https://chat.openai.com/share/2bb17014-7b44-4310-bcb8-82e6344b2dde) + +关于Xcode新版本的查看 View Memory的步骤如下: To view memory in Xcode, go to Debug → Debug Workflow → View Memory. + +我主要看的是这一篇 +Advanced Swift debugging for UIKit +[https://medium.com/superhuman-co/advanced-swift-debugging-for-uikit-e154d1c28aaf](https://medium.com/superhuman-co/advanced-swift-debugging-for-uikit-e154d1c28aaf) + +Debugging crash issues in iOS development can be done using several different tools and methods, including the following: + +1. **Xcode Debugger**: This is the most commonly used tool for debugging iOS apps. The Xcode debugger allows developers to step through their code line by line, examine the state of variables and data structures, set breakpoints, and execute code snippets in real time. +2. **Crash Reports**: In the case of crashes, Xcode generates crash logs that can be extremely helpful in understanding what happened. You can access these logs in the "Window" menu under "Devices and Simulators". The logs will contain information about the state of the app and the device at the time of the crash. +3. **Exception Breakpoint**: By setting an exception breakpoint in Xcode, you can make the debugger stop whenever a certain type of exception is thrown. This can be particularly helpful for identifying the exact point at which a crash occurs. +4. **LLDB Console**: The LLDB console in Xcode is a powerful tool for debugging. It allows developers to evaluate and interact with their code on a very granular level. +5. **Instruments**: Apple's Instruments tool is extremely powerful for profiling and debugging memory leaks, performance issues, and other problems that can lead to crashes. +6. **Symbolicating Crash Logs**: Symbolicating crash logs helps transform memory addresses into human-readable function names and line numbers. This makes it easier to identify where a crash occurred in your code. +7. **Address Sanitizer and Undefined Behavior Sanitizer**: These are powerful tools available in Xcode for finding and fixing bugs related to memory corruption and undefined behavior. +8. **Third-party crash reporting tools**: Tools such as Crashlytics or Sentry provide real-time crash reporting, with detailed reports of the stack trace, device type, OS version, and other pertinent information. +9. **Unit Testing and UI Testing**: Building a robust suite of unit and UI tests can help catch issues before they make it into production. + +In general, the approach to debugging will depend on the nature of the issue. If the issue is reproducible, you can use the debugger to step through the code and find where the problem is. If the issue is not easily reproducible, you might rely more on crash logs and other diagnostic information. + + +## Are you familiar with setting up CI/CD pipelines for Swift projects? + +[https://chat.openai.com/share/8afd4553-c94f-4cf2-b90f-1ff22f7fc6b8](https://chat.openai.com/share/8afd4553-c94f-4cf2-b90f-1ff22f7fc6b8) + +一些好用的CI/CD工具 : https://github.com/bazelbuild/bazel + + +#### 使用 YAML 在 Microsoft Azure + +使用 YAML 在 Microsoft Azure 上为 Swift 项目创建 CI/CD 的过程大致分为以下步骤: + +1. 首先需要在 Azure DevOps 里创建一个新的项目,然后将你的代码源通过 Git 上传到这个新的项目中。 +2. 创建一个新的 Pipeline。在 Azure DevOps 的左侧菜单中选择 Pipelines,然后选择 New pipeline。 +3. 选择源代码仓库类型。在这里,你需要选择你的代码存放的位置,通常是 Azure Repos Git。 +4. 选择 YAML 作为你的 pipeline 配置方式。你将看到一个配置选项,让你选择 YAML 或 Classic editor。选择 YAML。 +5. 创建并配置你的 `azure-pipelines.yml` 文件。一个基础的 Azure Pipelines YAML 文件可能类似以下格式: + +```yaml +trigger: +- master + +pool: + vmImage: 'macOS-latest' + +steps: +- task: UseRubyVersion@0 + inputs: + versionSpec: '>= 2.6' + +- script: | + sudo gem install cocoapods + sudo xcode-select --switch /Applications/Xcode_11.3.1.app + echo '##vso[task.prependpath]/usr/local/bin' + echo '##vso[task.prependpath]/usr/bin' + displayName: 'Install dependencies' + +- script: | + swift build + swift test + displayName: 'Build and test' + +``` + +上述 YAML 文件执行以下操作: + +- 监听 master 分支,每次有新的提交时自动触发 pipeline。 +- 使用最新版本的 macOS 虚拟机。 +- 使用 Ruby 版本 >= 2.6。 +- 安装 Cocoapods 并切换到指定的 Xcode 版本。 +- 执行 `swift build` 和 `swift test`。 + + 保存并运行 Pipeline。 + +请注意,以上只是一个基本示例,实际的 CI/CD 设置将根据你的项目的具体需求有所不同。 + +同时,由于 Swift 的开发一般依赖于 Xcode,而 Xcode 目前只能在 macOS 上运行,所以在 Azure Pipelines 上使用 macOS 环境进行构建和测试需要有一定的付费成本。具体的费用请参考 Azure 的官方定价信息。 + + +#### 使用 YAML 在GitHub Actions + +也可以在 GitHub Actions 中使用 YAML。实际上,YAML 是用来定义 GitHub Actions 工作流的语言。GitHub Actions 允许你直接在你的 GitHub 仓库中使用 YAML 文件自动化软件开发工作流。 + +下面是一个基本的 GitHub Action 的 YAML 文件示例,用于在一个简单项目上运行连续集成过程: + +```yaml +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Install dependencies + run: npm install + - name: Run tests + run: npm test +``` + +在这个例子中,工作流在推送或向 `master` 分支发起 pull 请求时被触发。它在最新的 Ubuntu 虚拟环境上运行,并设置 Node.js 版本为 12,安装依赖,并运行测试。 + +你可以在仓库中的 `.github/workflows/` 目录中创建这个 YAML 文件,GitHub Actions 将会自动识别并根据你定义的触发器执行它。 + +GitHub Actions 提供了一种强大灵活的方式来自动化各种任务,包括构建、测试、部署应用程序等等,所有这些都是使用 YAML 定义的。 + + +## Can you tell me more about how you manage libraries and codebases in your project? + +[https://chat.openai.com/share/5c0a2f2c-fc37-463c-bac4-fd3b47730186](https://chat.openai.com/share/5c0a2f2c-fc37-463c-bac4-fd3b47730186) + +CocoaPods和Swift Package Manager(SPM)都是iOS开发中常用的依赖管理工具,但它们在一些方面上有所不同。下面是两者之间的一些主要区别: + +1. **兼容性**:CocoaPods支持Objective-C和Swift,并且它在iOS,macOS,watchOS和tvOS等平台上都能工作。而SPM最初只支持Swift,但在近年来也开始支持Objective-C。至于平台支持,Swift Package Manager 在 Swift 5.3 版本开始支持 iOS, watchOS, and tvOS。 +2. **集成方式**:CocoaPods通过创建一个workspace并将所有的依赖项集成到一个名为Pods的项目中,然后开发者需要在该workspace中进行开发。而SPM则是直接将依赖项集成到当前的项目中,开发者可以在项目设置中管理所有的依赖项。 +3. **配置**:CocoaPods使用一个名为Podfile的文件来声明项目的依赖项。而SPM使用Swift语言编写的Package.swift文件来声明项目的依赖项,这个文件不仅包含了依赖项的信息,还包含了项目的构建配置等信息。 +4. **社区支持**:CocoaPods是一个成熟的工具,社区支持广泛。然而,SPM是苹果官方推出的工具,与Xcode的集成度更高,未来可能会有更多的社区支持。 +5. **私有库支持**:CocoaPods可以轻易地配置和使用私有库。SPM在Swift 5.2之后也开始支持私有库,但在配置上可能比CocoaPods要复杂一些。 +6. **二进制框架支持**:CocoaPods支持使用二进制框架,这可以显著减少编译时间。然而,直到Swift 5.3,SPM才开始支持二进制框架。 + +在选择CocoaPods还是Swift Package Manager时,需要考虑到上述的一些因素,以及项目的具体需求。 + +### Unit Test +#### 1. How to mock data +https://ocmock.org +#### 2. How to separate production env and mock +protocol +#### 3. How to test the view model with SwiftUI? +https://www.youtube.com/watch?v=kHtEtAP4DNA + +#### 4. How to inject mocked networking logic? +https://www.avanderlee.com/swift/dependency-injection/ + +#### 5. What's Test-driven development? +https://blog.cleancoder.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html + +https://www.codecademy.com/article/tdd-red-green-refactor + + + **UI布局:** + +## How do you create UI elements like labels and images, and how do you manage their layout and orientation when the device is rotated? + +https://chat.openai.com/share/d9258730-b605-4561-af1c-d053da2bb5b0 + +Are you using any third-party libraries for layout in Auto Layout? +To create UI elements like labels and images in iOS, you can use UIKit, a framework that provides a set of tools for developing graphical interfaces. Here's a simple example of how to create a label and an image: + +1. **Creating a UILabel:** + +```swift +let myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) +myLabel.center = CGPoint(x: 160, y: 285) +myLabel.textAlignment = .center +myLabel.text = "I am a test label" +self.view.addSubview(myLabel) +``` + +2. **Creating a UIImage and UIImageView:** + +```swift +let myImage = UIImage(named: "myImageName") +let myImageView = UIImageView(image: myImage) +myImageView.frame = CGRect(x: 0, y: 0, width: 100, height: 200) +self.view.addSubview(myImageView) +``` + +For managing their layout and orientation when the device is rotated, there are two general approaches - AutoLayout and manual adjustment. + +**AutoLayout:** AutoLayout is the most common way of managing layout. You set constraints for each UI element in relation to the elements around it or to the superview. When the device rotates, these constraints are automatically recalculated to adjust the positions of the UI elements. Here's an example: + +```swift +myLabel.translatesAutoresizingMaskIntoConstraints = false +NSLayoutConstraint.activate([ + myLabel.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20), + myLabel.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 20), + myLabel.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -20), +]) +``` + +**Manual adjustment:** Sometimes, especially for more complex custom views, you might need to manually adjust the layout. You can override the `viewWillLayoutSubviews` or `viewDidLayoutSubviews` methods in the view controller, which get called when the device is rotated. + +```swift +override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + // Adjust myLabel and myImageView here +} +``` + +Remember that when handling rotation manually, you have to take care of all the adjustments yourself, including handling different screen sizes and aspect ratios. + +It's generally recommended to use AutoLayout where possible, and fall back to manual adjustment only when necessary. + +Here is the iOS interview question: How do you create UI elements like labels and images, and how do you manage their layout and orientation when the device is rotated in SwiftUI? + +In SwiftUI, creating UI elements and handling their layout and orientation changes is quite straightforward due to its declarative syntax and automatic handling of UI updates. + +Here is an example of how you can create a Label and Image: + +```swift +struct ContentView: View { + var body: some View { + VStack { + Text("Hello, World!") + .font(.title) + .padding() + + Image("imageName") + .resizable() + .aspectRatio(contentMode: .fit) + } + } +} +``` + +In the code above, we have created a VStack (a vertical stack view) that contains a Text view (the equivalent of UILabel) and an Image view. The Image view is resizable, and its content is set to maintain the aspect ratio. + +When it comes to device rotation, SwiftUI automatically handles most of the orientation changes. As long as you've properly set up your UI using stacks (HStack, VStack, ZStack) and flexible frames, SwiftUI will adapt your UI to the device's current orientation. + +However, if you need to make specific adjustments based on the orientation, you can do so by detecting the current device orientation. You can determine the device's orientation using the `@Environment` property wrapper, which allows you to access system-wide environment values: + +```swift +@Environment(\.sizeCategory) var sizeCategory +@Environment(\.verticalSizeClass) var verticalSizeClass +@Environment(\.horizontalSizeClass) var horizontalSizeClass +``` + +With these properties, you can adjust your layout according to the device's orientation and size class. + + +Here is the iOS interview question: Are you using any third-party libraries for layout in Auto Layout? + +Yes, many iOS developers use third-party libraries to simplify working with Auto Layout. Below are a few examples: + +1. **SnapKit**: This is a Swift-based DSL (Domain Specific Language) that makes Auto Layout easy to use and less verbose. With SnapKit, you can create constraints with fewer lines of code and with a syntax that's easier to read and understand. + +```swift +let box = UIView() +superview.addSubview(box) +box.snp.makeConstraints { (make) -> Void in + make.top.equalTo(superview).offset(20) + make.left.equalTo(superview).offset(20) + make.width.height.equalTo(50) +} +``` + +2. **Masonry**: Masonry is another popular DSL for Auto Layout, but it's used with Objective-C. It also allows you to make constraints in a more human-readable way. + +```objective-c +UIView *box = [[UIView alloc] init]; +[superview addSubview:box]; +[box mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(superview.mas_top).with.offset(20); + make.left.equalTo(superview.mas_left).with.offset(20); + make.width.equalTo(@50); + make.height.equalTo(@50); +}]; +``` + +3. **Cartography**: This is a Swift framework that also simplifies Auto Layout. It provides a declarative DSL that enables you to write constraints more naturally. + +```swift +let box = UIView() +superview.addSubview(box) +constrain(box) { box in + box.top == box.superview!.top + 20 + box.left == box.superview!.left + 20 + box.width == 50 + box.height == 50 +} +``` + +These libraries are not required for using Auto Layout - they just make it more convenient and easier to read and write. If you're starting a new project or working with a team, it's worth considering whether the benefits outweigh the cost of adding a third-party dependency to your project. + + +## What is the Intrinsic Content Size in Auto Layout for? + +4.Auto Layout 中的 Intrinsic Content Size 是干麻用的? + +Intrinsic Content Size is a part of Auto Layout in iOS that enables views to have their own natural size, determined by the content that is within them. This is important because it allows views to adapt their sizes based on the content they display, which is crucial for supporting different screen sizes, orientations, and dynamic type sizes. + +For example, a UILabel has an intrinsic content size that fits the text it is displaying. If the text is short, the label's intrinsic content size is small, and if the text is long, the label's intrinsic content size is large. Similarly, a UIButton has an intrinsic content size that fits its title and image. + +Not all views have an intrinsic content size. Some views, like UIView, don't have content to base their size on, so they don't have an intrinsic content size by default. + +Intrinsic Content Size is used in conjunction with Auto Layout's constraint-based layout system to determine the size and position of views within a hierarchy. Constraints can either respect a view's intrinsic content size, or they can override it, providing more control over a view's layout. + +Interviewers may ask this question to gauge your understanding of how Auto Layout works and how views determine their own sizes. To answer, you'd want to explain the concept and provide examples of views that have an intrinsic content size, and you might also talk about how it's used in the larger context of Auto Layout. + +## **What is the purpose of prepareForReuse of the Cell of UITableView and when will it be called?** + +`prepareForReuse` is a method that a `UITableViewCell` subclass can override to prepare for the cell to be reused in a UITableView. The main purpose is to reset the cell to its original state or to clear the data of the previous state so it can be ready for use again. + +This method is invoked just before the object is returned from the UITableView method `dequeueReusableCell(withIdentifier:)`. As such, you can use this method to clean up and prepare the cell for reuse. + +Here's an example: + +``` +override func prepareForReuse() { + super.prepareForReuse() + + // Reset the cell to its original state + self.imageView?.image = nil + self.textLabel?.text = nil + self.detailTextLabel?.text = nil +} + +``` + +Keep in mind that if your cell is showing different kind of data based on different states, you must ensure that all possible states are reset in the `prepareForReuse` method to prevent old data from appearing in the newly configured cell. + + +---- + +

diff --git a/02_Swift_interview_questions/theory.md b/02_Swift_interview_questions/theory.md new file mode 100755 index 0000000..4667502 --- /dev/null +++ b/02_Swift_interview_questions/theory.md @@ -0,0 +1,2316 @@ +# 理论篇: Swift/ObjC 语言基础 + +

+ +Swift面试题共分为两篇: + +- [《理论篇: Swift/ObjC 语言基础》](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/theory.md) + - [《实战篇: iOS项目开发技能》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/practical.md ) + + 是我自己在国外面试时准备的笔记, 所以很多是英文的, 后续有时间再翻译. + +# 目录 + +## 初级面试题 + +## 代码优化题 + +1. 优化判断题 +2. 代码优化 + +## 数据类型与结构 + +- WHY Swift not ObjC? +- 介绍一下 Swift 相关的重要变更事件 +- What is the difference between a struct and a class? 请比较 Swift 中的结构体和类的主要区别?class 和 struct 的区别. +- Q: if a struct is an immutable value type, why we can mutate the size property? +- Swift 的 Copy-on-Write 是怎么实现的 +- What are the basic categories of types in Swift? +- What is a Tuple in Swift? +- Is it possible to return multiple values from a function in Swift? If yes, how? +- final 是什么: +- String 与 NSString 的关系与区别: +- defer 使⽤场景: +- struct 在堆区还是栈区? +- 属性中,值属性,和计算属性有什么区别? +- 声明⼀个只有⼀个参数没有返回值闭包的别名 +- Principle of Dictionary? + +## **泛型:** + +- Q.什么是泛型,swift哪些地方使用了泛型? +- Have you used generics in Swift? +- 请解释 Swift 中的泛型是什么?并描述一下它的本质? +- *泛型的本质* +- What's the difference between `opaque type` and `generic`? + + +## 内存管理、**性能优化和调试:** + +- When do you use static variables in Swift?static 关键字和 class 关键字 修饰的类⽅法有什么区别? +- Can you explain the difference between weak and unowned references in Swift? +- What is memory leak ? how to solve? + +## 数据处理、语言安全、 **访问权限:** + +- Please implement a convenience init method for a subclass. +- Swift 的安全性 +- 请解释 Swift 中的访问权限如何设置,以及不同访问级别之间的区别? +- Swift Try catch 的原理? +- Swift 的计算属性、存储属性、懒加载 +- How do you filter an array of instances to extract a specific property? +- The time complexity of the map, filter, and reduce? +- *Sequence / ⾼阶函数 / Collection* +- 混编过程中遇到的 Crash + +## 面向对象 + +- Swift 对象和 OC 对象的区别 +- What is polymorphism? +- 不通过继承,代码复⽤ / 共享的⽅式有哪些? +- 父类的分类中写了一个方法, 子类能否直接调用。告知原因。 + +## **面向协议编程:** + +- What is a protocol and how can we benefit from it? +- Can we add a property in a protocol? Can we put property in the protocol in Swift? And can we share the same property value through protocol in Swift? +- 请描述什么是面向协议编程(Protocol-oriented Programming),并举例说明其在Swift中如何实现? +- Swift 的协议和 OC 的协议有什么区别 +- **What is protocol extension? Why Swift called as Protocol Oriented Language?** + +## **闭包:** + +- Have you worked with closures in Swift? +- When would you use a closure? +- What are closures in Swift? +- 请解释 Swift 中的闭包是什么,并描述一个闭包在实际编程中的应用场景? +- Swift 的闭包(Closure) 和 OC 的 Block +- 请解释 Swift 中的闭包是什么,并描述一个闭包在实际编程中的应用场景? + + +## **可选类型:** + +- What are the ways to unwrap an optional value in Swift? +- How do you unwrap optionals? +- Swift 中的可选型是什么?它的本质是什么? +- What is the difference between if let and guard let? +- *Optional(可选型) 是⽤什么实现的* + +## **lazy 关键字:** + +- 请解释 Swift 中的 lazy 关键字是怎么实现的?在什么情况下会使用它? +- *lazy load 是怎么实现的?* + +# 正文 + +## 初级面试题 +![1](assets/1.png) + +Answer: C + +A tuple in Swift is defined as: let vals = +("val", 1) + + +A valid dictionary in Swift should be defined as: let vals = ["val": 1] + +A valid set in Swift should be defined as: let vals: Set = ["val", "1"] + + +![2](assets/2.png) + + +**Answer:** A) Extensions cannot add properties. In Swift, extensions can add computed instance properties and computed type properties, but they cannot add stored instance properties, or property observers such as `willSet` and `didSet`. Therefore, the code snippet you provided is incorrect. + +A corrected version using computed properties could look like this: +```swift +extension String { + var firstLetter : Character { + get { + return self.count > 0 ? self[self.startIndex] : nil + } + set { + // Replace first character of string, or add if none exists + if self.count > 0 { + self.replaceSubrange(self.startIndex...self.startIndex, with: String(newValue)) + } else { + self.append(newValue) + } + } + } +} +``` + + +![](assets/16918516162699.jpg) + +Answer: B. + +![3](assets/3.png) + +**Answer:** C) Dictionary + + + +In Swift, when you define a `typealias`, it creates a new name for an existing type. However, when you print the type using `type(of:)`, it shows the original type, not the typealias name. + +but it is better to write the code in this way: + +```swift +typealias Thing = [String: Any] +var stuff: Thing = [:] +print(type(of: stuff)) +``` + +it is better to init the stuff before you use it, but it won't be a big problem. + +The output will indeed be `Dictionary`. The `type(of:)` function will print the actual type of `stuff`, which is `Dictionary`, not the `typealias` name `Thing`. + + +![4](assets/4.png) + +**Answer:** A) ABC. After executing the code, the value of `test` will be "ABC". The variable `vr` is defined as a tuple with named elements. The tuple has two elements: `name` and `val`. In Swift, you can access tuple elements using dot syntax followed by the index of the element. The first element in a tuple has an index of 0, the second element has an index of 1, and so on. In this case, `vr.0` refers to the first element of the tuple, which is `"ABC"`. Therefore, the value of `test` will be `"ABC"`. + + +![5](assets/5.png) + + +**Answer:** C) string?. To declare an optional String in Swift, you use the syntax `String?`. The question mark `?` indicates that the variable can either contain a String value or be `nil`, which means it is optional. For example: +```swift +var optionalString: String? +``` +In this case, `optionalString` is an optional variable that can hold a String value or be `nil`. + + +![6](assets/6.png) + + +**Answer:** D) either a designated or another convenience initializer. In Swift, a convenience initializer must call another initializer within the same class, whether it is a designated initializer or another convenience initializer. It ensures that the complete initialization chain is followed, allowing the designated initializer at the top of the chain to initialize all properties. + +To clarify, the designated initializer is the primary initializer responsible for initializing all properties of a class, and it must eventually call a designated initializer from its superclass to ensure all properties throughout the inheritance chain are initialized. + +On the other hand, convenience initializers are secondary initializers that provide additional ways to create an instance. They must call a designated initializer or another convenience initializer from the same class before customizing the instance if needed. This guarantees that all properties are initialized properly regardless of the initializer used to create the instance. + + +![7](assets/7.png) +The correct answer is: + +**Answer:** C) "t" + +When the provided Swift code is executed, it will iterate over each character in the string "t" using the `forEach` method. The closure `{ (char) in print(char) }` is called for each character, and it will print each character to the console. In this case, there's only one character in the string, which is "t", so "t" will be printed to the console. + +Output: +``` +t +``` + +![8](assets/8.PNG) + + +**Answer:** B) Protocol functions cannot have implementations. The code is incorrect because protocol functions cannot have default implementations. Protocols are used to define a set of methods or properties that must be implemented by conforming classes or structures. However, protocol functions cannot provide a default implementation within the protocol definition itself. + +To fix the code, remove the implementation of the `add` function from the protocol definition, like this: +```swift +protocol iTeaTime { + func add(x1: Int, x2: Int) -> Int +} +``` +Now, any class or structure that conforms to the `iTeaTime` protocol will be required to provide its own implementation of the `add` function. + + +![9](assets/9.png) + +**Answer:** A) executed on the main queue. The `DispatchQueue.main.async` method takes a block of code (closure) and schedules it to be executed asynchronously on the main queue. In iOS, the main queue is responsible for handling UI updates and user interactions. By using `DispatchQueue.main.async`, you ensure that the code inside the block will be executed on the main thread, allowing you to safely update the UI elements from that block. + +For example: +```swift +DispatchQueue.main.async { + // Code here will be executed on the main queue + // You can safely update UI elements from this block +} +``` + +## 代码优化题 + +## Q: 代码题: + +``` +class Person { + var name: String + + init(name: String) { + self.name = name + } +} + +struct Company { + var size: Int + var manager: Person + + mutating func increaseSize() { + self = Company(size: size + 1, manager: manager) + } + + mutating func increaseSizeV2() { + size += 1 + } +} + +var companyA = Company(size: 100, manager: Person(name: "Peter")) + +var companyB = companyA +companyA.size = 150 // if a struct is an immutable value type, why we can mutate the size property? +print(companyA.size) // ? question1 +print(companyB.size) // ? question2 + +companyA.manager.name = "Bob" +print(companyA.manager.name) // ? question3 +print(companyB.manager.name) // ? question4 + +companyA.increaseSize() +print(companyA.size) // ? question5 +companyA.increaseSizeV2() +print(companyA.size) // ? question6 + +``` + +A: + +``` +class Person { + var name: String + + init(name: String) { + self.name = name + } +} + +struct Company { + var size: Int + var manager: Person + + mutating func increaseSize() { + self = Company(size: size + 1, manager: manager) + } + + mutating func increaseSizeV2() { + size += 1 + } +} + +var companyA = Company(size: 100, manager: Person(name: "Peter")) + +var companyB = companyA +companyA.size = 150 // if a struct is an immutable value type, why we can mutate the size property? +print(companyA.size) // ? 150 +print(companyB.size) // ? 150 + +companyA.manager.name = "Bob" +print(companyA.manager.name) // ? Bob +print(companyB.manager.name) // ? Bob + +companyA.increaseSize() +print(companyA.size) // ? 151 +companyA.increaseSizeV2() +print(companyA.size) // ? 152 +``` + +``` + +答案 + +question1:150 +question2:100 +question3:Bob +question4:Bob +question5:151 +question6:152 + +``` + + +注意 与 copy on write 辨别 + +## 代码题 +![5](assets/5.jpg) + +[https://chat.openai.com/share/29d0a44a-26cc-4685-a68a-92a134be6d3e](https://chat.openai.com/share/29d0a44a-26cc-4685-a68a-92a134be6d3e) + + +## 题目 + +如果 carsInDriving 的数量很大,如何改进这段代码? + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + var carsInDriving: [Car] { + cars.filter({$0.driving}) + } + + func loop() { + for car in carsInDriving { + // ... + } + } +} + +``` + +## 答案 + +**初始**方案 **:** + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + var carsInDriving: [Car] { + cars.filter({$0.driving}) + } + + func loop() { + for car in carsInDriving { + // ... + } + } +} + +``` + +在这段代码中,`carsInDriving` 的 getter 方法有 O(n) 的时间复杂度,其中 n 是 `cars` 数组的元素数量。这是因为我们需要检查数组中的每个元素以确定它是否在驾驶。然而,这个过滤操作只会在每次访问 `carsInDriving` 时执行一次,并且结果不会被存储,所以在同一个 `get` 调用中,复杂度是 O(n)。`loop` 方法的时间复杂度也是 O(n),这是因为它在每次调用时都需要重新计算 `carsInDriving`,然后遍历所有正在驾驶的车。 + +这里的数组不建议换成set. set主要用于去重的场景, 而且set是无序的. + +优化方案1**. 优化后的代码:** + +```swift +struct Car { + var driving = false +} + +class Test { + private var _carsInDriving: Set? = nil + var cars: [Car] { + didSet { + _carsInDriving = nil + } + } + + var carsInDriving: Set { + if let carsInDriving = _carsInDriving { + return carsInDriving + } else { + let carsInDriving = Set(cars.filter({$0.driving})) + _carsInDriving = carsInDriving + return carsInDriving + } + } + + func loop() { + for car in carsInDriving { + // ... + } + } +} + +``` + +在这段代码中,`carsInDriving` 的 getter 方法在 `_carsInDriving` 为空时具有 O(n) 的时间复杂度,否则它具有 O(1) 的时间复杂度。这是因为我们只在 `_carsInDriving` 为空时计算 `carsInDriving`,并将结果存储在 `_carsInDriving` 中。这样就创建了一个缓存机制。`loop` 方法的时间复杂度仍然是 O(n),但如果 `carsInDriving` 被多次调用,并且 `cars` 没有发生改变,那么除了第一次计算外,其余的调用都具有 O(1) 的时间复杂度。 + +**优化方案2:** + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + func loop() { + for car in cars where car.driving { + // ... + } + } +} + +``` + +在你的代码中,`loop` 方法的时间复杂度是 O(n),这是因为你直接在 `loop` 方法中遍历 `cars`,并在遍历时过滤出正在驾驶的车辆。这个方法的优点是它在每次调用时都对 `cars` 进行实时的过滤,无需依赖额外的状态,但缺点是每次调用 `loop` 时都需要重新过滤 `cars`。 + +总结起来,哪种方法更好取决于你的使用情况。如果 `cars` 集合经常变化,或者我们不需要频繁地访问正在驾驶的车辆,那么你的方法可能更好。如果我们需要频繁地访问正在驾驶的车辆,但 `cars` 集合不经常变化,那么第二种优化后的方法可能更好。 + +方案的另一种写法: + +![](../assets/16912026477007.jpg) + +let result = persons.lazy.filter { $0.age >= 18}.map{ $0.name } +print(Array(result)) +首先,我们需要理解`lazy`在Swift中的含义。当我们在集合类型(如数组)上调用`lazy`属性时,我们会得到一个特殊的集合视图,该视图会在需要时才进行计算,从而可能提高性能。这种懒惰的行为对于昂贵的计算操作(如我们的`.filter`操作)可能非常有用。 + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + func loop() { + for car in cars.lazy.filter({$0.driving}) { + // ... + } + } +} + +``` + +在这个版本中,我们在`loop`函数内部使用了`lazy.filter`。这会创建一个可以延迟计算其过滤操作的集合视图。由于过滤操作是懒惰的,所以只有在循环中实际需要时,过滤操作才会执行。这种方法有助于避免创建一个新的数组(只包含正在驾驶的车辆),从而减少内存使用并提高性能,尤其是在`cars`数组非常大的情况下。 + +除了lazy, 还加了一个暂存. 空间换时间. + +方案3: + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + lazy var carsInDriving: [Car] = { + cars.filter({$0.driving}) + }() + + func loop() { + for car in carsInDriving { + // You can do something with each driving car here. + } + } +} + +``` + +在这个版本中,我们将 `Dog` 结构体替换为 `Car`,并将 `running` 属性替换为 `driving`,这样 `driving` 就表示这辆车是否正在行驶。类 `Test` 中的其他部分也进行了相应的修改。现在 `loop` 函数会遍历所有正在驾驶的车辆。 + +方案4的另一种写法 + +```swift +struct Car { + var driving = false +} + +class Test { + var cars: [Car] = [] + + lazy var carsInDriving: LazySequence<[Car]> = { + cars.lazy.filter({$0.driving}) + }() + + func loop() { + for car in carsInDriving { + // ... + } + } +} + +``` + +在这个版本中,`carsInDriving`是一个`lazy`属性,并且是一个`LazySequence`。当你第一次访问`carsInDriving`(在这里是在`loop`函数中)时,它将计算其值并将结果存储起来。与方法A相比,这种方法可以防止在每次调用`loop`函数时都进行过滤操作。但是,如果`cars`数组中车辆的`driving`状态经常发生变化,那么这种方法可能不能反映最新的状态,因为`carsInDriving`在第一次计算后就被存储了起来,不会再更新。 + +所以,哪种方法更好取决于具体的使用场景。如果你的`cars`数组经常发生变化,那么方法A可能更好,因为它会在每次执行`loop`时反映最新的状态。然而,如果`cars`数组基本不变,但你需要频繁地执行`loop`,那么方法B可能更好,因为它可以避免不必要的重复计算。 + + +## WHY Swift not ObjC? + +[https://chat.openai.com/share/eef4d254-7ff5-4b37-b58e-431fb10e4e97](https://chat.openai.com/share/eef4d254-7ff5-4b37-b58e-431fb10e4e97) + +![](../assets/16911993105830.jpg) + +![](../assets/16911993775698.jpg) + +![](../assets/16911993939541.jpg) + +![](../assets/16911994019477.jpg) + + +## 介绍一下 Swift 相关的重要变更事件 + +## Swift ⼤事记 + +1)ABI 稳定 +swift 5 2019 发布, ABI 稳定,不会过⼤的增加包体积了; + +Swift 演进之路 +本篇主要是对[《A站 的 Swift 实践》] +([https://ming1016.github.io/202](https://ming1016.github.io/202)[https://mp.weixin.qq.com/s/z4MKCSNXu7kBY7uU8KC1Aw](https://mp.weixin.qq.com/s/z4MKCSNXu7kBY7uU8KC1Aw) + +[https://ming1016.github.io/2022/02/10/swift-evolutionary-path/](https://ming1016.github.io/2022/02/10/swift-evolutionary-path/) + +2)SwiftUI、Combine、Concurrency(都开始于 iOS 13+) +1」SwiftUI +2」Combine +Combine 是⼀种响应式编程范式,采⽤声明式的 Swift API。 +Combine 的三个核⼼概念 - 发布者 - 订阅者 - 操作符: + +```swift +let pA = Just(0) +let _ = pA.sink { v in +    print("pA is: \(v)") +} + +let pB = [7,90,16,11].publisher +let _ = pB + +    .sink { v in + +        print("pB: \(v)") +    } + +class AClass { +    var p: Int = 0 { +        didSet { +            print("property update to \(p)") +        } +    } +} +let o = AClass() + +let _ = pB.assign(to: \.p, on: o) +``` + +3」Concurrency + +Swift Concurrency 的实现⽤了 LLVM的协程 把 async/await 函数转换为基于回调的代码 +Swift Concurrency 不是建⽴在 GCD 上,⽽是使⽤的⼀个全新的线程池。 + +## What is the difference between a struct and a class in Swift? + +[https://chat.openai.com/share/9d33c809-8034-4ef2-a54b-5e6b20bc4178](https://chat.openai.com/share/9d33c809-8034-4ef2-a54b-5e6b20bc4178) + +In Swift, **Array, String, and Dictionary are all value types**. They behave much like a simple int value in C, acting as a unique instance of that data. Reference Type : Copying a reference on the other hand implicitly creates a shared instance. + +## struct VS class? +![](../assets/16911997093380.jpg) + + +[Getting to Know Enum, Struct and Class Types in Swift](https://www.kodeco.com/7320-getting-to-know-enum-struct-and-class-types-in-swift) + +`class` performing faster than `struct` or the other way around + +## class 和 struct 的区别 + +1)class 是引⽤类型,struct 是值类型; + +2)如果⾥⾯对象较少,使⽤ struct ⽐较节省性能。 + +3)struct 不可被继承 -(另外加⼀条 enum 也是值类型) + +4)struct ⾥的 class,即使 struct 复制了,它也是引⽤类型 ; +重要:例外,闭包⾥使⽤ Struct 是⼀份引⽤,除⾮明确的 copy ⼀份; + +5)⽬前 Swift 的 Foudation 基本全⽤ Struct 实现了,原因是? +Why Choose Struct Over Class? 来⾃ StackOverFlow + +[Why Choose Struct Over Class?](https://stackoverflow.com/questions/24232799/why-choose-struct-over-class) + +1」内存上,值引⽤在栈区,引⽤类型在堆区进⾏存储和操作,栈区的运⾏效率更⾼; +2」多线程的环境下更安全,写时复制的操作可以最⼤限度的优化性能,也不⽤担⼼内存泄露(互相引⽤); +3」引申知识:为什么栈在⾼地址?这样栈的起始位置固定,扩展的时候不需要迁移整个栈的数据。 + +关于为什么栈区操作⽐堆区操作快,可以看这篇⽂章:Swift 开发中,为什么要远离 Heap? + +[https://www.jianshu.com/p/aca50c5a9d64](https://www.jianshu.com/p/aca50c5a9d64) + +[Swift 开发中,为什么要远离 Heap?](https://www.jianshu.com/p/aca50c5a9d64) + +Swift 的堆区是使⽤双向链表进⾏内存分配的, + +| | heap | stack | +| --- | --- | --- | +| 结构 | Swift 基于双向链表 | 栈 | +| 特点 | ⼿动分配⼤⼩、随时释放空间,数据进出⽆序 | ⾃动分配⼤⼩,⾃动释放内存,数据先进后出 +| 操作 | 查询之后分配/释放,之后再做整合,复杂度⾼ | 依靠栈底指针移动来分配/释放,复杂度低 +| 对象 | 引⽤类型如 class。引⽤ 计数,变量类型等信息 | 值类型如 struct, enum, Int。函数返回值,局部变量 +| 场景 | C 中的 malloc 和 free 操作,java 中的garbage collection,iOS 中的MRC、ARC | 适⽤于撤销、保存操作 | +| 线程 | 共享,多线程不安全 | 独享,多线程安全 | + +copy on write ⻅下⾯的说明; + +## Q: if a struct is an immutable value type, why we can mutate the size property? + +A: copy on write + +[Handling Mutable Structs in Swift](https://anshul-vyas380.medium.com/handling-mutable-structs-in-swift-7b95add387d) + +mutating 关键词的含义 + +```jsx + struct Mutable { + var x: Int; + mutating func Mutate() -> Int { + x = x + 1; + return x; + } + } + var mutable = Mutable(x: 0) + print(mutable.Mutate()) + print(mutable.Mutate()) + print(mutable.Mutate()) +``` + +There are a number of things this program could do. Does it: + +✅1) Print 1, 2, 3 -- because m is readonly, but the "readonly" only applies to m, not to its contents. +❌2) Print 0, 0, 0 -- because m is readonly, x cannot be changed. It always has its default value of zero. +❌3) Throw an exception at runtime, when the attempt is made to mutate the contents of a readonly field. +❌4) Do something else + +In class, all func are mutating. But for struct and enum we need to specify. + +[Mutating function inside class](https://stackoverflow.com/a/46460684/3395008) + +[Does swift copy on write for all structs?](https://stackoverflow.com/a/43493749/3395008) + +在SwiftUI中的体现: + +``` +struct Point { + var x:Float = 0 +} + +var p1 = Point() +var p2 = p1 //p1 and p2 share the same data under the hood +p2.x += 1 //p2 now has its own copy of the data +``` + +struct 是赋值, class是引用 + +在struct 的[计算属性](https://so.csdn.net/so/search?q=%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7&spm=1001.2101.3001.7020)(computed property)里,不允许改变成员变量 + +![](../assets/16911994188320.jpg) + + +加上 **@State 就可以改变了** + +参考: + +[用狀態設計 SwiftUI 畫面 — 認識 State property](https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86/%E7%94%A8%E7%8B%80%E6%85%8B%E8%A8%AD%E8%A8%88-swiftui-%E7%95%AB%E9%9D%A2-%E8%AA%8D%E8%AD%98-state-property-binding-27fea6885ead) + +[Mutating Readonly Structs](https://learn.microsoft.com/en-us/archive/blogs/ericlippert/mutating-readonly-structs) + +![](../assets/16911994290631.jpg) + + +![](../assets/16911994377956.jpg) + + +[Swift: Mutating Function](https://youtu.be/lXp3MNT_EZc) + +[https://youtu.be/lXp3MNT_EZc](https://youtu.be/lXp3MNT_EZc) + +## 4、Swift 的 Copy-on-Write 是怎么实现的 + +1、Swift 分 引⽤类型 (Class) 和值类型 (Struct / Enum),值类型赋值、函数传值时,会触发 Copy 操作,此时对值类型写 +时复制就能提升性能; +优势: +1)读多写少的情况,可以提⾼读取效率; +2)集合传值之后修改,不会改变原来的值;(OC 需要⽤ deep Copy) +劣势: +1)线程不安全,写时占内存 +2)⾃定义的结构体并不能⾃动拥有 写时复制 的属性 +Tips: +1)引⽤类型不⽤ Copy-on-Write  ,是因为性能消耗⽐直接复制还⾼ +2)isKnownUniquelyReferenced 可以⽤来判断 Class 是否被唯⼀引⽤,从⽽进⾏ copy on write; +3)Array、Dictionary、Set 等类型都是 Struct 实现的,值类型,⽀持 Copy-on-Write; +写时复制,swift 的数组、字典等就是如此,原来是值类型,但是遇到写操作的时候,复制⼀份出来; +isKnownUniquelyReferenced 源代码 。 + +[](https://github.com/apple/swift/blob/ad0a5bf12b9f261263f20598bc4767494ff5d678/stdlib/public/core/ManagedBuffer.swift) + +调⽤了  Builtin.swift  + +[](https://github.com/apple/swift/blob/32811bac9fa18ffea4ba79c8618216f9e71dc1d0/stdlib/public/core/Builtin.swift) + +⾥⾯的 isUnique ⽅法: + +关于 Builtin:Swift Builtin + +SILGen/SILGenBuiltin.cpp + +[](https://github.com/apple/swift/blob/74d7eacfe5afadb44b520f01211d00c6490a701f/lib/SILGen/SILGenBuiltin.cpp#L954) + +⾥⾯的实现:(SIL 的特点其⼆:检测不可达(未使⽤)的代码 & 在代码发送给 LLVM 前进⾏ +优化) + + + +```swift +"// This should only accept as an operand type single-refcounted-pointer types, +"// class existentials, or single-payload enums (optional). Type checking must be +"// deferred until IRGen so Builtin.isUnique can be called from a transparent +"// generic wrapper (we can only type check after specialization). +static ManagedValue emitBuiltinIsUnique(SILGenFunction &SGF, +                                        SILLocation loc, +                                        SubstitutionMap subs, +                                        ArrayRef args, +                                        SGFContext C) { + +  assert(subs.getReplacementTypes().size() "== 1 "&& +         "isUnique should have a single substitution"); +  assert(args.size() "== 1 "&& "isUnique should have a single argument"); +  assert((args[0].getType().isAddress() "&& !args[0].hasCleanup()) "&& +         "Builtin.isUnique takes an address."); + +  return ManagedValue"::forUnmanaged( +    SGF.B.createIsUnique(loc, args[0].getValue())); +} +``` + +swift +createIsUnique + +[](https://github.com/apple/swift/blob/74d7eacfe5afadb44b520f01211d00c6490a701f/include/swift/SIL/SILBuilder.h#L2194) + +是⼀个 C++ ⽅法,应该在编译期就确定了(静态⽅法) + +下⾯是⼀个⾃⼰实现 Copy-on-Write 的例⼦ + +```swift +"// isKnownUniquelyReferenced 的使⽤ +isKnownUniquelyReferenced(&object: T) + +final class Box { +    var unbox:A +    init(_ value:A) { +        self.unbox = value +    } +}    +var a = Box(NSMutableData()) +isKnownUniquelyReferenced(&a)"//true +var b = a  +isKnownUniquelyReferenced(&a)"//false + +"// 写时复制的代码原理 +final class Ref { +  var val : T +  init(_ v : T) {val = v} +} + +struct Box { +    var ref : Ref +    init(_ x : T) { ref = Ref(x) } + +    var value: T { +        get { return ref.val } +        set { +          if (!isUniquelyReferencedNonObjC(&ref)) { +            ref = Ref(newValue) +            return +          } +          ref.val = newValue +        } +    } +} +``` + +当进⾏ set 的时候判断是否有多个 reference,如果是多个 reference 则进⾏拷⻉,反之则不会。 + +## Swift Copy-on-Write 是怎么去实现的? + +[Understanding Copy on Write](https://fabernovel.github.io/2020-10-30/Understanding-Copy-on-Write) + +原理和 KVO有点类似. + +```swift +// Actual CoW implementation +struct CoWSomeClass { + init(value: Int) { + storage = SomeClass(value: value) + } + + private storage: SomeClass + + var value: Int { + get { + storage.value + } + set { + if !isKnownUniquelyReferenced(&storage) { + storage = storage.copy() + } + storage.value = newValue + } + } +} + +// Storage definition +extension CoWSomeClass { + private class SomeClass { + var value: Int + + init(value: Int) { + self.value = value + } + + func copy() -> SomeClass { + SomeClass(value: value) + } + } +} +``` + +--- + +### **35. What are the basic categories of types in Swift?** + +Swift requires each object to have a type, which must be known during compilation. Swift types fall into two groups: + +- **Value types**, which are typically described as a struct, enum, or tuple and allow each instance to maintain a separate copy of its data. +- **Reference types**, where a single copy of the data is shared by all instances, and where the type is often expressed as a class. + + + +### **26. What is a Tuple in Swift?** + +A tuple is a collection of many values combined into a single compound value. It contains elements in an organized list. You can access a tuple's object data in two ways: by name or position. + +A Swift tuple can accommodate two values, one of the string and one of the integer types. + +### **38. Is it possible to return multiple values from a function in Swift? If yes, how?** + +Like the majority of programming languages, Swift only allows each function to return a single value. If this element is a primitive type, you will only return one value. + +Additionally, a thing could be a complex type, such as a class, struct, tuple, or array. You can pack several values into a complex type in this situation. After that, you formally return a single item with numerous values kept inside this data structure. + +**Here’s how we can return multiple values kept inside a tuple:** + +``` +func functionWithMultipleReturnValues( +val1: Int, +val2: Int +) -> (sum: Int, product: Int) { +let sum = val1 + val2 +let prod = val1 * val2 +return (sum, prod) +} +let result = functionWithMultipleReturnValues(val1: 10, val2: 20) +let s = result.sum +let p = result.product +``` + +## final 是什么: + +不能继承和重写,可⽤到 属性/函数/类; + +## String 与 NSString 的关系与区别: + +能够互相转换,⼀个值类型,⼀个引⽤类型; + +## defer 使⽤场景: + +defer ⾥的内容会在 { } 结束时执⾏; + +## struct 在堆区还是栈区? + +值引⽤,栈区 + +## 属性中,值属性,和计算属性有什么区别? + +计算属性不占内存,值属性占⽤内存; + +## 声明⼀个只有⼀个参数没有返回值闭包的别名 + +```swift +typealias SomeClosuerType = (String) "-> () +let someClosuer: SomeClosuerType = { (name: String) in + print("hello,", name) +} +``` + +#### 2. Principle of Dictionary +![5](assets/5-1.jpg) + +https://medium.com/swift-algorithms-extras/understanding-hash-tables-dictionaries-sets-with-swift-4605e905973e + +https://chat.openai.com/share/c7881993-fedb-4089-bf83-bf8e05f1cab4 + + +## **泛型:** + +## Q.什么是泛型,swift哪些地方使用了泛型? + +答: +泛型(generic)可以使我们在程序代码中定义一些可变的部分,在运行 runtime 的时候指定。使用泛型可以最大限度地重用代码、保护类型的安全以及提高性能。 +泛型可以将类型参数化,提高代码复用率,减少代码量。 + +例如 optional 中的 map、flatMap 、?? (泛型加逃逸闭包的方式,做三目运算) + +## + +## Generic in Swift ****泛型**** + +[An in depth look at generics in Swift — The Mobile Entity](https://www.themobileentity.com/home/an-in-depth-look-at-generics-in-swift) + +[Swift 范型(Generics译文) - 掘金](https://juejin.cn/post/6870424765958455303) + +[Swift 初体验(10)- 泛型 【完结🎉🎉🎉】](https://www.freecodecamp.org/chinese/news/swift-getting-started-10/) + +![](../assets/16911994768336.jpg) + +![](../assets/16911994872119.jpg) + + + +![](../assets/16911994941254.jpg) + + +[https://chat.openai.com/share/faa41aed-9f00-4070-b6f1-ab3be7dbb238](https://chat.openai.com/share/faa41aed-9f00-4070-b6f1-ab3be7dbb238) + +## + +## *10、泛型的本质* + +*1)泛型的本质是 参数化类型 , ⾥⾯的 T 就是个占位符,系统这样就不会检查类型了; +2)泛型可以让开发者灵活定义函数和类型,避免重复代码,使代码的表意更清晰和抽象; +3)associatedtype(关联类型) 是在 protocol ⾥使⽤的泛型 +4)where 字句可以限定 关联类型(associatedtype Element // 关联类型)的具体类型, 如: extension ListProtcol where +Element = Int +5)T 和 Any 的区别? +Any 类型会避开类型的检查,具体⻅下⾯代码例⼦:* + +```swift + +*1"//输⼊输出类型⼀致 +2func add( input: T) "-> T { +3    "//""... +4    return input; +5} +6 +7"//输⼊输出类型会不⼀致 +8func anyAdd(* input: Any) "-> Any { +9    "//""... +10    return input; +11} + +``` + + +#### 7. What's the difference between `opaque type` and `generic`? +https://docs.swift.org/swift-book/documentation/the-swift-programming-language/opaquetypes/ + +https://chat.openai.com/share/87bd8875-d80d-4567-97f6-fe869edc8f7b + +![4](assets/4-1.jpg) + + + +![7](assets/7-1.jpg) +![2](assets/2-2.jpg) +![3](assets/3-2.jpg) +![4](assets/4-2.jpg) +![5](assets/5-2.jpg) +![6](assets/6-1.jpg) + + + +类型定义方式 | 定义|优点|缺点 | 典型场景 +:-------------:|:-------------:|:-------------:|:-------------:|:-------------: +Opaque Type| 保留类型信息,但隐藏具体类型。Opaque Type在返回时保留类型信息。有助于代码重用和灵活性。| 保留类型信息。

提供了更明确的返回类型的约束。

隐藏实现细节。| 在类型推断和编译时间上可能有一些开销。

无法直接查看和操作内部类型。

可能不如泛型那样灵活。| SwiftUI中的some View。

```var body: some View { Text("Hello, World!") }``` +类型擦除 | 隐藏具体类型,但遵循特定协议。 | 隐藏具体类型,实现了封装。

允许我们使用特定协议类型,而不用关心具体实现。| 在擦除类型后,原始类型信息无法恢复,可能会丧失一些功能。

创建类型擦除容器可能会增加代码复杂性。

在性能上可能有一些开销。| Swift的AnyPublisher,它可以持有任何实现了Publisher协议的类型。

```func fetchData() -> AnyPublisher {URLSession.shared.dataTaskPublisher(for: url).map(\.data).eraseToAnyPublisher()}``` +Generic | 允许你编写灵活可重用的函数和类型,可适应任何类型。 | 强类型,提供了编译时类型安全性。

允许编写灵活的、可重用的代码。| 用起来可能比较复杂,尤其是对于复杂的泛型代码,很难理解和调试。

可能会增加编译时间。

无法用于某些动态的场景,如需要在运行时改变类型。| 容器类如Array和Dictionary,

```func swapTwoValues(_ a: inout T, _ b: inout T) { let temporaryA = a;a = b;b = temporaryA}``` +Any? | 可以存储任何类型的值,包括可选值。| 完全灵活,可以代表任何类型。| 缺乏类型安全。你需要自行确定类型,并做正确的类型转换。如果不正确,可能会在运行时出错。

容易导致代码混乱,难以追踪和调试。

对于开发者来说,无法确定具体的类型,很难做出正确的操作。| 解析JSON,

```let value: Any? = "Hello, World!"; if let string = value as? String { print("It's a string: \(string)"); } else if let number = value as? Int { print("It's an integer: \(number)"); }``` + + +从 Protocols中 定义方(开发者) 和 调用方(使用者)的角度来说. +- Generics中,是开发者不需要知道类型或协议,但是使用者知道类型或协议。 +- Opaque中,是开发者知道协议,但是使用者不知道协议。 +- Type Erasure是在Generics的基础之上,通过盒子包装来规避编译器的一种方式。 + + +不同类型 | 对比 +:-------------:|:-------------: +Opaque Type 与 Generic | Opaque Type和泛型都有助于代码重用和灵活性。泛型在定义时不知道具体类型,而Opaque Type在返回时保留类型信息。 +Opaque Type 与 Any? | Opaque Type隐藏具体类型但保留类型信息;Any?不保留类型信息。 +类型擦除与 Generic | 类型擦除通常用于特定协议,隐藏具体类型;泛型提供更广泛的灵活性,允许任何类型。 +类型擦除与 Any? | 类型擦除遵循协议,有结构;Any?完全灵活,允许任何类型。 +Generic 与 Any?| 泛型强制执行类型一致性,提供类型安全;Any?完全灵活但缺乏类型安全。 + + +举例说明, 举一个MVVM架构的例子,将Model中的某些具体类型用Opaque Types表达,然后再进行改造。 + +先举个例子,我们创建一个"User"的模型,具体类型用Opaque Types表达,并创建一个"UserViewModel"来处理该模型。 + +### Any? +![](assets/16912874108037.jpg) + +我们可以把id类型设置为Any?,使得我们可以接受任何类型的id。 + +```swift +protocol Model { + var id: Any? { get } +} + +struct User: Model { + var id: Any? +} + +protocol ViewModel { + associatedtype ModelType: Model + init(model: ModelType) +} + +struct UserViewModel: ViewModel { + var model: User + + init(model: User) { + self.model = model + } +} +``` + + +### 泛型 +![](assets/16912874480991.jpg) + +通过使用泛型,我们可以保持类型的安全性,而不必知道具体类型。 + +```swift +protocol Model { + associatedtype Identifier + var id: Identifier { get } +} + +struct User: Model { + typealias Identifier = UUID + var id: Identifier +} + +protocol ViewModel { + associatedtype ModelType: Model + init(model: ModelType) +} + +struct UserViewModel: ViewModel { + var model: M + + init(model: M) { + self.model = model + } +} +``` +这样,UserViewModel可以处理任何满足Model协议的类型。 + +### 类型擦除 + +我们可以使用类型擦除来隐藏具体类型,通常使用一种包装器来实现。如下面的例子中,我们创建了一个AnyModel来隐藏具体的Model类型: +![](assets/16912874813432.jpg) + +```swift +protocol Model { + associatedtype Identifier + var id: Identifier { get } +} + +struct User: Model { + typealias Identifier = UUID + var id: Identifier +} + +struct AnyModel: Model { + typealias Identifier = Any + + var id: Identifier + + init(_ model: M) { + self.id = model.id as! Identifier + } +} + +protocol ViewModel { + associatedtype ModelType: Model + init(model: ModelType) +} + +struct UserViewModel: ViewModel { + var model: AnyModel + + init(model: User) { + self.model = AnyModel(model) + } +} +``` +这样,具体的Model类型被隐藏在了AnyModel里面,UserViewModel只知道它处理的是一个满足Model协议的对象。 + + + +### Opaque Types +Opaque Types在这个例子中,我们无需公开具体的Model类型,只需表达它遵循了某个协议。 +![](assets/16912875027729.jpg) + +```swift +protocol Model { + associatedtype Identifier + var id: Identifier { get } +} + +struct User: Model { + typealias Identifier = UUID + var id: Identifier +} + +protocol ViewModel { + associatedtype ModelType: Model + init(model: ModelType) +} + +struct UserViewModel: ViewModel { + var model: some Model + + init(model: User) { + self.model = model + } +} +``` + +在这个例子中,ViewModel不知道具体的Model类型,只知道Model满足某个协议,从而实现了封装。 + +所有能用Generic的场景都可以使用Opaque Type 吗? 我是否应该把所有的Generic的升级到使用Opaque Type? + +举一个可以用Generic的场景, 但是却不可以使用Opaque Type 的例子. +一个典型的场景就是泛型容器,比如一个可以储存任何类型的数组。在这种情况下,我们需要在类型声明和实例化时都使用同一个类型参数,因此我们不能使用Opaque Type。请看以下的例子: + +```swift +struct GenericArray { + var elements: [Element] + + init(_ elements: [Element]) { + self.elements = elements + } + + func getElement(at index: Int) -> Element { + return elements[index] + } +} + +let intArray = GenericArray([1, 2, 3]) +let firstElement = intArray.getElement(at: 0) // Returns 1 + +let stringArray = GenericArray(["Hello", "World"]) +let firstString = stringArray.getElement(at: 0) // Returns "Hello" +``` + +在这个例子中,我们创建了一个名为`GenericArray`的泛型结构体,它可以储存任何类型的数组。我们可以在实例化`GenericArray`时指定`Element`的具体类型(例如`Int`或`String`),然后在调用`getElement(at:)`方法时,返回值的类型也会是我们指定的类型。 + +然而,如果我们尝试使用Opaque Type来替换这个例子中的泛型,我们会遇到问题。Opaque Type只能用在函数或方法的返回类型上,因此我们无法使用它来定义一个可以储存任意类型的数组。即使我们可以在函数或方法的返回值中使用Opaque Type,也无法在其他地方使用相同的类型,因此我们无法实现和上面例子中一样的功能。 + + + + +各种方法都有其优点和缺点。Opaque Types保持类型一致性,但不能用于存储变量。类型擦除隐藏了具体类型,但可能使性能下降。泛型提供了类型安全,但可能会使代码变得复杂。Any?是最灵活的,但是在使用时需要进行类型检查或强制类型转换。 + + + +## 内存管理、**性能优化和调试:** + +## When do you use static variables? + +[https://chat.openai.com/share/3ce697b3-5f00-41b9-be78-693a4bc9a8b0](https://chat.openai.com/share/3ce697b3-5f00-41b9-be78-693a4bc9a8b0) + +static 关键字和 class 关键字 修饰的类⽅法有什么区别? +static 修饰的不能被继承,class 修饰 可以被继承; +class 只能在类⾥⽤,不能在结构体、枚举中⽤; +class 只能修饰计算属性,不能修饰值属性; + +## What is weak and unowned in Swift? What is their difference? + +https://www.advancedswift.com/strong-weak-unowned-in-swift/ + +iOS weak 和 unowned 区别? + +swift weak 和 unowned 的区别 + +weak 同 OC ,在没有引⽤技术的时候⾃动置空,必须被⽣命为 var; +unowned 不会为空,可以使⽤ let 声明,性能损耗⽐ weak ⼩⼀点, +要保证 unowned 的⽣命周期要和强引⽤对象同样或者更⻓,不然就会导致崩溃; + +## 解决 retain cycle, 什么时候用unowned、weak、closure capture list?? +![1](assets/1-2.jpg) + +In Swift, both `weak` and `unowned` are ways to prevent strong reference cycles (also known as retain cycles) which can cause memory leaks in your application. When two instances of classes reference each other, and they both have strong references to each other, they can't be deallocated because each thinks that the other is still in use. This is where `weak` and `unowned` come into play. + +`weak` and `unowned` references allow one instance in a reference cycle to refer to the other instance without keeping a strong hold on it, helping to prevent strong reference cycles. + +**Weak** + +A `weak` reference is a reference that doesn't keep the referenced object alive. The weak reference becomes `nil` as soon as the referenced object is deallocated. Because weak references can become `nil`, they must be declared as optional types. + +Here is an example of `weak`: + +``` +class MyClass { + weak var weakProperty: AnotherClass? +} + +``` + +In this case, `weakProperty` is a weak reference. If the `AnotherClass` instance it references is deallocated, `weakProperty` will be automatically set to `nil`. + +**Unowned** + +An `unowned` reference doesn't keep the referenced object alive, similar to a `weak` reference. However, unlike a weak reference, an unowned reference is assumed to always have a value; thus, it is non-optional. An unowned reference should be used when you know that the reference will always have a value and you don't want to deal with unwrapping an optional. + +Here is an example of `unowned`: + +``` +class MyClass { + unowned var unownedProperty: AnotherClass +} + +``` + +In this case, `unownedProperty` is an unowned reference. If the `AnotherClass` instance it references is deallocated, `unownedProperty` will still hold a reference to the now-deallocated object, leading to a runtime error if it is accessed. + +**Comparison** + +The primary difference between `weak` and `unowned` references is that `weak` references are optional and can become `nil`, while `unowned` references are always expected to have a value. + +Therefore, you would typically use `weak` when there's a possibility the referenced object might be deallocated while still being weakly referenced (e.g. delegates). Conversely, you would use `unowned` when you know the referenced object will stick around for as long as the object holding the reference is around (e.g. closures referencing `self` where `self` will outlive the closure). + +![](../assets/16912025406113.jpg) + + +closure 捕获变量的几种方式: +"懒捕获"(Lazy Capture)和"早捕获"(Eager Capture)是两种描述Swift闭包捕获变量或常量方式的术语。这两种概念并不是Swift官方文档中明确定义的,但它们有助于理解闭包如何与其周围的作用域交互。 + +### 懒捕获(Lazy Capture) + +"懒捕获"通常指的是当闭包被执行时,它才会捕获周围作用域中的变量。这意味着如果变量在闭包创建后和执行前发生了改变,闭包将使用最新的值。 + +```swift +var lazyVar = 1 +let lazyCapture = { + print("Lazy Capture: \(lazyVar)") +} +lazyVar = 2 +lazyCapture() // 输出 "Lazy Capture: 2" +``` + +### 早捕获(Eager Capture) + +"早捕获"则是指在闭包创建的时候,就捕获了周围作用域中的变量或常量。最常见的使用场景就是通过捕获列表明确指定捕获。 + +```swift +var eagerVar = 1 +let eagerCapture = { [eagerVar] in + print("Eager Capture: \(eagerVar)") +} +eagerVar = 2 +eagerCapture() // 输出 "Eager Capture: 1" +``` + +### 组合情况 + +当然,你也可以在同一个闭包中使用多种捕获方式。 + +```swift +var var1 = 1 +var var2 = 1 + +let mixedCapture = { [var1] in + print("Eager Capture: \(var1)") + print("Lazy Capture: \(var2)") +} + +var1 = 2 +var2 = 2 +mixedCapture() +// 输出 "Eager Capture: 1" +// 输出 "Lazy Capture: 2" +``` + +这样,`var1` 是在闭包创建时就被捕获的(早捕获),而 `var2` 是在闭包执行时被捕获的(懒捕获)。 + +### 什么是 Capture List? + +在Swift中,捕获列表(Capture List)是唯一明确指定闭包捕获变量或常量方式的语法。捕获列表用方括号 `[]` 包围,并放在闭包表达式的开始处。 + +在捕获列表中,你可以明确地指定以值的方式捕获(即捕获当前状态下的值),或以引用的方式捕获(即创建一个指向对象的强引用或弱引用)。 + +### 值类型捕获 + +```swift +var x = 10 +let captureValue = { [x] in + print("captured value: \(x)") // 输出:captured value: 10 +} +x = 20 +captureValue() // 还是输出:captured value: 10 +``` + +### 引用类型捕获 + +```swift +class MyClass { + var value = 0 +} + +let obj = MyClass() +obj.value = 10 + +let captureReference = { [obj] in + print("captured value: \(obj.value)") // 输出:captured value: 10 +} + +obj.value = 20 +captureReference() // 输出:captured value: 20 +``` + +### 弱引用和无主引用 + +使用 `weak` 或 `unowned` 可以避免强引用导致的循环引用问题。 + +```swift +class MyClass { + var value = 0 +} + +var obj: MyClass? = MyClass() +obj?.value = 10 + +let captureWeakReference = { [weak obj] in + print("captured value: \(obj?.value ?? -1)") // 输出:captured value: 10 +} + +obj?.value = 20 +captureWeakReference() // 输出:captured value: 20 + +obj = nil +captureWeakReference() // 输出:captured value: -1 +``` + + +------- + +相似之处: + +1. Swift 的 Capture List 和 Objective-C 的 __block 和 __weak 都是用来更改闭包或 block 对其外部变量的捕获方式,以便更好地管理内存和控制引用。 +2. 它们都可以防止循环引用的问题,从而避免内存泄漏。 + +以下是一个使用捕获列表来避免循环引用的例子: + +```swift +class MyClass { + var value = 0 + var closure: (() -> Void)? + + init() { + closure = { [weak self] in + guard let self = self else { + return + } + print(self.value) + } + } + + deinit { + print("MyClass has been deinitialized") + } +} + +do { + let instance = MyClass() + instance.value = 1 + instance.closure?() +} // MyClass has been deinitialized will be printed, indicating there's no retain cycle. + +``` + +在这个例子中,我们将闭包的定义放在了类的初始化方法中,并且在闭包内部使用了 self。但是我们使用了 `[weak self]` 在捕获列表中指定了 self 的捕获方式,所以在闭包内部,self 是一个 Optional 类型。当 MyClass 的实例被释放时,由于我们打破了循环引用,所以 MyClass 的 deinit 方法会被调用,这证明我们避免了 retain cycle。 + +区别: + +1. Swift 中,我们可以通过在闭包内部定义捕获列表来显式声明捕获方式,支持 unowned,weak 或值捕获。而在 Objective-C 中,我们需要在声明变量时使用 __block 或 __weak,它们只能使用这两种方式。 +2. 在 Swift 中,我们可以在捕获列表中捕获多个变量,每个变量的捕获方式可以不同。在 Objective-C 中,我们需要对每个需要捕获的变量单独使用 __block 或 __weak。 +3. Swift 的捕获列表提供了更多的灵活性和控制力,比如你可以在捕获列表中捕获变量的当前值,即使它在外部改变了,闭包内部的值也不会改变。在 Objective-C 中,__block 变量会共享值,即在 block 内部或外部改变,两边都会看到新的值。 +4. Swift 的语法更加现代和简洁,对于引用的管理也更加自动化,减少了手动内存管理的复杂性。在 Objective-C 中,开发者需要更加小心地管理内存和引用。 + +## 举例说明 Capture List 的捕获变量后的特点 + +Capture List , 变量捕获, 我举了下面的两个例子, 这样对比起来比较清晰, 能够看出来 捕获后, 变量外部改变不会引起闭包里改变的改变. + +第1个例子(命名为 "valueCaptureExample"): + +```swift +var capturedValue: Int = 0 + +func captureAndChange(_ closure: @escaping () -> ()) { + closure() +} + +print(capturedValue) // 打印0 + +captureAndChange { capturedValue = 1 } + +print(capturedValue) // 打印1 + +``` + +第2个例子(命名为 "valueCaptureListExample"): + +```swift +var capturedValue: Int = 0 + +let valueCaptureListClosure = { [capturedValue] in + print(capturedValue) +} + +capturedValue = 1 + +valueCaptureListClosure() // 打印0,说明闭包看到的是捕获时的 capturedValue 的值,而不是当前的值 + +``` + +现在,我们来对比示例: + +- "valueCaptureExample"(值捕获示例): 在这个例子中,`capturedValue` 是一个值类型,它被一个没有指定捕获列表的闭包捕获。这个闭包可以改变 `capturedValue` 的值,并且这个改变会影响到外部的 `capturedValue`。 +- "valueCaptureListExample"(值捕获列表示例): 在这个例子中,`capturedValue` 是一个值类型,它被一个指定了捕获列表的闭包捕获。这个闭包捕获的是创建闭包时 `capturedValue` 的值,而不是这个变量本身。因此,即使在外部改变了 `capturedValue` 的值,闭包也无法看到这个改变。 + +其中第二个例子, 和下面的写法是等价的: + +也就是不使用Capture List 功能的写法, 显然Capture List 写法更加简洁: + +```swift + var capturedValue: Int = 0 + let capturedValueForClosure = capturedValue // 这里相当于 Capture List 中的 [capturedValue] + + let valueCaptureListClosure = { + print(capturedValueForClosure) // 在闭包中使用的是 capturedValueForClosure 的值 + } + + capturedValue = 1 + + valueCaptureListClosure() // 打印0,说明闭包看到的是捕获时的 capturedValue 的值,而不是当前的值 + +``` + +这里的 `capturedValueForClosure` 的行为模拟了 Capture List 中的 `capturedValue`。即,闭包内部使用的 `capturedValue` 实际上是在闭包创建时就被捕获的 `capturedValueForClosure`,而不是外部变量 `capturedValue`,这样就可以保证即使外部的 `capturedValue` 改变了,闭包内部的 `capturedValue` 也不会受影响。这例子也可以解释 Capture List 的工作原理。 + +这个确实有点反直觉, 没人会预期代码会这么运行, 所以在开发中要避免这种场景的使用, + +当然也不用过于担心, 之所以平时我们不会经常遇到这个问题, 是因为我们经常使用下面的用法, 也就是 +如果你没有在捕获列表中明确指定捕获方式,Swift 的闭包会"懒捕获”(lazy capture) 这些变量,这意味着实际的值捕获只会在闭包首次执行时进行。这样,如果该变量在闭包创建之后但在闭包执行之前被修改,闭包内将使用该最新的值 + +参考以下代码: + + + +```swift + var capturedValue: Int = 0 + + let valueCaptureListClosure = { + print(capturedValue) // 在闭包中使用的是 capturedValueForClosure 的值 + } + + capturedValue = 1 + + valueCaptureListClosure() // 打印1 说明闭包看到的是当前的 capturedValue 的值 +``` + + +但基于上面提到的种种问题, 那么应该如何尽量规避这种情况, 请看下面的例子: + + +--- + +第3个例子,我们将其命名为 "referenceCaptureExample": + +```swift +class CapturedClass { + var value: Int = 0 +} + +var capturedInstance: CapturedClass? = CapturedClass() + +let referenceCaptureClosure = { + print(capturedInstance?.value ?? -1) +} + +capturedInstance?.value = 1 + +referenceCaptureClosure() // 打印1,说明闭包看到的是 capturedInstance 的当前状态 + +``` + +- "referenceCaptureExample"(引用捕获示例): 在这个例子中,`capturedInstance` 是一个引用类型(类的实例)。尽管没有指定捕获列表,但是由于它是引用类型,所以闭包捕获的是这个引用的副本。因此,即使在外部改变了这个实例的属性,闭包也能看到这个改变。 + + +所以我们可以得出结论: + +> 如果想让捕获的值,改变之后,还能让闭包内部知道的话,只能通过引用类型. + +--- + +第四个例子: + +```swift +var capturedValue: Int = 0 + +print(capturedValue) + +let closure = { + if capturedValue != 0 { + capturedValue = 2 + } +} + +capturedValue = 1 + +closure() + +print(capturedValue) + +``` + +这段代码和例子A的关键区别在于,这里的闭包 `closure` 并没有使用 Capture List 来捕获 `capturedValue` 的初始值,而是直接引用了 `capturedValue`。因此,闭包中的 `capturedValue` 和外部的 `capturedValue` 是同一个变量。所以,在调用 `closure()` 之后,`capturedValue` 的值被改变为2,而不是1。 + +最后的 `print(capturedValue)` 将会打印出 `2`,而不是 `0`。所以,虽然这两个例子在某些方面看起来类似(都涉及到了闭包和变量的修改),但实际上它们的行为是不同的。这也是 Capture List 在 Swift 闭包中的重要性:使用 Capture List 可以控制闭包捕获变量的行为,使其在需要的时候独立于外部变量。 + + +## What is memory leak ? how to solve? + +## 数据处理、语言安全、 **访问权限:** + +## Please implement a convenience init method for a subclass. + +Sure, let's assume that you have a parent class named `Person` and a subclass named `Employee`. + +``` +class Person { + var name: String + var age: Int + + init(name: String, age: Int) { + self.name = name + self.age = age + } +} + +class Employee: Person { + var jobTitle: String + var salary: Int + + init(name: String, age: Int, jobTitle: String, salary: Int) { + self.jobTitle = jobTitle + self.salary = salary + super.init(name: name, age: age) + } + + // convenience init + convenience init(name: String, jobTitle: String) { + self.init(name: name, age: 0, jobTitle: jobTitle, salary: 0) + } +} +``` + +The convenience initializer is used here to create a new `Employee` instance, and it only requires the `name` and `jobTitle` parameters. It calls the designated initializer with the provided name, jobTitle, and default values for `age` and `salary`. + +In this case, an interviewer may follow up by asking why you used a convenience initializer and what the benefits are. Here are some points you might mention: + +1. Convenience initializers can simplify the creation of an object by reducing the number of parameters that need to be passed when creating an object. +2. They can provide default values for certain properties to allow for quick and simple object creation in specific cases. +3. They promote code reusability, as you can have multiple convenience initializers that call the same designated initializer with different default parameters. +4. They help make the code cleaner and more readable by abstracting away the complexity of fully initializing an object. + +please use convenience init to update those code below, and change objective-c code to swift code: + +``` +typedef NS_ENUM(NSInteger, CYLGender) { + CYLGenderUndefined, + CYLGenderMale, + CYLGenderFemale + }; + + @interface CYLUser : NSObject + + @property (nonatomic, readonly, copy) NSString *name; + @property (nonatomic, readonly, assign) NSUInteger age; + @property (nonatomic, readwrite, assign) CYLGender gender; + + - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; + - (instancetype)initWithName:(NSString *)name age:(NSUInteger)age; + + (instancetype)userWithName:(NSString *)name age:(NSUInteger)age gender:(CYLGender)gender; + + @end + +``` + +Sure, I can help with that. Here is the equivalent Swift code: + +``` +import Foundation + +enum CYLGender: Int { + case undefined + case male + case female +} + +class CYLUser: NSObject, NSCopying { + + let name: String + let age: Int + var gender: CYLGender + + init(name: String, age: Int, gender: CYLGender) { + self.name = name + self.age = age + self.gender = gender + } + + convenience init(name: String, age: Int) { + self.init(name: name, age: age, gender: .undefined) + } + + static func user(name: String, age: Int, gender: CYLGender) -> CYLUser { + return CYLUser(name: name, age: age, gender: gender) + } + + func copy(with zone: NSZone? = nil) -> Any { + let copy = CYLUser(name: name, age: age, gender: gender) + return copy + } +} + +``` + +In this code: + +1. We define an enum `CYLGender` to represent the gender of a user, with cases for undefined, male, and female. +2. We define a class `CYLUser` that has properties for `name`, `age`, and `gender`. +3. We define an initializer that takes `name`, `age`, and `gender` as parameters and assigns them to the respective properties. +4. We define a convenience initializer that takes `name` and `age` as parameters and calls the designated initializer with `gender` set to `undefined`. +5. We define a static function `user` that takes `name`, `age`, and `gender` as parameters and returns a new instance of `CYLUser`. +6. We also make `CYLUser` conform to the `NSCopying` protocol by providing an implementation of the `copy(with:)` method. In this method, we simply create and return a new `CYLUser` with the same `name`, `age`, and `gender` as the current instance. + +## 14、Swift 的安全性 + +1)代码安全 +let 属性 - 使⽤ let 申明常量避免被修改。 +值类型 - 值类型可以避免在⽅法调⽤等参数传递过程中状态被修改。 +访问控制 - 通过 public 和 final 限制模块外使⽤ class 不能被继承和重写。 +强制异常处理 - ⽅法需要抛出异常时,需要申明为 throw ⽅法。当调⽤可能会 throw 异常的⽅法,需要强制捕获异 +常避免将异常暴露到上层。 +模式匹配 - 通过模式匹配检测 switch 中未处理的 case。 +2)类型安全 +强制类型转换 - 禁⽌隐式类型转换避免转换中带来的异常问题。同时类型转换不会带来额外的运⾏时消耗。。 +提示:编写ObjC代码时,我们通常会在编码时添加类型检查避免运⾏时崩溃导致Crash。 +KeyPath - KeyPath 相⽐使⽤字符串可以提供属性名和类型信息,可以利⽤编译器检查。 +泛型 - 提供泛型和协议关联类型,可以编写出类型安全的代码。相⽐ Any 可以更多利⽤编译时检查发现类型问题。 +Enum 关联类型 - 通过给特定枚举指定类型避免使⽤ Any。 +3)内存安全 +空安全 - 通过标识可选值避免空指针带来的异常问题 +ARC - 使⽤⾃动内存管理避免⼿动管理内存带来的各种内存问题 +强制初始化 - 变量使⽤前必须初始化 +内存独占访问 - 通过编译器检查发现潜在的内存冲突问题 +4)线程安全 +值类型 - 更多使⽤值类型减少在多线程中遇到的数据竞争问题 +async/await - 提供 async 函数使我们可以⽤结构化的⽅式编写并发操作。避免基于闭包的异步⽅式带来的内存循环 +引⽤和⽆法抛出异常的问题 +Actor - 提供 Actor 模型避免多线程开发中进⾏数据共享时发⽣的数据竞争问题,同时避免在使⽤锁时带来的死锁等 +问题 +5)快速 +值类型 - 相⽐ class 不需要额外的堆内存分配 / 释放和更少的内存消耗 +⽅法静态派发 - ⽅法调⽤⽀持静态调⽤相⽐原有 ObjC 消息转发调⽤性能更好 +编译器优化 - Swift 的静态性可以使编译器做更多优化。例如 Tree Shaking 相关优化移除未使⽤的类型 / ⽅法等减少 +⼆进制⽂件⼤⼩。使⽤静态派发 / ⽅法内联优化 / 泛型特化 / 写时复制等优化提⾼运⾏时性能 +提示:ObjC消息派发会导致编译器⽆法进⾏移除⽆⽤⽅法/类的优化,编译器并不知道是否可能被⽤到。 +ARC 优化 - 虽然和 ObjC ⼀样都是使⽤ ARC,Swift 通过编译器优化,可以进⾏更快的内存回收和更少的内存引⽤计 +数管理 +提示: 相⽐ObjC,Swift内部不需要使⽤autorelease进⾏管理。 + +1. 请解释 Swift 中的访问权限如何设置,以及不同访问级别之间的区别? + +## 13、Swift Try catch 的原理? + +## 15. How do you filter an array of instances to extract a specific property in Swift? + +[https://chat.openai.com/share/05a875de-5e3b-4257-b68b-f296c218f16d](https://chat.openai.com/share/05a875de-5e3b-4257-b68b-f296c218f16d) + +![swift_map_type_diff_en](../assets/swift_map_type_diff_en.jpg) +![swift_map_type_diff_cn](../assets/swift_map_type_diff_cn.jpg) + + + + +## Difference between map, flatMap and compactMap in Swift + +这段代码⽤了哪些语法糖? + +```swift +[1, 2, 3].map{ $0 * 2 } +``` + +1」快速创建数组; +2」在没有声明参数列表时,第⼀个参数⽤ $0 代替,后⾯依次类推; +3」闭包没有声明函数参数, 返回值类型, 数量, 依靠的是闭包类型的⾃动推断; +4」闭包中语句只有⼀句时, ⾃动将这⼀句的结果作为返回值; + +Swift 中 map, flatMap and compactMap 的区别是什么? + +What is their difference? what is the best situation to use on of them? + +The `flatMap` and `compactMap` functions in Swift are used to transform and filter optionals and collections. + +**flatMap**: + +In Swift, `flatMap` has two main use cases: + +1. It can be used with optionals. It works by transforming the optional if it is not `nil` or just returning `nil`. This use of `flatMap` was deprecated in Swift 4.1. +2. It can be used with collections. `flatMap` operates on a collection (for example, an array of arrays), and "flattens" the result into a single array after applying a transformation. For example, given an array of arrays, it will apply the transformation to all elements and flatten the result into a single array. + +``` +let nestedArray = [[1, 2, 3], [4, 5, 6]] +let flattenedArray = nestedArray.flatMap { $0 } +print(flattenedArray) // Output: [1, 2, 3, 4, 5, 6] + +``` + +**compactMap**: + +`compactMap` is used to transform the elements of a sequence while simultaneously unwrapping optionals and removing nil results. This makes `compactMap` a great choice when transforming a collection where the transformation might return an optional. + +Here's an example of `compactMap` in action: + +``` +let numbers = ["1", "2", "three", "4"] +let mappedNumbers = numbers.compactMap { Int($0) } +print(mappedNumbers) // Output: [1, 2, 4] + +``` + +In this example, attempting to convert "three" to an `Int` results in `nil`, which `compactMap` removes from the final array. + +As to which to use, it depends on your needs: + +- If you have a transformation that returns an optional and you want to remove `nil` values, use `compactMap`. +- If you need to flatten a collection of collections, use `flatMap`. +- If you have an optional and want to transform it if it's not `nil`, you'd previously use `flatMap`, but this is now done using `Optional.map` as of Swift 4.1. + +Remember, both `flatMap` and `compactMap` do not mutate the original array. They return new arrays, which is a characteristic of functional programming. + + +上面讨论的是Swift数组和集合map,flatMap和compactMap基本操作,它们用于对集合中的元素进行转换和过滤。这些函数对于处理同步操作和数据非常有用。 + +同时,Combine框架中也存在`map`,`flatMap`和`compactMap`的使用。 +![swift-combine](../assets/swift-combine.jpg) + +Swift Combine框架是一个响应式编程框架,它可以处理异步事件,例如用户交互,网络响应等。Combine使用了发布者和订阅者模型,发布者发布事件,订阅者接收并处理这些事件。 + +Combine框架中也有`map`,`flatMap`和`compactMap`操作符,但这些操作符适用于处理异步事件流。这些操作符的行为与数组和集合上的操作非常相似: + +- `map`:接收一个转换闭包,将接收到的每个输入事件转换为新的值或事件。 +- `flatMap`:接收一个返回Publisher的转换闭包,将接收到的每个输入事件转换为一个新的Publisher。然后,这些新的Publisher的事件被合并到一个共享的事件流中。 +- `compactMap`:与`map`操作类似,但会忽略转换闭包返回的nil值。 + +所以说,`map`,`flatMap`和`compactMap`在Swift的基础集合和Combine框架中都有使用,它们都是对元素进行转换和过滤的操作,但Combine框架中的这些操作是应用在异步事件流上的。 + + +代码演示如下: + +注意,这需要Swift 5.0及更高版本,并且需要导入Combine库。 + +```swift +import Combine + +// Create a publisher +let numbersPublisher = [1, 2, 3, 4, 5].publisher + +// map +numbersPublisher + .map { $0 * 10 } + .sink { print($0) } // Output: 10, 20, 30, 40, 50 + +// flatMap +let nestedPublisher = [[1, 2, 3], [4, 5, 6], [7, 8, 9]].publisher +nestedPublisher + .flatMap { $0.publisher } + .sink { print($0) } // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9 + +// compactMap +let publisherWithNil = [1, nil, 3, nil, 5].publisher +publisherWithNil + .compactMap { $0 } + .sink { print($0) } // Output: 1, 3, 5 +``` + +请注意,以上 Combine 示例是简化的,并且不包含取消订阅的逻辑,实际开发中需要正确地处理和取消订阅。 + + +#### 3. The time complexity of the map, filter, and reduce +O(n) + +## 6、Swift 的计算属性、存储属性、懒加载 + +1)计算属性(Computed Variable) +仅有 get ( readOnly) 或有 get+set 的属性是计算型属性,真正赋值的过程是存在于 set ⽅法中并被底层包装掉的,如果 +我们⼿动实现了set ⽅法,就⽆法进⾏正确的赋值。(此处跟 OC 不⼀样) + +```swift +1private var _squre: Double = 0.0 +2var squre: Double { +3    get { +4        return *squre +5    } +6    set { +7        if (newValue "<= 0) { +8            print("newValue = \(newValue)") +9        } else { +10            squre = newValue +11        } +12    } +13}* +``` + +*2)存储属性(Sorted Variable)* + +```swift +*1class Test { +2    init(width: Double) { +3        self.width = width "// 此处不会调⽤ willset 、didset ⽅法 +4        setValue(width, forKey: "width") "// KVC 可以调⽤ +5    } +6    var width: Double { +7        willSet { +8            print("willSet⽅法被调⽤") +9            print("在willSet中,width = \(width),newValue = \(newValue)") +10        } +11        +12        didSet { +13            print("didSet⽅法被调⽤") +14            print("在didSet中,width = \(width),oldValue = \(oldValue)") +15        } +16    } +17}* +``` + +*3)懒加载(Lazy Load) 和计算属性的区别* + +*计算属性:* + +- *每次都会计算* +- *不分配独⽴空间* + +*懒加载* + +** + +- *本质是个闭包,分配内存空间* +- *在⾸次执⾏时,返回闭包的值* + +*和 OC 不同的是, Swift 的懒加载,置空后不会重新调⽤。* + +** + +## *9、Sequence / ⾼阶函数 / Collection* + +*Swift 的 Collections (Sequence 协议)* + +** + +## 12、混编过程中遇到的 Crash + +1)@objc 别名 MBCCC ,对应 CCC xib,iOS 12 以下 闪退; +2)混编  没加 nullable 到 swift 不做解包 会崩溃了; +3)OC 有个 ivar,Swift abi 稳定,⼆进制有脆弱性;如果库的作者改变了对象内公共字段的⼤⼩或布局,偏移量就⽆效 +了,程序就没法正常运⾏;(解决⽅案:需要全量编译、或引⽤到这个库的上层库重新编译。) + +## 面向对象 + +## 1、Swift 对象和 OC 对象的区别 +![6](assets/6.jpg) + +1)初始化 +初始化 OC 默认置空,可以⽗类 -> ⼦类 (通过 super.init) +Swift 必须赋值,⼦类 -> ⽗类(必须给⼦类所有属性赋值,才能调⽤ super.init) +其他: +定义变量、属性、协议,两者类似。 + +2)Swift 对象包括 class、enum、struct +enum 和 struct 都是值引⽤ -> 可以引出问题:写时复制 / struct ⽐ class 有什么优势 + +3)⽅法派发 +Swift 直接派发,没有 isa 那⼀段,OC 要通过 isa 查找; +[https://www.jianshu.com/p/91bfe3f11eec](https://www.jianshu.com/p/91bfe3f11eec) ,Swift 的消息派发,浓缩在下⾯的表⾥了. + +runtime 之消息转发: + +- 消息发送(缓存+函数表查找,往⽗类查找) +- 动态⽅法解析(动态缓存,class_addMethod 添加) +- 消息转发 (forwardingTargetForSelector / methodSignatureForSelector / doesNotRecognizeSelector) + +![](../assets/16911995736181.jpg) + + +| Swift ⽅法派发 | 直接派发 Direct Dispatch | 函数表派发 Table Dispatch | 消息机制 Message Dispatch 转化为 objc_msgSend | +| --- | --- | --- | --- | +| NSObject | @nonobjc or final | Initial Declaration函数内部调⽤ | Extensions dynamic | +| Class | Extensions final | Initial Declaration 函数内部调⽤ | dynamic | +| Protocol | Extensions | Initial Declaration 函数内部调⽤ | @objc | +| Value Type 值类型 | All methods | N/A | N/A | + + +[https://chat.openai.com/share/5ed1d819-48e0-4755-8e8c-5d3a6d0e7db6](https://chat.openai.com/share/5ed1d819-48e0-4755-8e8c-5d3a6d0e7db6) + +```swift +//请猜测打印的结果 +// [2023-07-28 14:45:39] @iTeaTime(技术清谈)@ChenYilong +import UIKit + +class BaseCell: UITableViewCell { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension BaseCell: ClassIdenfifiable { + static var reuseIdentifier: String { + return "default" + } + + static var reuseIdentifier2: String { + return "B" + } +} +protocol ClassIdenfifiable { + static var reuseIdentifier: String { get } +} + +extension ClassIdenfifiable { + static var reuseIdentifier: String { + return String(describing: self) + } + //不在 Protocol requirements 中声明 + static var reuseIdentifier2: String { + return "A" + } +} + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + let aType: ClassIdenfifiable.Type = BaseCell.self + print("aType.reuseIdentifier is ", aType.reuseIdentifier) + print("aType.reuseIdentifier2 is ", aType.reuseIdentifier2) + + print("BaseCell.reuseIdentifier is ", BaseCell.reuseIdentifier) + print("BaseCell.reuseIdentifier2 is ", BaseCell.reuseIdentifier2) + } + +} +``` + +协议声明的方法是一定有正确的行为的.所以无论是什么什么方式调用,id一定是default, 不对你可以找苹果. 至于id2, 其实是ub的, undefined behavior 换句话来说,你可以用 静态派发 来解释这个行为,但不能假定他一定会静态派发 + +这就是为什么我说他是ub的,因为swift的团队都不知道怎么处理 + +[](https://github.com/apple/swift/blob/main/docs/GenericsManifesto.md#maybe) + +考察的是Swift方法派发 + +[](https://github.com/apple/swift/blob/main/docs/GenericsManifesto.md#dynamic-dispatch-for-members-of-protocol-extensions) + +| 区别 | 派发行为 | 别称 | +| --- | --- | --- | +| Protocol Default Implementation | Dynamic Dispatch | Table Dispatch | +| 普通 Extension | Static Dispatch | Direct Dispatch | + +细节: +1」 Swift  协议和类的 extension ⾥的⽅法使⽤直接派发,所以不能被重写; +2」NSObject 的 extension 会使⽤消息机制进⾏派发,NSObject 作⽤域内的的是函数表派发; +3」协议⾥声明的, 并且带有默认实现的函数会使⽤函数表进⾏派发; +4」消息派发通过缓存来达到跟函数表派发⼀样的效率; +5」OC 可以通过 `___**attribute__**((objc_direct))` 实现直接派发; +6」Swift 的派发在 SIL(Swift Intermediate Language)中的表现: +直接派发(Direct):在 SIL ⽂件中,以 function_ref 的⽅式获取函数; +函数表派发(Table):在 SIL ⽂件中,以 class_method 的⽅式,通过 Vtable 获取函数; +消息转发(Message):在 SIL ⽂件中,以  objc_method 的⽅式获取函数; +协议表调度(witness_method):实现了协议的 Swift 类,通过 PWT 找到 Vtable 进⾏调度; +7」函数表派发的 Vtable 存在 metaData 中; + +// ClassIdenfifiable is Existential type + + **let** cell: ClassIdenfifiable = BaseCell() + +![](../assets/16911995859741.jpg) + +![](../assets/16911995927355.jpg) + +![](../assets/16911996015251.jpg) + + + +### **43. What is polymorphism?** + +![](../assets/16911996112667.jpg) + + +Polymorphism is an essential building block of any object-oriented programming language. It uses a single symbol to represent many different kinds of entities or the availability of a single interface to entities of diverse types. With polymorphism, your code can operate on either the parent class or one of its offspring, depending on the supported hierarchy (family of objects). + +## 5、不通过继承,代码复⽤ / 共享的⽅式有哪些? + +1)swift ⽂件⾥的⽅法在包⾥ public / open 相当于全局函数; +2)通过 protocol + protocol 的拓展默认实现,实现这个 protocol 就可以拥有这些代码的能⼒; + +## 父类的分类中写了一个方法, 子类能否直接调用。告知原因。 + +| 调用演示 | 类别 | 注意事项 | +| --- | --- | --- | +| [self cyl_test]; | 分类实例方法 | 必须在子类中手动 import 父类的分类,否则抛 编译错误❌ | +| [self performSelector:@selector(cyl_test)]; | 分类实例方法 | 必须在子类中手动 import 父类的分类,否则抛 warning⚠️ | +| [[self class] cyl_testClass]; | 分类类方法 | 必须在子类中手动 import 父类的分类,否则编译错误 ❌ | +| [[self class]performSelector:@selector(cyl_testClass)]; | 分类类方法 | 必须在子类中手动 import 父类的分类,否则抛 warning⚠️ | + +## **面向协议编程:** + +What is a protocol and how can we benefit from it? +![1](assets/1-3.jpg) + +**What is protocol extension? Why Swift called as Protocol Oriented Language?** + +[What is protocol extension? Why Swift called as Protocol Oriented Language?](https://www.iosiqa.com/2020/04/what-is-protocol-extension-why-swift.html) + +1. +2. + +## 6. Can we add a property in a protocol? Can we put property in the protocol in Swift? + +**What is protocol extension? Why Swift called as Protocol Oriented Language? + +[https://chat.openai.com/share/5ed1d819-48e0-4755-8e8c-5d3a6d0e7db6](https://chat.openai.com/share/5ed1d819-48e0-4755-8e8c-5d3a6d0e7db6) + +[What is protocol extension? Why Swift called as Protocol Oriented Language?](https://www.iosiqa.com/2020/04/what-is-protocol-extension-why-swift.html) + +![](../assets/16911996216316.jpg) +![](../assets/16911996296998.jpg) + + + +## 2、Swift 的协议和 OC 的协议有什么区别 +![4](assets/4.jpg) + +1)OC 的协议⽤来实现代理; + +2)Swift 协议定义了适合特定任务或功能的⽅法,属性。协议可以由类,结构或枚举实现,任何类型实现协议的要求 +⽅法称为遵守协议(⾯向协议、接⼝编程); +1」协议后加 : AnyObject 可以让协议只能被 Class 实现; +2」使⽤类的拓展可以让现有的类实现协议; +3」使⽤协议的拓展,可以让协议有默认实现; +4」类似 OC 的 @optional 实现(对于 3」的应⽤) +推荐在 protocol 的 extension ⾥实现默认⽅法,这样就不必写这个⽅法的实现了。 +混编的可以 @objc; + +3)⾯向协议编程与⾯向对象编程相⽐有什么优缺点? +⾯向协议:可以实现多继承、代码量少,不会污染,代码耦合性低 ;缺点:可读性低 + +4)常⽤协议: + +OptionSet , 实现该协议可以实现 [.a, .b, .c] 这样的枚举集合,类似 C 语⾔ enum 的按位枚举; +Equatable,实现协议可以使⽤ !=、== , 与之相似的还有 Comparable; +Codable,(混合了 Decodable 和 Encodable),encode / init decode ⽅法; +1」实现了 Codable , 就可以⽤系统的 JSONEncoder().encode ⽅法; +2」处理 空值,⽤可选把 null 转换成 nil; +3」处理 ⽅法属性名映射,重写 enum:  private enum CodingKeys: String, CodingKey { +case abc = “a_b_c" +}; +4」处理 系统类,如 CLLocationCoordinate2D,在 extension 中实现 Codable; +Sequence / IteratorProtocol,实现了可以使⽤ for … in ,类似链表结构,IteratorProtocol 中包含 next() ⽅法,和 +currentIndex ⽅法;(下⽂ Sequence 部分有更详细的说明) +Collection: +在 Sequence 的基础上,实现了下标⽅法 Index,遵守 Comparable 协议; +IndexingIterator,类似 IteratorProtocol; +(下⽂ Sequence 部分有更详细的说明) + +![](../assets/16911996385220.jpg) + + +## **闭包:** + +## Closure in Swift + + +![](../assets/16911996525270.jpg) + + +![](../assets/16911996457612.jpg) + + +## Swift 的闭包(Closure) 和 OC 的 Block +![](../assets/closure_vs_block/banner.jpg) + +![](../assets/closure_vs_block/closure_vs_block_map.jpg) + +本质上 OC 的 block 就是⼀个结构体,然后这个结构体⾥⾯有⼀个结构体成员专⻔⽤来保存捕捉对象,因此才会导致 +被 block 捕捉引⽤ +1  ,或者说 block 是⼀个带有⾃动变量(局部变量)的匿名函数。 +Block 的原理及其内存管理 +Swift 的闭包:(闭包是⼀个捕获了全局上下⽂的常量或者变量的函数) +1、捕获值原理:在堆上开辟内存空间,并将捕获的值放到这个内存空间⾥ +2、修改捕获值时:实质是修改堆空间的值 +3、闭包是⼀个引⽤类型(引⽤类型是地址传递),闭包的底层结构(是结构体:函数地址 + 捕获变量的地址 == 闭包) +4、函数也是⼀个引⽤类型(本质是⼀个结构体,其中只保存了函数的地址) + +参考: [《Swift-进阶 09:闭包(⼀)使⽤&捕获原理》](https://www.jianshu.com/p/299a9a5c5cd1) + +先看个经典的闭包优化 + +```swift +results = OKRs.filter({ (s1: Int) -> Bool in +      return s1 > 90 +}) //正常闭包 + +results = OKRs.filter({ s1 in return s1 > 90 }) //类型推断 +results = OKRs.filter({ s1 in s1 > 90 }) //默认返回值 +results = OKRs.filter({ $0 > 90 }) //参数替换 +results = OKRs.filter{ $0 > 90 } //尾随闭包 +results = OKRs.filter( $0 > 90 ) //⾃动闭包 @autoclosure // @autoclosure 会把 $0 > 90 的表达式⾃动转换成 () -> T +//a ??b 中 b 的实现也是转换成了⼀个⾃动闭包 () -> T + +``` + +swift 闭包的优化,就是上⾯的代码 +1.根据上下⽂推断参数和返回值类型 +2.从单⾏表达式闭包中隐式返回(也就是闭包体只有⼀⾏代码,可以省略return) +3.可以使⽤简化参数名,如$0, $1(从0开始,表示第i个参数...) +4.提供了尾随闭包语法(Trailing closure syntax) + +闭包捕获值: +闭包可以在其定义的上下⽂中捕获常量或变量。 +即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内引⽤和修改这些值。 +Swift最简单的闭包形式是嵌套函数,也就是定义在其他函数的函数体内的函数。 +嵌套函数可以捕获其外部函数所有的参数以及定义的常量和变量。 + +![](../assets/closure_vs_block/closure_vs_block_question1.jpg) + +```swift +//这个例⼦就是 嵌套函数 incrementor() 的本质是闭包, 闭包捕获了 runningTotal 值,存储了起来, +所以每次调⽤都会 + 10 +func makeIncrementor(forIncrement amount: Int) -> () -> Int { +    var runningTotal = 0 +    func incrementor() -> Int { +        runningTotal += amount +        return runningTotal +    } +    return incrementor +} + +let incrementByTen = makeIncrementor(forIncrement: 10) + +// 返回的值为10 +print(incrementByTen()) +// 返回的值为20 +print(incrementByTen()) +// 返回的值为30 +print(incrementByTen()) + +``` + +扩展: + +![](../assets/closure_vs_block/closure_vs_block_question2.jpg) +![](../assets/closure_vs_block/closure_vs_block_question3.jpg) +## **可选类型:** + +## What is optionals? + +optional == wrapped 包 + +when use optional == unwrapped 解包 +![](../assets/16911996627336.jpg) + + +[Difference between optional values in swift?](https://stackoverflow.com/a/29054155/3395008) +![](../assets/16911996707498.jpg) + + +Swift 5.7 introduces a new, more concise way to unwrap optional values using `if let` and `guard let` statements. Before, we always had to explicitly name each unwrapped value, for example like this: + +[Swift 5.7’s new optional unwrapping syntax | Swift by Sundell](https://www.swiftbysundell.com/articles/swifts-new-shorthand-optional-unwrapping-syntax/) +![](../assets/16911996765839.jpg) + +![](../assets/16911996818935.jpg) + + +1. 4. What is the difference between if let and guard let? + +## *8、Optional(可选型) 是⽤什么实现的* + +*使⽤枚举(enum)的关联值 特性实现的。 +1)枚举的关联值和原始值: +原始值: 就是 rawValue +关联值:类似与下⽂ Optional some 的⽤法,可以根据不同枚举类型创建不同的枚举。Alamofire 的回调也是这么⽤的。 +2)Optional 源码:* + +```swift +*1"//使⽤枚举,Wrapped 的英⽂是 使""...包裹的意思 +2enum Optional { +3  case none +4  case some(Wrapped) +5} +6 +7"//这是个语法糖,下⾯两种形式等价: +8var name: Optional +9var name: String?* + +``` + +*1) ! 或者 ?拆包   +所谓的 nil 就是 Optional.None  +使⽤的时候后需要使⽤ ! 来从 enum ⾥进⾏拆包  +!⽤来求取 Optional.Some(T) 包装下的值,所以为 Optional 值 = nil 时会报错; -> 这⾥可以引出泛型相关问题* + +*2) 可选链 +a?.b?.c,如果前⾯的为 nil 了则结果直接为 nil;* + +*3)?? 来表示默认值 +4)除了 ! / ? 拆包,还有 if let 可选绑定、隐式解析(a!= xxxx)两种处理 Optional 的形式;* + +#### 4. How to unwrap optionals in Swift? +https://www.hackingwithswift.com/sixty/10/2/unwrapping-optionals + + +## *lazy load 是怎么实现的?* +![](assets/16914714232134.jpg) + +请解释 Swift 中的 lazy 关键字是怎么实现的?在什么情况下会使用它? + +*Swift 的 lazy 分: + +1」lazy 修饰属性(⻅上⼀条); +2」lazy 修饰⽅法(⻅上⼀条); +3」collection 中的 lazy: +把 Sequence 替换成了 个 LazySequence(实现 SequenceWrapper 接⼝); +SequenceWrapper 保存了原始序列和变换(transform); +LazySequence  的 Interator 在 next() ⽅法中,实现了延迟调⽤变换(transform);* + + + +------ + +

diff --git a/Behavioral_based_interviewing_Competency_Based/assets/4-1.jpg b/Behavioral_based_interviewing_Competency_Based/assets/4-1.jpg new file mode 100644 index 0000000..096860b Binary files /dev/null and b/Behavioral_based_interviewing_Competency_Based/assets/4-1.jpg differ diff --git a/Behavioral_based_interviewing_Competency_Based/assets/5-1.jpg b/Behavioral_based_interviewing_Competency_Based/assets/5-1.jpg new file mode 100644 index 0000000..a15b7e8 Binary files /dev/null and b/Behavioral_based_interviewing_Competency_Based/assets/5-1.jpg differ diff --git a/Behavioral_based_interviewing_Competency_Based/assets/6-1.jpg b/Behavioral_based_interviewing_Competency_Based/assets/6-1.jpg new file mode 100644 index 0000000..7bab981 Binary files /dev/null and b/Behavioral_based_interviewing_Competency_Based/assets/6-1.jpg differ diff --git a/Behavioral_based_interviewing_Competency_Based/assets/7-1.jpg b/Behavioral_based_interviewing_Competency_Based/assets/7-1.jpg new file mode 100644 index 0000000..f613d90 Binary files /dev/null and b/Behavioral_based_interviewing_Competency_Based/assets/7-1.jpg differ diff --git a/Behavioral_based_interviewing_Competency_Based/assets/behavioral-question.jpg b/Behavioral_based_interviewing_Competency_Based/assets/behavioral-question.jpg new file mode 100644 index 0000000..117b7df Binary files /dev/null and b/Behavioral_based_interviewing_Competency_Based/assets/behavioral-question.jpg differ diff --git a/Behavioral_based_interviewing_Competency_Based/objective_qa.md b/Behavioral_based_interviewing_Competency_Based/objective_qa.md new file mode 100755 index 0000000..8ce4976 --- /dev/null +++ b/Behavioral_based_interviewing_Competency_Based/objective_qa.md @@ -0,0 +1,221 @@ +# 自我介绍类型Behavioral-based interviewing Competency-Based Interviewing + + +![https://github.com/ChenYilong/iOSInterviewQuestions](/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png) + + + +## 视频介绍 + +[https://youtu.be/xJm0lBLh6dQ](https://youtu.be/xJm0lBLh6dQ) + +## 正文 + + +## Behaviour (HR interview) +### About Position & Company +#### 1. Why did you apply for this position? What are you interested in this position? +According to the company's business and tech stack to talk about. +#### 2. Do you learn about our company? +If you have used the app, it's better. +#### 3. Could you tell me your expected salary? + +#### 4. When can you start your work? +I will start my work in 2 months if I get the offer. +#### 5. Do you need us to offer sponsorship(working visa)? +Yes. + + +## How do you handle the pressure? + +## Please introduce yourself to us? + +## Can you introduce yourself in general? + +I’m Yilong Chen. You can me Elon for convenience. + +I’m an iOS Developer and have been working as an **iOS Developer/mobile developer/mobile app developer** for eight years. And I have served some big companies like **Alibaba** group. I have developed some trendy frameworks on the **[GitHub](https://github.com/ChenYilong/)** platform and achieved about 30,000 stars. I’m flexible to work anywhere in New Zealand. But I prefer to work in **Auckland**. + +## Have you ever had a COVID vaccine? + +Yes, I had a COVID vaccine. + +## What visa are you holding? + +## What visa do you hold? Is it valid to work in NZ? + + **Do you need us to offer sponsorship(working visa)?** + +I have a valid **open work visa** and a working permit in NZ. + +## Where would you like to be based? + +I am flexible about basing myself anywhere in NZ. However, I prefer to work in **Auckland**. + +## How Long Should Your Notice Period Be? + +I have **resigned** from my job; I’m **flexible** now. + +## Do you plan to stay in New Zealand? + +## Why do you want to come to New Zealand to work? + +## Why do you want to move to NZ? + +## Have you been to New Zealand? + +## What is the best thing you saw in New Zealand? + +## What’s the most beautiful thing you saw in New Zealand? + +It was a long ago. I had the plan to move to NZ, + +I also began my plan, resigned from my job, and tried to move to New Zealand. But the pandemic came, I had to give up my plan.But recently, a few months ago, the immigration organization reacted to my work visa, so I resigned from my job immediately and began my plan. I’m very committed to relocating to New Zealand. So my long time plan is to make a life for my family and me here in New Zealand, and stick with our company. + +Three years ago, I married and spent one month on our honeymoon in New Zealand. I love everything about New Zealand. Some things inspired me a lot. + +Firstly, I’d like to talk about the **natural environment**. I had been to New Zealand three years ago, there were always blue sky and white clouds in sky and the river is very very clean. I had my honeymoon there and fell in love with this country. So I was determined to move to New Zealand three years ago. + +Secondly, I’d like to talk about the **culture and values**. I’m very into the new Zealand values, like the work-life balance, which is suitable for my family and me. + +Thirdly, it‘s **good security** in here. It’s a **safe** country. I feel safe here. I like to live in a safe country where you can go outside and go to the park and walk in the mountains. + +Fourthly, it is **citizens’ kindness and eagerness to help**. I like the **people** here. On my honeymoon in New Zealand, we traveled to most of the big cities, like Auckland, Christchurch, and Wellington. We also met a lot of old friends in New Zealand. And they were very kind to have dinner with us. They were **hospitable**, open, and friendly, and they had lunch or dinners with us. + +Everyone on the street said hello to us if we met them. It was quite amazing experience. + +If I asked where’s that place or where can I find that, they were very eager to help.They were always ready to help you. I felt welcomed in new Zealand. + +## Why do you want to leave your job? + +I had this **immigration** plan for a long time, but the pandemic stopped my plan for about three years. My work visa recently became active again a few months ago, so I decided to continue my immigration plan. I resigned from my job to seek new opportunities in New Zealand. + +## What is your career plan? + +## Where do you see yourself in five years + +## What do you want to be to achieve in five years + +If I had to look at my career aspirations for the next few years, I would like to enhance my **skills**, and make myself more **professional.** I aspire to be an **expert** or **specialist** in my field with the consideration of studying further in NZ. + +## Do you have any expectations for the following job opportunities? + +Firstly, I would like my next job to be based in **Auckland**, NZ. However, if the job requires me to work **remotely**, I am okay with that, as it will allow me to work from any city. +~~Secondly, I want to take on more responsibilities in my next job opportunity. +e.g. I work as an iOS developer, but if the company requests me to perform any additional roles, I would happily agree. Because taking on more responsibilities will help me enhance my skills and experience.~~ + +//TODO: position **expectations** + +## What type of work do you need? Contract work or permanent full-time job? + +At this time, I am only considering **permanent full-time** employment, not contract work. However, if I change my mind, I will let you know again. + +### What working in New Zealand are you looking for? + +I’m looking for a job as an **iOS Developer/mobile developer/mobile app developer.** + +I’m an iOS application developer. And at the same time, I have some experience in backend development. + +Can you go into more detail about what you did With backend development? + +Generally speaking, I was working as an iOS developer. However, during my work, I have to perform as a backend developer to develop the API, which is short for an application programming interface. + +In addition, I’d like to introduce my primary role as an iPhone platform developer. I developed some trendy applications in the app store, like the XXX application and some popular frameworks. I used to use some programming languages like react-native and objective-c, swift. But, I still want to go further. + +## What are your salary requirements? + +## What are your salary and your expectations? + +~~My first aspiration is to work in New Zealand. A secondary factor would be remuneration; perhaps my most recent salary would be a good guideline for you. Salary is not my predetermining condition; Working in New Zealand is.~~ + +~~A m**arket salary** would be great.~~ + +~~I want to share my last salary.~~ + +I am **particular** about my salary. I prepared for a **certain number** about the salary, say $XXX this is what I have in mind. + +(it's essential to say what you expect. Then the company will maybe come in with a lower offer. But then you can also say, I can't accept this one, but $xxx more. So you can negotiate, but go in with a number.) + +## What is your hobby? What do you do to relax well? + +I like exercising because I want to be a **balanced person**. + +If I had time, I'd like to post blogs on the internet, share my experience with the public, conclude my knowledge, and try to share knowledge with the public. + +## How are you going to settle since you're going to be with different nationalities? + +What is the first thing you will do after working in New Zealand as a software engineer? How are you going to settle well? + +Before I answer this question, I'd like to share my experience. I had been to New Zealand three years ago. When I xxx, this was my second time in New Zealand. + +So, how can I adapt to life in New Zealand? + +The most important thing is to continue my career in New Zealand and build strong relationships with the people I meet. + +I have a lot of friends in New Zealand, and I also keep connected with them tightly, we share information about New Zealand, and I think it was pretty helpful, and I learned a lot of things about New Zealand. So I think maybe the country's culture and the company's culture and values influence me a lot, and I'd like to accept those things. + +## Why do you want to do this job? + +//TODO: STAR + +Regarding the software engineer, I think this job is very frustrating and challenging. However, through this job, I can learn a lot of technical knowledge and try to solve some customers' problems. My job will provide much value to customers. I think it is worth it. Furthermore, in terms of my current job as a mobile phone developer, it's a kind of front development. I can provide some services directly to the customers. This way, I can influence customers and help them improve their lives and work. I think it is valuable. + +I like your company because it's in the city I want to live in. I like the culture at your company and the good reviews about your company. + +(For this question also try to mention something about the company and why do you want this job, you spoke about the technical aspects of your career but also try mention I like your company because it's in the city I want to live in or something specific to the company that's difficult to prep in advance. or something particular to the company.) + +## If today were your first day of work, what would you do? + +I want to do two kinds of things. + +Firstly I'd like to be familiar with the company's culture, like the company's values. + +Secondly, introduce myself to team members, and socialize with them. + +Thirdly, set up digital devices and prepare for my next task. First, I will learn about which technologies we are using and prepare for the knowledge a lot. And then, I'd like to review the project code to learn a lot about the business logic. In this way, I can start my next task quickly. + +## Can you describe your work schedule for the day? + +//TODO: 时间规划 + +## How would you describe your personality in five words? + +Describe your personality in five words. How would you describe yourself? + +- Problem solver/Solution-driven (Leadership//TODO: reason:) +- Hardworking, //TODO: reason: +- Independent, //TODO: reason: +- Responsible//TODO: reason: +- **Spirit of research** //TODO: reason: +- honesty //TODO: reason: +- flexible, Are you adaptable to changes +- Reflective ability + + + +### Personal +#### 1. What are your hobbies outside of work? +I usually play computer games outside of work. My favourite games are Starcraft II and Civilization 6. Besides, I have a Nintendo Switch, and sometimes I play Ring fit to keep fit, and Mario with my family. In China, I invited my former colleagues to my home, and play Switch and PS4 together. It's a great way to foster relationships with colleagues. + +#### 2. Do you like our country? Why do you intend to move to this country?/Why did you apply for a job in our country? +If you have never been to this country, HR maybe ask you this question. +Take Berlin for example: +I like the vibe of a startup company so much because I can feel the vitality of a company and group up with it together. I worked in Beijing before, there are a lot of startup companies. However, the country's wave of entrepreneurship has waned due to the recent economic situation. I know the startup atmosphere in Berlin is excellent, many Unicoms emerge in this city. I think that is suitable for my career plan, so I intend to develop in Berlin and witness the development of the Internet industry. +Moreover, Some of my former colleagues and friends in technical groups are working there. They told me the price isn't expensive and I can find all kinds of food, especially since there are many Chinese restaurants. These points attract me, so I must choose Berlin as my first choice. + +#### 3. Do you have friends and/or family here? Or do you have relocation plans? +To see the above answer. +#### 4 What's your plan on the first day of working if you could join us? +I will be familiar with team members and company rules. I believe someone will introduce them to me, but I have a little bit face blind, so I need some time. Perhaps lunch or playing games together can help me be familiar with them soon. +If I can get my work computer on the first day, I'll config my development environments, such as installing necessary tools. I hope they can fit my habits and keep good working efficiency. + +#### 5. Do you prefer to work in a startup company or a big company? +I prefer to work in a startup company. There are 3 points of startup companies attracting me. +1. I worked in startup companies. I can feel the startup team is more enthusiastic and innovative. Teammates can feel the achievement that everyone creates together. +2. The hierarchy is flatter than big companies. I believe this makes communication more efficient. +3. The startup means more opportunities to me, including promotion, and stock sharing. The more important thing is that I can witness a project and a company growing up with my colleagues. + + +#### 6. What does work-life balance mean to you? +The work-life balance means more flexible spare time to me. I can spend them on many things. I can rest and have amusement to restore my energy; I can have more time to be company with my family. Of course, I prefer to spend some time learning new technology or other technical space, such as backend, and AI. I believe my spare time can bring me more possibilities, which lets me have fresh ideas instead of blocking into fixed thinking. + diff --git a/Behavioral_based_interviewing_Competency_Based/subjective_qa.md b/Behavioral_based_interviewing_Competency_Based/subjective_qa.md new file mode 100755 index 0000000..110746f --- /dev/null +++ b/Behavioral_based_interviewing_Competency_Based/subjective_qa.md @@ -0,0 +1,580 @@ +# 主观面试Behavioral-based interviewing Competency-Based Interviewing + +![https://github.com/ChenYilong/iOSInterviewQuestions](/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png) + +## 视频介绍 + +[https://youtu.be/xJm0lBLh6dQ](https://youtu.be/xJm0lBLh6dQ) + +## 正文 + +## How do you handle the pressure? + +## How is your work affected effectively under pressure? + +Keywords:  **passion** and **enthusiasm, beginner, unfamiliar** + +First, I think the best way to deal with the pressure is to use your **passion** and **enthusiasm**. + +Generally speaking, pressure means that tasks are very challenging and frustrating. However, if you can face the problems directly and use your passion to manage them, you will enhance your profession and gain knowledge. + +I want to give you an example. + +It was a long time ago; I joined a new company. As a **beginner**, I faced some challenging situations because I was **unfamiliar** with the system and the tools. So I worked under pressure. + +And I’d like to talk about how I dealt with this situation. Firstly I tried to get familiar with the system and the technical knowledge used in the company to have a quick start. If I have any questions I can’t manage to answer, I want to ask my manager or my co-worker for help, so they can give me some advice so I can finish my tasks effectively. + +As a result, I finished my first tasks on time, and also at the same time, I learned a lot of technical knowledge and prepared for the later tasks. + +## How do you handle a challenge? + +~~When it comes to the challenge during the work, sometimes challenges come from your colleagues.~~ + + ~~try to face the problem. But my colleagues disagreed with this plan. So I think this situation could be called a challenging situation. +I want to talk about how I handle it. First, I had a very detailed conversation with my colleagues and tried to give a quick demo to customers to have quick feedback from the customers so that we could figure out if the plan worked well. +If the feedback is negative, we will try another one, but if the feedback from the customer is very positive, we will have a deal. +So I think feedback and communication are the critical points to dealing with the challenge.~~ + +//TODO: STAR + +//*one more thing* + + + +## Have you ever made a mistake? + +## How did you handle the mistake? + +Keywords: **learn from a mistake**, + +We all make mistakes and **learn from** them. + +~~Let me give you an example, and it was a long time ago; I was dealing with a project, and we had a deadline, but I was a perfectionist and wanted to finish work perfectly. So I did many additional works to help our customers. as a result, I didn’t finish the work on time. I think it was quite a mistake. after the mistake, I reviewed the error and concluded that I should ask your manager for some advice and confirm the more critical task. so that I can finish work on time. I learned a lot about priority through mistakes. ( //TODO: 朋友点评: 例子需要重写, 不能写超deadline的工作失误, 很严重)~~ + +I learned that priority is a big issue from that mistake. + +## Give me an example of a goal you reached, and tell me how did you go about reaching it? + +To Use DMAIC.7 + +If I want to increase the business profit, I’d like to review how it went last quarter. + +Secondly, I’d like to **separate** the task **into tiny tasks** so that I can get quick feedback, and it is also straightforward to judge whether we achieved it or not. + +Thirdly, I’d like to make the goal achievable so that the goal can inspire us. + +## Describe a decision you made that wasn’t popular? How did you implement it? + +Last year, we were going to change some old frameworks to a new one. + +We wanted to finish it in one year. + +We desired that we could change the framework 100 percent. + +But I advise that we set a little goal every quarter, like we get 30 percent in one quarter. So that at the end of the year, we could achieve 100 percent eventually. + +We have given the service to one to a part of the customer every quarter. In this way, we achieved that goal and provided good customer service. As a result, we managed it and got a lot of great feedback from the customer. + +## What are the things that make you gain pride in your work? + +//TODO: STAR + +When I solve challenging problems not solved in my industry, I think it makes me proud. And sometimes, if I learn a new technical knowledge released a short time ago, this also makes me proud because of my curiosity and the depiction of the keen technical understanding. + +## What are your most important career accomplishments? + +//TODO:STAR + +What have you already achieved in your job? + +For instance, you promote to a manager or a team leader. So how does your career build accomplishments? So if I ask you your significant accomplishments, what did you already achieve up to date? So what would you say? + +I think I want to talk about my soft skills. I think my most career significant accomplishment is how to solve problems individually and also work as a team member. + +Most of the time, software engineers have to deal with a challenging problem individually. So I had to have strong skills. + +So I learned how to collect knowledge and share ideas with the team members. + +## Why do you want to join this company? Why do you apply for this specific job? + +I want to join our company, which is doing some instant message service, just like the Facebook and WeChat. + +I'm a crazy user of your products. And I'm very into the service this company provides. + +Social networking is the future. Everyone in the world needs to have a connection with others. If I join this company, I can provide the knowledge I have acquired to help the company build more stable, challenging features and reliable customer service. + +I'm professional about this kind of technology because I have worked at a company with the same service and features. + +I paid a lot of attention to this industry. So I'm also very into this industry. + +So I think I will also enhance my skills if I join this company. + +## What are your Biggest Strength/Advantage? + +My biggest strength is my passion/enthusiasm for new knowledge so I can enhance myself quickly and complete the frustrating and challenging tasks by myself. + +My biggest strength is my passion/curiosity +for learning new knowledge so that I can grow as a worker and complete more challenging tasks without supervision. + +I am passionate about getting more knowledge. + +I am very customer service-centric. + +I am eager to learn, willing to learn. + +I can structure knowledge very well. + +//TODO: STAR + +## What are your Biggest Weakness/Disadvantage? + +~~My biggest weakness is my desire to complete things perfectly. I am a perfectionist. In other words, sometimes I want to complete tasks perfectly; as a result, I waste a lot of time improving things and miss the deadline. I have a plan to fix this weakness. First, I would like to have more communication with my manager to confirm if the task's status is good enough or not so that I can complete the job before the deadline.~~ + +//TODO: 重新准备 STAR + +## What do you think will make you feel stressed? What sort of thing stresses you out at work? + +When I am dealing with tasks, I haven't dealt with before. So I must pay attention to the new skills and learn the latest technical knowledge. I have to step out of my comfort zone, which makes me feel stressed, but because of my passion and enthusiasm for new technical knowledge, I think it would not be a big problem. + +I think it's an excellent way to help me enhance my skills and make me more professional, so I'd like to cope with this stressful emotion. + +When my work is not perfect, it does make me feel stressed because I'm a perfectionist, so I will always try to compete for things in an ideal status, + +but if there is a conflict between the deadline and the perfect level, this situation will make me feel stressed. So I think I will ask my manager or co-workers for help to help me to prioritize. + +The priority is that it's also good knowledge for me to learn more. + +Part, what part of your job do you think will make you feel stressed that's you can link that to your weaknesses. But, again, those questions are very similar. + +## How would you handle conflict with a co-worker/ product owner / user experience? +![4](assets/4-1.jpg) +![5](assets/5-1.jpg) +![6](assets/6-1.jpg) +![7](assets/7-1.jpg) + +First, I would like to have a principle that says User Experience Always Has to Come First. + +Based on this principle, I want to try to cope with the conflict. If my coworker or customer makes a challenging demand, I would like to do my best to help them, but if it is beyond my responsibility. I would like to ask my manager for help. If the manager confirms, I can spend additional time helping coworkers or customers. I think I will be happy to help them during my work time. + +Simple Steps to Deal with Conflict: + +1. **Let Them Have Their Say:** + - Don't interrupt. + - Allow them time to express themselves. + +2. **Don't Get Angry:** + - Stay calm and composed. + - Allow them time to let off steam. + +3. **Apologize:** + - Say "I’m sorry that has happened." + - You may need to apologize several times. + +4. **Look for a Solution:** + - When they are ready, discuss possible resolutions. + - Make agreements on the next steps. + +5. **Involve the Manager:** + - Where necessary, involve the Management Supervisor. + +An Easy Way to Remember How to Handle Conflict: + +- **H** - **Hold Back:** Practice restraint in your response. +- **E** - **Empathise:** Show understanding and compassion. +- **L** - **Listen:** Actively listen to the other person's concerns. +- **P** - **Provide a Solution:** Work towards finding a resolution. + +//TODO: STAR + +团队内部出现相悖的观点,可能要体现你的open观点,和其他developer,测试,PO 协商,seek better solution.同时也要相信体现自己的technical confidence,可以make a suitable decision. + +冲突这个问题,你拿到了后。先要general的说一下,我做it这么多年了,这种问题其实常有发生,或者不可避免。当遇到冲突的时候,首先我会想想是不是我的解决方案有漏洞,是否还可以继续优化。如果是的,那我肯定会先改进,然后和对方去discuss the final solution。 如果我觉得我的方案没有错,那我回去听一下对方的建议,可能是我们都有疏忽。然后一起敲定解决方案。如果真的是由于一些原因导致无法采用最优解,那我们也会创建ticket去记录这个东西持续改进。我相信大家都是professional的,没有问题解决不了. + +你就说我们都是experienced的,和professional的it人士,我相信,任何时候,我们都会be open-minded,去discuss to seek a higher quality solution, then we execute it. 如果反对,那一定是一个open discussion,我只是表述自己的意见,帮助大家更好的去理解那个问题。 of couse,如果我们敲定了最终方案,当然就要严格执行下去. + +这个题,其实更像是你在敏捷里的角色,planning和refinement都是讨价还价,各抒己见的菜市场,但是一定敲定了,那么sprint的execute就是要尽可能的achieve goal + +## How do you handle conflict between team members? What do you do? + +As we worked together daily, a conflict was quite brutal to avoid. We have to face it directly. I want to share my experience. During my last job, we worked very hard and had a very tight deadline. We had to deal with multiple projects. Sometimes, we had to ask our colleagues for help because we all had very tight deadlines. In this situation, we had some conflicts because of disturbance. + +I want to talk about how I try to solve this problem. + +First, the principle is that conversation and discussion is the most important thing to solve the problem. + +We had a conversation objectively and tried to take priority. This way, we could tell which is the most important thing. And had a deal with what we should do next. + +Finally, we got a good result because we took priority. + +Furthermore, I'd like to share my viewpoint with my colleagues to tell them that we want to provide good customer service. So the conflict is not because of any individual in the team. + +I want to ask my manager for help if I can't solve this conflict. I think maybe my manager can have a clear view of the conflict. + +The spectators see the chess game better than the players. + +Using the ‘questioning approach’ when seeing others working wrong to get buy-in encourages engagement and builds relationships. + +The best way to acknowledge a workmate’s actions is to say, “Well done, keep it up, thank you” when you see someone working right. + +Positive conversations promote a kind culture at work. It allows us to acknowledge the right behaviors, not just the wrong ones. + + +## What's the biggest challenge you've already faced as an engineer? + +## Can you give me at least a scenario where you have to be challenged and tell me about the details? + +Will you be dealing with many challenges here in New Zealand? + +I want to share my experience. It was in one of my companies. + +I posted a proposal and thought a lot of detail, but my proposal disagreed. It was quite a challenging situation. I want to share how did I solve this problem. I think discussion and conversation is the best way to deal with the disagreement and challenging situation, so I talked with my colleagues and spent a lot of time giving our reports and describing why I posted this proposal. In the end, they accepted my problem proposal. At the end of the year, I top ten percent in KPI, or I was able to achieve correctly. I learned a lot from the challenge. + +//TODO: 答案和题目对不上, 不是特别好那种. 应该可以有写代码遇到难题时候, 更好的例子. + +## How to play a role even if you don't like it? + +## Have you worked on multiple projects? How did you prioritize? + +Yes, I have worked on multiple projects. They were given and discussed with me by my manager. I prioritized them by their deadline and according to their urgency or importance. + +## How do you handle meeting tight deadlines? + +I would propose a meeting reschedule and provide a valid reason if that isn't possible. Then, I would join the meeting, continue participating and ask for a report after the meeting. I always ensure that I schedule my meetings on days or times when I won't be inconvenienced. + +//TODO:STAR + +## How do you handle it when your schedule is interrupted? + +I always make sure that my schedule is open to my colleagues and emergencies that may come up. I make sure that all my tasks are completed on time. If the interruption persists longer than I accounted for, I'd have to give a valid reason to my colleagues. If the emergency can wait, my work will take priority, but if it cannot wait, I'd have to reschedule my work. Not every intervention is an emergency, so I would then have to evaluate it and decide. +//TODO:STAR + +## What do you do if you disagree with a co-worker? + +//TODO:STAR +I would suggest that we be open-minded about the reason for the disagreement and then talk about it in a civilized manner, hoping to find a positive solution. +Communication is the best way to solve a disagreement. + +## What do you do if you disagree with your boss? + +Is it appropriate to go directly to him? How should you approach your boss? + +When I disagree with my boss, I will always look at our organization's policies, and looking for open communication between my boss and me, and say my viewpoint. + +First, conversation and discussion is the best way to deal with disagreement. For example, if I had a chance to disagree with my boss, I'd like to have a private conversation with him and give him my suggestion. + +I want to share my principle with him. For example, User Experience Always Has to Come First. We should discuss things objectively so that we can achieve the same goal. + +Let me give you an example. Last year, my boss gave a proposal, and most of the proposal was correct. But I disagreed with a part of the proposal. So I just spoke directly and tried to give my suggestion and reason. Then we had a very detailed conversation, and I gave the boss my suggestion. As a result, we had a good result and profit because we had a very thoughtful discussion. + +We thought about every detail. So we got an excellent profit at the end of the year. + +## Give me an example of when you did or didn't listen. + + There is a principle that says time is money; in most cases, I don't listen to it. Because it can put pressure on you. For example, in my previous work, I worked with a client that had a big problem, and it took me a long time to solve his problem, but my main aim was customer satisfaction, so l ignored the principle. + +## Give me an example of when you did and didn't listen. + +Can you tell me when you listened, and did you not listen to advice? + +As we know, everyone can make mistakes. The most important thing is to handle principles instead of listening to someone. + +For example, The majority of the time, my boss is right. But sometimes, he makes mistakes. In this case, I think I didn't listen because he was wrong, and I had to correct him directly. So it's pretty essential to give some suggestions. + +I want to share my experience. It was a long time ago. We had a massive change with our system. my manager tried to give break change to the customers. Every customer could no longer use the older system and had to use the new one. In this case, I didn't listen. + +I hold the principle that User Experience Always Has to Come First. I suggested that we had to collect feedback from customers. + +Suppose they wanted to change to the new system. We would do that. + +In the end, the majority of the customers disagreed with to change. However, my manager accepted the suggestion. + +Then we had a very soft change, gave a choice to the customers. If they want to use the new one, it's okay. But if they stick to the old one, it's all right. So that's my example. + +## + +## Can you tell me about your past boss? + +## How was your relationship with your past boss? + +## How do you want to be managed? + +## How your boss or colleagues evaluate you? + +What is the last boss, your supervisor? Do you report to someone reporting? What's your boss's name? are they supervisors or bosses? Is he or is she the president of the company? + +What's your relationship with your boss or your superior + +Can you describe me as my team leader or my manager? + +Can you tell me more about the relationship between you and your team manager because that will be a significant purpose? We want to see what's your attitude towards your boss. Indeed, you will be reporting to someone here in New Zealand. + +He was my team leader, and we worked together and had the same aim we needed to accomplish per project. + +I was an independent employee, and my boss could rely on you. +I'm independent and flexible. + +I can do my job independently and flexibly. + +The team leader dispatched the job to me, and he needed a result at the end and gave me a lot of choices and space. So I did things in my decision. + +I would post the feedback to my boss when I was doing work. Then, at the deadline, I will give a result to him. That was the relationship between us. + +Less supervision means better, and I was relying on less super-efficient. + +The less supervision we have, the more reliable we are. + +I have flexibility, independence, less supervision, and reliability. + +## Can you describe your team? + +//TODO: 待完善 + +## What problems can you foresee in the future that may happen as a software engineer? + +Can you cite me a situation, for example, in our company as a software engineer, any problems that you can foresee in the future that may happen? + +How are you going to deal with that? + +Generally speaking, it is similar to my previous work in China. Both have the same responsibilities, and we do the same work, but there is only a little difference. + +We faced the customers only from the nation. Maybe in New Zealand, our customer is from all over the world. We must deal with foreign customers and learn much about the world's cultures. + +New Zealand's work-life balance value immensely impressed me. But, unfortunately, in China, we work overtime too heavily. So sometimes, we lose the balance between life and work. + +In New Zealand, I must learn how to balance those things. + +In the future, I'd like to share my hobbies with my colleagues and try to socialize with colleagues so we can get familiar with each other. + +Tell me more about yourself when it comes to doing this job. For example, + +## Do you prefer doing something on your own as an individual? + +Would you describe yourself as a team leader or a team player? + +I can do both. I can work individually, but I am also a team player. + +First of all, I'd like to do things individually. I believe in my ability. I can solve the conflict individually. So I'd like to do this, but I can't deal with some very challenging situations. So I have to ask my team leader or manager for advice. + +//TODO:同事互相帮助而不是只有你有问题了去找上级帮忙 + +- always help. +- individual—> team work / team player +- + +## What is your feeling about social gatherings or socializing with colleagues? + +Do you approve of socializing with colleagues or working? + +What is your opinion about socializing with team members off to work? + +How do you see socializing with colleagues during work? Do you think it should happen? Or do you think? + +So socialization lies in with team members of the work. What should I do? And can you? You can say yes, + +yes, I can. + +But not as a habit. Socializing should follow some limits. + +General speaking, companies or organizations don't mind socializing off to work, as long as I keep it professional and not always, not constantly, if I've got a reason why it's okay. + +on the one hand, + +socializing with team members to work is a good thing because I start knowing each other on a social socializing together. + +I learn my interact with team members. However, it must be professional, not always. There must always be a purpose. Because socializing with team members work can lead to conflict. + +on the other hand, + +however, if team members go to restaurants or for a drink after work every day, it can lead to conflict. + +## Are you reliable enough to contain this job as a software engineer here in New Zealand? And are you confident? + +In terms of software development, I'm confident. I am very professional and have a lot of experience and qualifications. So there is no problem with software development, but in terms of the language, it's the first time I have had to deal with the work in English. + +It's challenging for me, but I have a passion for learning English, and also I'm very open-minded to learning everything about this country, culture, and language, so I think it won't be a problem. + +## Are you adaptable to changes? Are you flexible? + +Yes, I am flexible as my situation changes all the time. I am very flexible, can handle any changes that might happen, and am adaptable to changes. When anything happened in my work environment, for instance, a pandemic, I worked online or from home, completed work independently, and performed well. + +Everything these days are more flexible. I worked from home stressful can handle it. + +One of my companies has values saying that have a hug with the change, which means the world is constantly changing every time, and we have to accept it. So to be a flexible man is very important and necessary because you have to deal with the new technologies and some new systems, new team members, plans, and different clients. + +## What can you give us? + +## if we're going to hire you, what can you give us? + +## What can you share with us? + +//TODO:STAR + +I'm a professional developer, and I have a lot of experience in the software engineering industry, so I think I can use my experience to solve challenging problems in the company. In addition, I'm a person who would love to provide outstanding, excellent service to the customer, and I think I can enhance customer performance and satisfaction. Those are my abilities. + + + + +### Relationship +#### 1. How's your relationship with your colleagues? +I had a good relationship with my former colleagues, we always had lunch together, and talked about some common topics about hobbies and life after work. Sometimes I invited my colleagues to my home and played PS4 and Nintendo Switch together. + +#### 2. How do you coordinate with the project manager? +Although a member of the architecture team our demand came from other developers instead of the project manager, I still keep a good relationship with them. In a refactoring task, we ordered all features in our project with project managers together. We had a daily 10 min standing-up meeting to check the progress and quality of every feature with project managers. Besides, we used JIRA, to assign every subtask to the sprint board to manage. + +#### 3. If you have a conflict with your colleagues/boss/co-workers, how do you deal with it? +Generally speaking, conflict with colleagues is hard to avoid, because people always stand on their own to think about work. I believe exchanging views can enhance mutual understanding and recognition, and more communication instead of silence can solve a conflict. For example, once my boss gave me a task and ask me to finish it in one month. But I thought the time limit for the task is too short, and the time to accomplish it is impossible. My boss thought I have a negative attitude toward the project. So I decided to talk to him about it. I showed all timetables of every developer and the blueprint of this task. I expressed we can't finish it in one month though we work overtime every day. You need to give us one more month. He also explained the project is an emergency. Eventually, we mutually compromised, he gave me one more month to do that, and I worked overtime for this task. + +#### 4. How do you collaborate with teammates tough to deal with? +https://hbr.org/2017/04/how-to-work-with-someone-who-isnt-a-team-player + +Principles to Remember: +Do: +Inquire about your colleague’s interests, priorities, and motivations to better understand their perspective and the causes of their behavior. +Use this opportunity to revisit the team’s purpose and goals. +Look for opportunities to better utilize the uncooperative team member’s specific skill set. +Don’t: +Develop an explanation for the colleague’s behavior without talking to them first. +Ostracize the team member in question. Promote more interactions to create better group cohesion. +Assume everyone knows what they’re supposed to be working on. Clarify team members’ roles so that people know what is expected of them. + + +#### 5. As a senior Developer, How would you track the progress of a junior developer who is new to your project, especially in a learning situation? + +![behavioral-question](assets/behavioral-question.jpg) + +Certainly! Tracking the progress of a junior developer, especially when they're new to a project and in a learning situation, requires a thoughtful and well-structured approach. + +The best way to help others act right is to Always role model the right actions on site. Junior developers find it easier to act right when the boss, senior ones, and role models demonstrate the right actions for others to follow. + +What can you do to further engage positively with your mates on site? Talk to them about the right behavior you have seen others do. + +The main benefit of speaking up when you don’t feel on track is that it can save you or others from getting out of track. + +Here's how I might go about it as a senior developer: + +1. **Set Clear Expectations, Role models and Goals**: It's essential to begin by setting clear expectations and specific, measurable, achievable, relevant, and time-bound (SMART) goals for the junior developer. Understanding what's expected of them can ease their transition into the project. + +2. **Provide Adequate Resources**: Ensure that they have all the resources, tools, and documentation they need to understand the project and their role within it. + +3. **Regular Check-ins**: Schedule regular one-on-one meetings to discuss progress, challenges, and offer support. This fosters open communication and enables timely assistance. + +4. **Encourage Self-Assessment**: Motivate the junior developer to keep track of their progress and have them self-assess. This encourages personal growth and accountability. + +5. **Pair Programming and Code Reviews**: Engaging in pair programming sessions or conducting regular code reviews can help in understanding their thought process, coding style, and areas that might need improvement. + +6. **Monitor Progress Through Tools**: Using project management and tracking tools can help in keeping an eye on tasks completed, the time taken, and the quality of work. + +7. **Offer Constructive Feedback**: Provide constructive, actionable feedback that can help them grow. Be honest but empathetic in your approach. + +8. **Create a Supportive Environment**: Cultivate a supportive and encouraging environment where they can feel free to ask questions and seek guidance. + +9. **Consider Educational Opportunities**: If necessary, recommend or provide access to tutorials, courses, or workshops that might help them in acquiring the skills needed for the project. + +10. **Evaluate Progress at Milestones**: At various project milestones, formally evaluate their progress. This is an opportunity to reassess goals and make any necessary adjustments. + +11. **Encourage Collaboration**: Promote collaboration with other team members, as learning from peers can be incredibly valuable. + +12. **Flexibility**: Understand that everyone learns at a different pace, and be prepared to adapt your tracking and support methodologies as needed. + +13. **Documentation**: Keep a record of progress, meetings, and feedback. This can help in tracking growth over time and in future performance evaluations. + +![pair_programming_process_softwarequal-pair_programming_styles-f](../assets/pair_programming.jpg) + +By incorporating these strategies, you can create a nurturing learning environment that not only tracks the junior developer's progress but also fosters growth and development. It's a balance between guiding, monitoring, and allowing independence that will enable the junior developer to thrive in the project. + + +### Career experience & expectation +#### 1. What are your most important career accomplishments? +In Weibo, I was involved in the peak-cutter plan. Our third-party Cloud for live streaming calculates prices by peak data. It would cost us billions of Chinese yuan (equivalent to hundreds of million of Euros) in just one year. Obviously, we can't afford that. My team members and discussed if we could reduce the data during rush hour, we would save a large amount of money. Of course, the process was not easy. We investigated kinds of other apps' solutions for video baseline profiles and did group-controlled trials. Eventually, we made a balance solution, keeping good picture quality and lower data. As a bonus from our company, every team member got 1k euros. + +#### 2. What's your favorite work environment/ideal company culture? +1. I wish I could work in a company with a relaxed vibe. Every staff could freely share their ideas and manage up, which would keep everyone’s growing space. +2. The flat hierarchy is better since communication efficiency would be higher. +3. I hope all products and plans are driven by data. This is an age of big data, data can help us solve problems more accurately. +4. I like to work in an enthusiastic team. The colleges don’t only work together, but also play together out of work. + +#### 3. What's your career plan for the future? +I'd like to play the role of mentor in an open team. From my perspective, I like to share my experience and technical skills with other people. I organized sharing workshops in my previous company, that helped many colleagues improve themselves. Though I believe I have good management skills and leadership, frankly, I don't want to play a manager role. Because I think keeping enough time to write code makes me happier. I can find joy in creation and innovation. Through this, I can have enough content to share with people. + +#### 4. How do you handle a challenge? / Please describe the biggest challenge in your career. +To see the question about stress. + +#### 5. What does make you feel achievement at work? +In my previous jobs, we have a task that is to revisit our users. I felt achieved when I heard my users' positive feedback or thanks since I help them solve problems. I could feel my work's value, which makes people have a better life. + +#### 6. Where do you see yourself in 3-5 years? +1. I hope I could follow the updating of technology. You know, it's a field that develops very fast. I would feel satisfied if I could learn about the more new architecture and deeper cool technologies. I also hope to share things I learn with other developers. It's a good thing I can grow up with others together. +2. I hope to help more users with the apps I developed. This is the original intention of why I become a developer. + + +### Workplace ability +#### 1. What's your biggest strength/advantage? +I'd always like to try different new technologies. When SwiftUI was just published, I create some interesting projects with it. Besides, I like to share my fresh ideas with other people. My previous company makes a live streaming video app, I thought maybe we can add real-time voice recognition when the influencer is speaking some keywords, the app can recognize it and display a relative advertisement. I shared the idea with other colleagues and attempted it. Although it's a failure, it's still interesting to explore. + +#### 2. What's your biggest weakness/disadvantage? +I have to admit I'm a lazy guy. The simple repetitive work always makes me bored. Yes, laziness is my weakness. But I believe laziness usually lets people come up with better ways to optimize life and work. My laziness pushes me to create excellent and elegant architecture to enhance code reuse and reduce code lines. I like to use innovations including new technologies, and new devices to make my work brief and efficient instead of repeating and repeating the same thing. + +#### 3. How do you describe what the API is to a six-year-old child? +I believe most children have used smartphones to play games nowadays. I can tell the kid the API is like iPhone's lightning port that is standard and universal, it can be connected by all lightning cables. + +#### 4. How did you handle the mistake? +I think I should report it to your team in time and figure it out in the shortest time if I find my mistake in the project. I have had this experience in my career. Once I made a mistake in our project in that I wrote the wrong Boolean logic values, so the business logic completes the opposite. Meanwhile, our QAs and I didn't find these mistakes before the release. The first day after release, I reviewed my code for preparing a new feature and found this mistake. Then I reported it immediately and made the emergency solution. On that day, we fixed it together and republished our app. Fortunately, my fault didn't cause a big loss. So the best way to handle the mistake is emergency response instead of concealing it or passing the buck. After remedying it, also need to make a summary of it. + +#### 5. What do you think will make you feel stressed? What sort of thing stresses you out at work? +Answer 1: +If I don't have enough time and sufficient resources to finish my task, I will feel stressed. For example, I had a refactoring task at my previous company. I designed a new architecture for the iOS client and other businesses need to be integrated into the new one. Our new features also must release, so we demand lots of time and resources. However, from our company aspect, if the duration of refactoring is too long, it will affect the process of new features. So, I was only allowed to finish this work within one month. It's a really hard time for me, I must consider how to organize people to involve in this task in a short time. I tried to get more time and manpower from my boss, we borrowed staff from the other company and worked overtime every day. Finally, we did it together. When we released our App, I felt more relaxed than ever. +Answer 2: +If I became an outcast among my teammates, I would feel stressed. To see the question work with a teammate who is tough to deal with. + + +#### 6. Do you prefer to work independently or on a team? +I think working on a team is better for me. I feel that working with a technical vibe increases efficiency. I can find people to discuss together in the group if I have some questions or encounter issues. The fresh ideas from team members can always inspire me when I get into difficult problems or decisions. Though sometimes I also need an independent and silent space to think about something or make designs, I can't work leaving with my team members. + +#### 7. Tell us about a time when you had to solve a problem on your own. +My team members and I usually solved many problems together, and we talked about them and shared different ideas, but once I had a problem that only can be solved by myself. It's in Weibo, I was developing a new feature and needed to invoke some very old foundation APIs of our App. However, I found some functions didn't work as the document said. I asked my colleagues, they said the API's author has left our company. But he left the wrong documents and no comment in the code. Meanwhile, I couldn't find one who was familiar with these codes, since it's too old, written many years ago. So I just fix it by myself. I commented on and debug the foundation API's source code, and tried to find what is wrong. Fortunately, I found the mistake: the code reversed the **if condition** compared with the document and comment. Eventually, I verified the description of the document, and the comment are written in the opposite. It spent a lot of time and let me work overtime for two days. So, good documents and good comments are vital for a project. + +#### 8. How do you describe technical issues to people who don't know about technology? +To see the question about describing API to a six-year-old child. + +#### 9. What does make you depressed at work? +To see the question about stress. + +#### 10. If you would have started working in our company, after several months, you felt the company is not as same as your exception, what would you do? + +Talk about my feeling with colleagues. + + +### Questions for the interviewer +#### 1. How many staffs in the team to which I apply? +#### 2. Could you introduce the hierarchy of the development department? +#### 3. Do you have some events and activities for developers, such as sharing workshops, and hackathons? +#### 4. Do you provide sponsorship for a working visa? +#### 5. Is it a job on-site, remote, or hybrid? + +### Amazon Leadership Principles +1. Customer obsession +2. Ownership +3. Invent and Simplify +4. Are Right, A Lot +5. Learn and Be Curious +6. Hire and Develop the Best +7. Insist on the Highest Standards +8. Think Big +9. Bias for Action +10. Frugality +11. Earn Trust +12. Dive Deep +13. Have Backbone; Disagree and Commit +14. Deliver Results diff --git a/Behavioral_based_interviewing_Competency_Based/technical_qa.md b/Behavioral_based_interviewing_Competency_Based/technical_qa.md new file mode 100755 index 0000000..60f94f2 --- /dev/null +++ b/Behavioral_based_interviewing_Competency_Based/technical_qa.md @@ -0,0 +1,181 @@ +## 软件工程 + +**行为面试相关:** + +1. How do you keep up to date with your Swift and iOS knowledge? + + +## What is SOLID +![1](../assets/solid/1.jpg) + +![2](../assets/solid/2.jpg) + +![3](../assets/solid/3.jpg) +![4](../assets/solid/4.jpg) +![5](../assets/solid/5.jpg) +![6](../assets/solid/6.jpg) +![7](../assets/solid/7.jpg) +![8](../assets/solid/8.jpg) +![9](../assets/solid/9.jpg) +![10](../assets/solid/10.jpg) +![11](../assets/solid/11.jpg) +![12](../assets/solid/12.jpg) +![13](../assets/solid/13.jpg) + + + + +### S – Single Responsibility Principle (SRP) + +**Concept**: A class should have only one reason to exist. + +**Application**: Each class in your application should have only one specific job or responsibility. For instance, if you have a `UserHandler` class, its responsibility should be strictly limited to user-related operations, such as creating, updating, or deleting users, and not also include network functionality, for example. + +In Swift or SwiftUI, adhering to the SRP means ensuring that each class or module is focused on a single task. This approach simplifies maintenance and reduces the likelihood of errors. For example, you might have: + +- **A class for handling network requests**: This class is responsible solely for network communication. It could include methods for sending HTTP requests, handling responses, and managing errors related to networking. + + ```swift + class NetworkManager { + func fetchData(from url: URL, completion: @escaping (Data?, Error?) -> Void) { + // Implementation for network request + } + } + ``` + +- **A class for parsing data**: This class handles the parsing of raw data into usable objects or structures. It does not concern itself with how the data was obtained. + + ```swift + class DataParser { + func parse(data: Data) -> ParsedObject? { + // Implementation for parsing data + } + } + ``` + +- **A class for managing the user interface**: This class or module focuses on rendering the UI and handling user interactions. + + ```swift + struct ContentView: View { + var body: some View { + // Implementation for user interface + } + } + ``` + +By keeping these responsibilities separate, each class or module remains clean, focused, and easy to understand. This separation of concerns aligns with the Single Responsibility Principle and promotes a more modular and maintainable codebase. + +**Example in Swift**: + +Consider the following Swift classes and their responsibilities: + +```swift +class NetworkManager { + func fetchUserData(completion: @escaping (Data?, Error?) -> Void) { + // Code to fetch user data from network + } +} + +class UserParser { + func parseUser(data: Data) -> User? { + // Code to parse data into User object + } +} + +struct UserView: View { + var user: User + + var body: some View { + VStack { + Text(user.name) + Text(user.email) + } + } +} +``` + +In this example: +- `NetworkManager` is responsible only for fetching data from the network. +- `UserParser` is responsible only for parsing that data into a `User` object. +- `UserView` is responsible only for displaying the user information in the UI. + +Following SRP, these classes and structs are easier to test, debug, and maintain because each has a single responsibility. + +In summary, the Single Responsibility Principle encourages developers to create classes and modules that focus on one particular task or responsibility, leading to a more organized and manageable code structure. + + +### STAR answer format +STAR stands for: + +* Situation – What was the situation you / your previous employer faced? +* Task – What tasks were involved in that situation? +* Action – What actions did you take? +* Results – What were the results of those actions? + + + +### Agile Development +#### 1. Describe the project workflow in your previous career. +#### 2. Describe how to use data to drive development. +#### 3. How do you assure the code quality? +https://github.com/wheelo/Reducing-WTFs-Per-Minute + +#### 4. How did you review code in your previous company? +https://www.morling.dev/blog/the-code-review-pyramid/ + +https://google.github.io/eng-practices/review/reviewer/ + +#### 5. If you get an emergency task now, how do you deal with it? + +#### 6. State some of the Agile quality strategies. + +#### 7. Do you know about Agile Manifesto & Principles? Explain in brief. + +#### 8. Is there any drawback of the Agile model? If yes, explain. + +#### 9. What is the use of burn-up and burn-down charts? + +#### 10. Define Zero Sprint and Spike in Agile. + +### Scrum Development + +![SCRUM_PROCESS](../assets/SCRUM_PROCESS.jpg) + + + +#### 1. What is the duration of a scrum sprint? + +#### 2. What is Velocity? + +#### 3. What do you know about impediments in Scrum? Give some examples of impediments. + +#### 4. What is the difference and similarity between Agile and Scrum? + +#### 5. What is the increment? Explain. + +#### 6. What is the "build-breaker"? + +#### 7. What do you understand by Daily Stand-Up? + +#### 8. What do you about Scrum ban? + + +### Working Method + +#### 1. How do you work with pair programming? + +![pair_programming_process_softwarequal-pair_programming_styles-f](../assets/pair_programming.jpg) + +![pair_programming_process_softwarequal-pair_programming_styles-f](../assets/pair_programming_process_softwarequal-pair_programming_styles-f.png) +![pair_programming_process_driver-navigator-diagram](../assets/pair_programming_process_driver-navigator-diagram.png) + +ping pong mode: one writes test code, and the other one implements. +https://www.codecademy.com/article/tdd-red-green-refactor + +https://medium.com/@tunkhine126/red-green-refactor-42b5b643b506 + + + +### Questions for the interviewer +#### 1. How many percent of the automated test cover your project? +#### 2. How often is the review period? diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/%E6%9E%B6%E6%9E%84%E5%9B%BE.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/%E6%9E%B6%E6%9E%84%E5%9B%BE.png new file mode 100755 index 0000000..ddf6ee9 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/%E6%9E%B6%E6%9E%84%E5%9B%BE.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/HungryAppArchitecture.graffle b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/HungryAppArchitecture.graffle new file mode 100644 index 0000000..a00ea04 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/HungryAppArchitecture.graffle differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 1.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 1.png new file mode 100755 index 0000000..7097bf1 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 1.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 2.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 2.png new file mode 100755 index 0000000..c224f78 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 2.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 3.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 3.png new file mode 100755 index 0000000..4d72f17 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 3.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 4.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 4.png new file mode 100755 index 0000000..dc56914 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled 4.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.jpeg b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.jpeg new file mode 100755 index 0000000..f1234ed Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.jpeg differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.png new file mode 100755 index 0000000..bcac832 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/Untitled.png differ diff --git a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/catch_work_%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B%E5%9B%BE_(2).png b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/catch_work_%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B%E5%9B%BE_(2).png new file mode 100755 index 0000000..59844f3 Binary files /dev/null and b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/catch_work_%E5%9F%BA%E6%9C%AC%E6%B5%81%E7%A8%8B%E5%9B%BE_(2).png differ diff --git "a/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/\342\200\234Hungry Hippo\342\200\235 iOS Application .xmind" "b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/\342\200\234Hungry Hippo\342\200\235 iOS Application .xmind" new file mode 100644 index 0000000..483f91a Binary files /dev/null and "b/Other/TechnicalDesignDocumentDemo/Hungry Hippo app Technical Design Docs 50ebd0e21e7441d189bf648d1591f952/\342\200\234Hungry Hippo\342\200\235 iOS Application .xmind" differ diff --git a/Other/TechnicalDesignDocumentDemo/README.md b/Other/TechnicalDesignDocumentDemo/README.md new file mode 100755 index 0000000..fe7ae3f --- /dev/null +++ b/Other/TechnicalDesignDocumentDemo/README.md @@ -0,0 +1,91 @@ +# Hungry Hippo app Technical Design Docs + +## Introduction + +Your task is to produce a brief design doc for a customer-facing mobile app called “Hungry Hippo.” The purpose is to surface nearby restaurants in an app where a user can order food for pick-up. There are well known contenders in this area like Uber Eats, Zomato, and Menulog. The aim is not to copy these and become an expert in the online restaurant business, but instead to propose a design for a solution that shows an understanding of the tradeoffs. You can propose any technology stack that you like. Make sure your design doc justifies your choices and be prepared to explain your decisions in an interview.Spend no more than an evening (max 3 or 4 hours) producing this document. Please limit the document to a maximum of three pages. + +Requirements +The app has the following requirements: + +1. A “home” screen with a list of nearby restaurants +2. A “menu” screen with the option to choose items for ordering from the restaurant and a button to confirm an order +3. A “my orders” screen with the current order and past orders +4. Personal data needs to be stored securely +5. The app will get info over the network. You can propose any kind of back-end you like and you can assume back-end engineers will build it for you. +6. Restaurants should still be viewable offline +7. A push notification will be sent when the order is ready for pickup +A fully-fledged food ordering app will have a very large scope with a lot of requirements. We don’t need you to anticipate all of these. + +Use the time and length constraints above to guide your solution. A detailed software design for a minimal set of requirements is preferable to a vague document that attempts a solution for everything. + +Ideas +Some ideas for information to include in your design doc: +● Architecture for implementing the screens e.g., MVVM, MVP, MVI, VIPER +● Concurrency - what patterns will your app use to avoid blocking the main thread? +● Other app architecture concerns like module or framework decomposition +● Layering (if necessary) +● Tooling +● Technology choices (e.g., 3rd party libraries or SDKs) +● A rough estimate of how long it would take to develop the solution +● Testing strategy +● Deployment strategy +This is not an exhaustive list - you are allowed to structure the design doc however you like. +Please include discussions of trade-offs or assumptions you make when producing the document. + +## 1. Frontmatter + +- Title: iOS Developer +- Author: YILONG CHEN +- Create: 2022-07-27 + +## 2. Introduction + +**a. Overview, Problem Description, Summary, or Abstract** + +This mobile Application is a customer-facing mobile app called “Hungry Hippo.” The purpose is to surface nearby restaurants in an app where users can order food for pick-up. + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled.png) + +**b. Goals or Product and Technical Requirements** + +The app has the following requirements: + +1. A “home” screen with a list of nearby restaurants + +2. A “menu” screen with the option to choose items for ordering from the restaurant and a button to confirm an order. + +3. A “my orders” screen with the current order and past orders + +4. Personal data needs to be stored securely + +5. The app will get info over the network. You can propose any back-end you like, and you can assume back-end engineers will build it for you + +6. Restaurants should still be viewable offline + +7. A push notification will be sent when the order is ready for pick-up + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled%201.png) + +## 3. Solutions + +![架构图.png](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/%25E6%259E%25B6%25E6%259E%2584%25E5%259B%25BE.png) + +## Cache Solutions + +![catch work 基本流程图 (2).png](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/catch_work_%25E5%259F%25BA%25E6%259C%25AC%25E6%25B5%2581%25E7%25A8%258B%25E5%259B%25BE_(2).png) + +## solution + +MVVM + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled%202.png) + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled.jpeg) + +VS MVC + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled%203.png) + +VS MVP + +![Untitled](Hungry%20Hippo%20app%20Technical%20Design%20Docs%2050ebd0e21e7441d189bf648d1591f952/Untitled%204.png) \ No newline at end of file diff --git a/README.md b/README.md index 1ac83c7..2a6dd0b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,55 @@ # iOSInterviewQuestions -iOS面试题集锦(附答案) + + + + +-------------------------------------------- + + + + + +

+ +

+

+ +

+ + +

+ +

+ + + + + + + +

+ + + +-------------------------------------------- + + + +## iOS面试题集锦(附答案)(Objective-C 版本) + + +

+ + 第一篇 : [《招聘一个靠谱的 iOS》—参考答案(上)](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md) @@ -12,4 +62,57 @@ iOS面试题集锦(附答案) 博文中给出了高质量的面试题,但是未给出答案,我尝试着总结了下答案,分两篇发:这是[上篇](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(上).md) ,这是[下篇](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/01《招聘一个靠谱的iOS》面试题参考答案/《招聘一个靠谱的iOS》面试题参考答案(下).md) 。请持续关注[微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/)。 -![enter image description here](http://www.resumetarget.com/blog/wp-content/uploads/2013/06/bad-interview.jpg) \ No newline at end of file +## iOS面试题集锦(附答案)(Swift 版本) + +

+ +- [《理论篇: Swift/ObjC 语言基础》](https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/theory.md) + + +

+ + + + - [《实战篇: iOS项目开发技能》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/practical.md ) + +## iOS Programming Challenge + + +

+ + + - [Swift Demo]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Swift/MVVMDemo "") + - [SwiftUI Demo]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/SwiftUI/SwiftUIDemo "") + - [Technical design document demo]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Other/TechnicalDesignDocumentDemo "") + +## 技术清谈面试题系列(附答案) + + [《技术清谈面试题系列》](https://github.com/iteatimeteam/Friday-QA) + + +## 行为面试题 + +![https://github.com/ChenYilong/iOSInterviewQuestions](/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png) + + +- [《自我介绍类型》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Behavioral_based_interviewing_Competency_Based/objective_qa.md ) +- [《主观问题类型》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Behavioral_based_interviewing_Competency_Based/subjective_qa.md ) +- [《软件工程类型》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Behavioral_based_interviewing_Competency_Based/technical_qa.md) + + +## Other + + - [《软件开发术语》]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/02_Swift_interview_questions/Software_Development_Terminology.md) + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=ChenYilong/iOSInterviewQuestions&type=Date)](https://star-history.com/#ChenYilong/iOSInterviewQuestions&Date) + + +------------- + +Posted by Posted by [微博@iOS程序犭袁](http://weibo.com/luohanchenyilong/) & [公众号@iTeaTime技术清谈](https://mp.weixin.qq.com/s/A4e5h3xgIEh6PInf1Rjqsw) +原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | [Creative Commons BY-NC-ND 3.0](http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh) +

+ + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculator.xmind b/Swift/AnniversaryCalculator/AnniversaryCalculator.xmind new file mode 100644 index 0000000..2071a53 Binary files /dev/null and b/Swift/AnniversaryCalculator/AnniversaryCalculator.xmind differ diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.pbxproj b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7d2ebad --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.pbxproj @@ -0,0 +1,619 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 9A8266A528A9AED600BBEFA3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266A428A9AED600BBEFA3 /* AppDelegate.swift */; }; + 9A8266A728A9AED600BBEFA3 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266A628A9AED600BBEFA3 /* SceneDelegate.swift */; }; + 9A8266A928A9AED600BBEFA3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266A828A9AED600BBEFA3 /* ViewController.swift */; }; + 9A8266AC28A9AED700BBEFA3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A8266AA28A9AED700BBEFA3 /* Main.storyboard */; }; + 9A8266AE28A9AED900BBEFA3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A8266AD28A9AED900BBEFA3 /* Assets.xcassets */; }; + 9A8266B128A9AED900BBEFA3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9A8266AF28A9AED900BBEFA3 /* LaunchScreen.storyboard */; }; + 9A8266BC28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266BB28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.swift */; }; + 9A8266C628A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266C528A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.swift */; }; + 9A8266C828A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266C728A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITestsLaunchTests.swift */; }; + 9A8266D528A9BCB400BBEFA3 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266D428A9BCB400BBEFA3 /* ViewModel.swift */; }; + 9A8266D728A9BD5300BBEFA3 /* Couple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266D628A9BD5300BBEFA3 /* Couple.swift */; }; + 9A8266D928A9EFA700BBEFA3 /* DateExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8266D828A9EFA700BBEFA3 /* DateExtension.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A8266B828A9AED900BBEFA3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A82669928A9AED600BBEFA3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A8266A028A9AED600BBEFA3; + remoteInfo = AnniversaryCalculatorDemo; + }; + 9A8266C228A9AED900BBEFA3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A82669928A9AED600BBEFA3 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A8266A028A9AED600BBEFA3; + remoteInfo = AnniversaryCalculatorDemo; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A8266A128A9AED600BBEFA3 /* AnniversaryCalculatorDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnniversaryCalculatorDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A8266A428A9AED600BBEFA3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9A8266A628A9AED600BBEFA3 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 9A8266A828A9AED600BBEFA3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 9A8266AB28A9AED700BBEFA3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9A8266AD28A9AED900BBEFA3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A8266B028A9AED900BBEFA3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9A8266B228A9AED900BBEFA3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A8266B728A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnniversaryCalculatorDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A8266BB28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnniversaryCalculatorDemoTests.swift; sourceTree = ""; }; + 9A8266C128A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnniversaryCalculatorDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A8266C528A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnniversaryCalculatorDemoUITests.swift; sourceTree = ""; }; + 9A8266C728A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnniversaryCalculatorDemoUITestsLaunchTests.swift; sourceTree = ""; }; + 9A8266D428A9BCB400BBEFA3 /* ViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; + 9A8266D628A9BD5300BBEFA3 /* Couple.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Couple.swift; sourceTree = ""; }; + 9A8266D828A9EFA700BBEFA3 /* DateExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateExtension.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A82669E28A9AED600BBEFA3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266B428A9AED900BBEFA3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266BE28A9AED900BBEFA3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A82669828A9AED600BBEFA3 = { + isa = PBXGroup; + children = ( + 9A8266A328A9AED600BBEFA3 /* AnniversaryCalculatorDemo */, + 9A8266BA28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests */, + 9A8266C428A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests */, + 9A8266A228A9AED600BBEFA3 /* Products */, + ); + sourceTree = ""; + }; + 9A8266A228A9AED600BBEFA3 /* Products */ = { + isa = PBXGroup; + children = ( + 9A8266A128A9AED600BBEFA3 /* AnniversaryCalculatorDemo.app */, + 9A8266B728A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.xctest */, + 9A8266C128A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9A8266A328A9AED600BBEFA3 /* AnniversaryCalculatorDemo */ = { + isa = PBXGroup; + children = ( + 9A8266A428A9AED600BBEFA3 /* AppDelegate.swift */, + 9A8266A628A9AED600BBEFA3 /* SceneDelegate.swift */, + 9A8266A828A9AED600BBEFA3 /* ViewController.swift */, + 9A8266D428A9BCB400BBEFA3 /* ViewModel.swift */, + 9A8266D628A9BD5300BBEFA3 /* Couple.swift */, + 9A8266D828A9EFA700BBEFA3 /* DateExtension.swift */, + 9A8266AA28A9AED700BBEFA3 /* Main.storyboard */, + 9A8266AD28A9AED900BBEFA3 /* Assets.xcassets */, + 9A8266AF28A9AED900BBEFA3 /* LaunchScreen.storyboard */, + 9A8266B228A9AED900BBEFA3 /* Info.plist */, + ); + path = AnniversaryCalculatorDemo; + sourceTree = ""; + }; + 9A8266BA28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests */ = { + isa = PBXGroup; + children = ( + 9A8266BB28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.swift */, + ); + path = AnniversaryCalculatorDemoTests; + sourceTree = ""; + }; + 9A8266C428A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests */ = { + isa = PBXGroup; + children = ( + 9A8266C528A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.swift */, + 9A8266C728A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITestsLaunchTests.swift */, + ); + path = AnniversaryCalculatorDemoUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A8266A028A9AED600BBEFA3 /* AnniversaryCalculatorDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A8266CB28A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemo" */; + buildPhases = ( + 9A82669D28A9AED600BBEFA3 /* Sources */, + 9A82669E28A9AED600BBEFA3 /* Frameworks */, + 9A82669F28A9AED600BBEFA3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AnniversaryCalculatorDemo; + productName = AnniversaryCalculatorDemo; + productReference = 9A8266A128A9AED600BBEFA3 /* AnniversaryCalculatorDemo.app */; + productType = "com.apple.product-type.application"; + }; + 9A8266B628A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A8266CE28A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemoTests" */; + buildPhases = ( + 9A8266B328A9AED900BBEFA3 /* Sources */, + 9A8266B428A9AED900BBEFA3 /* Frameworks */, + 9A8266B528A9AED900BBEFA3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A8266B928A9AED900BBEFA3 /* PBXTargetDependency */, + ); + name = AnniversaryCalculatorDemoTests; + productName = AnniversaryCalculatorDemoTests; + productReference = 9A8266B728A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9A8266C028A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A8266D128A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemoUITests" */; + buildPhases = ( + 9A8266BD28A9AED900BBEFA3 /* Sources */, + 9A8266BE28A9AED900BBEFA3 /* Frameworks */, + 9A8266BF28A9AED900BBEFA3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A8266C328A9AED900BBEFA3 /* PBXTargetDependency */, + ); + name = AnniversaryCalculatorDemoUITests; + productName = AnniversaryCalculatorDemoUITests; + productReference = 9A8266C128A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A82669928A9AED600BBEFA3 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1340; + LastUpgradeCheck = 1340; + TargetAttributes = { + 9A8266A028A9AED600BBEFA3 = { + CreatedOnToolsVersion = 13.4.1; + }; + 9A8266B628A9AED900BBEFA3 = { + CreatedOnToolsVersion = 13.4.1; + TestTargetID = 9A8266A028A9AED600BBEFA3; + }; + 9A8266C028A9AED900BBEFA3 = { + CreatedOnToolsVersion = 13.4.1; + TestTargetID = 9A8266A028A9AED600BBEFA3; + }; + }; + }; + buildConfigurationList = 9A82669C28A9AED600BBEFA3 /* Build configuration list for PBXProject "AnniversaryCalculatorDemo" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A82669828A9AED600BBEFA3; + productRefGroup = 9A8266A228A9AED600BBEFA3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A8266A028A9AED600BBEFA3 /* AnniversaryCalculatorDemo */, + 9A8266B628A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests */, + 9A8266C028A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A82669F28A9AED600BBEFA3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8266B128A9AED900BBEFA3 /* LaunchScreen.storyboard in Resources */, + 9A8266AE28A9AED900BBEFA3 /* Assets.xcassets in Resources */, + 9A8266AC28A9AED700BBEFA3 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266B528A9AED900BBEFA3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266BF28A9AED900BBEFA3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A82669D28A9AED600BBEFA3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8266A928A9AED600BBEFA3 /* ViewController.swift in Sources */, + 9A8266D928A9EFA700BBEFA3 /* DateExtension.swift in Sources */, + 9A8266A528A9AED600BBEFA3 /* AppDelegate.swift in Sources */, + 9A8266D728A9BD5300BBEFA3 /* Couple.swift in Sources */, + 9A8266D528A9BCB400BBEFA3 /* ViewModel.swift in Sources */, + 9A8266A728A9AED600BBEFA3 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266B328A9AED900BBEFA3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8266BC28A9AED900BBEFA3 /* AnniversaryCalculatorDemoTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A8266BD28A9AED900BBEFA3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8266C828A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITestsLaunchTests.swift in Sources */, + 9A8266C628A9AED900BBEFA3 /* AnniversaryCalculatorDemoUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A8266B928A9AED900BBEFA3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A8266A028A9AED600BBEFA3 /* AnniversaryCalculatorDemo */; + targetProxy = 9A8266B828A9AED900BBEFA3 /* PBXContainerItemProxy */; + }; + 9A8266C328A9AED900BBEFA3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A8266A028A9AED600BBEFA3 /* AnniversaryCalculatorDemo */; + targetProxy = 9A8266C228A9AED900BBEFA3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9A8266AA28A9AED700BBEFA3 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A8266AB28A9AED700BBEFA3 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9A8266AF28A9AED900BBEFA3 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9A8266B028A9AED900BBEFA3 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9A8266C928A9AED900BBEFA3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9A8266CA28A9AED900BBEFA3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A8266CC28A9AED900BBEFA3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = AnniversaryCalculatorDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A8266CD28A9AED900BBEFA3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = AnniversaryCalculatorDemo/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9A8266CF28A9AED900BBEFA3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnniversaryCalculatorDemo.app/AnniversaryCalculatorDemo"; + }; + name = Debug; + }; + 9A8266D028A9AED900BBEFA3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnniversaryCalculatorDemo.app/AnniversaryCalculatorDemo"; + }; + name = Release; + }; + 9A8266D228A9AED900BBEFA3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = AnniversaryCalculatorDemo; + }; + name = Debug; + }; + 9A8266D328A9AED900BBEFA3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.AnniversaryCalculatorDemo.chenyilong.AnniversaryCalculatorDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = AnniversaryCalculatorDemo; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A82669C28A9AED600BBEFA3 /* Build configuration list for PBXProject "AnniversaryCalculatorDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A8266C928A9AED900BBEFA3 /* Debug */, + 9A8266CA28A9AED900BBEFA3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A8266CB28A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A8266CC28A9AED900BBEFA3 /* Debug */, + 9A8266CD28A9AED900BBEFA3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A8266CE28A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A8266CF28A9AED900BBEFA3 /* Debug */, + 9A8266D028A9AED900BBEFA3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A8266D128A9AED900BBEFA3 /* Build configuration list for PBXNativeTarget "AnniversaryCalculatorDemoUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A8266D228A9AED900BBEFA3 /* Debug */, + 9A8266D328A9AED900BBEFA3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A82669928A9AED600BBEFA3 /* Project object */; +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..77023d2 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + AnniversaryCalculatorDemo.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/AppDelegate.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/AppDelegate.swift new file mode 100644 index 0000000..8bbe46b --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/AppDelegate.swift @@ -0,0 +1,30 @@ +// +// AppDelegate.swift +// AnniversaryCalculatorDemo +// +// Created by chenyilong on 2022/8/15. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options _: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_: UIApplication, didDiscardSceneSessions _: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..5a3257a --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,93 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/Contents.json b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/LaunchScreen.storyboard b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/Main.storyboard b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Couple.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Couple.swift new file mode 100644 index 0000000..693e424 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Couple.swift @@ -0,0 +1,42 @@ +// +// Couple.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +struct Couple { + let coupleId: String + let anniversary: String + + func shouldAnniversaryToRemind() -> Bool { + if anniversary.isEmpty || coupleId.isEmpty { + return false + } + + let anniversaryAtStr = anniversary + guard var anniversaryAt = Date.dateFromISOString(string: anniversaryAtStr) else { return false } + if anniversaryAt >= Date() { + return false + } + + let gapYears: Int = Date.gapYears(date: anniversaryAt) + + anniversaryAt = Date.thisYearDate(pastDate: anniversaryAt) + if gapYears % 10 == 0 { + anniversaryAt = anniversaryAt.after(days: 14) + } else if gapYears % 5 == 0 { + anniversaryAt = anniversaryAt.after(days: 7) + } + + let beginReminderDate = Date().after(days: 1) + let endReminderDate = Date().after(days: 14) + + if anniversaryAt <= endReminderDate, anniversaryAt >= beginReminderDate { + return true + } + return false + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/DateExtension.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/DateExtension.swift new file mode 100644 index 0000000..3f07089 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/DateExtension.swift @@ -0,0 +1,56 @@ +// +// DateExtension.swift +// AnniversaryCalculatorDemo +// +// Created by chenyilong on 2022/8/15. +// + +import Foundation +extension Date { + static func ISOStringFromDate(date: Date) -> String { + let dateFormatter = DateFormatter() + dateFormatter.locale = Locale(identifier: "en_US_POSIX") + dateFormatter.timeZone = TimeZone(abbreviation: "GMT") + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" + + return dateFormatter.string(from: date).appending("Z") + } + + static func dateFromISOString(string: String) -> Date? { + let dateFormatter = DateFormatter() + dateFormatter.locale = Locale(identifier: "en_US_POSIX") + dateFormatter.timeZone = TimeZone.autoupdatingCurrent + dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" + + return dateFormatter.date(from: string) + } + + func after(days: Int) -> Date { + var dayComponent = DateComponents() + dayComponent.day = days // For removing one day (yesterday): -1 + let theCalendar = Calendar.current + guard let nextDate = theCalendar.date(byAdding: dayComponent, to: Date()) else { return Date() } + + let dateComponents = theCalendar.dateComponents([.year, .month, .day], from: nextDate) + guard let date = theCalendar.date(from: dateComponents) else { return Date() } + return date + } + + static func gapYears(date: Date) -> Int { + let calendar = Calendar.current + let componentsPast = calendar.dateComponents([.year], from: date) + let componentsNow = calendar.dateComponents([.year], from: Date()) + let yearPast: Int = componentsPast.year ?? 0 + let yearNow: Int = componentsNow.year ?? 0 + return yearNow - yearPast + } + + static func thisYearDate(pastDate: Date) -> Date { + let calendar = Calendar.current + + var dateComponents = calendar.dateComponents([.year, .month, .day], from: pastDate) + dateComponents.year = Calendar.current.component(.year, from: Date()) + guard let date = calendar.date(from: dateComponents) else { return Date() } + return date + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Info.plist b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/SceneDelegate.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/SceneDelegate.swift new file mode 100644 index 0000000..ea1f0db --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/SceneDelegate.swift @@ -0,0 +1,47 @@ +// +// SceneDelegate.swift +// AnniversaryCalculatorDemo +// +// Created by chenyilong on 2022/8/15. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options _: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewController.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewController.swift new file mode 100644 index 0000000..e684cf0 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewController.swift @@ -0,0 +1,24 @@ +// +// ViewController.swift +// AnniversaryCalculatorDemo +// +// Created by chenyilong on 2022/8/15. +// + +import UIKit + +class ViewController: UIViewController { + let viewModel: ViewModel = .init() + + override func viewDidLoad() { + super.viewDidLoad() + // Do any additional setup after loading the view. + + for couple in viewModel.couples { + if couple.shouldAnniversaryToRemind() { + viewModel.couplesToRemind.append(couple) + } + } + print(viewModel.couplesToRemind) + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewModel.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewModel.swift new file mode 100644 index 0000000..c857c09 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemo/ViewModel.swift @@ -0,0 +1,48 @@ +// +// ViewModel.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +class ViewModel { + var couples: [Couple] = [] + var couplesToRemind: [Couple] = [] + + init() { + let Couple_1 = Couple( + coupleId: "1", + anniversary: "2021-8-16T03:07:33.457Z" + ) + let Couple_2 = Couple( + coupleId: "2", + anniversary: "2021-8-29T03:07:33.457Z" + ) + let Couple_3 = Couple( + coupleId: "3", + anniversary: "2017-8-08T03:07:33.457Z" + ) + let Couple_4 = Couple( + coupleId: "4", + anniversary: "2017-8-22T03:07:33.457Z" + ) + let Couple_5 = Couple( + coupleId: "5", + anniversary: "2012-8-01T03:07:33.457Z" + ) + let Couple_6 = Couple( + coupleId: "6", + anniversary: "2012-8-15T03:07:33.457Z" + ) + couples = [ + Couple_1, + Couple_2, + Couple_3, + Couple_4, + Couple_5, + Couple_6, + ] + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoTests/AnniversaryCalculatorDemoTests.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoTests/AnniversaryCalculatorDemoTests.swift new file mode 100644 index 0000000..e2802a4 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoTests/AnniversaryCalculatorDemoTests.swift @@ -0,0 +1,74 @@ +// +// AnniversaryCalculatorDemoTests.swift +// AnniversaryCalculatorDemoTests +// +// Created by chenyilong on 2022/8/15. +// + +@testable import AnniversaryCalculatorDemo +import XCTest + +class TestViewModel { + var couples: [Couple] = [] + var couplesToRemind: [Couple] = [] + + init() { + let Couple_1 = Couple( + coupleId: "1", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 + 1)) + ) + let Couple_2 = Couple( + coupleId: "2", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 + 2)) + ) + let Couple_3 = Couple( + coupleId: "3", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 * 5 - 6)) // "2017-8-08T03:07:33.457Z" + ) + let Couple_4 = Couple( + coupleId: "4", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 * 5 - 5)) // "2017-8-22T03:07:33.457Z" + ) + let Couple_5 = Couple( + coupleId: "5", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 * 10 - 13)) // "2012-8-01T03:07:33.457Z" + ) + let Couple_6 = Couple( + coupleId: "6", + anniversary: Date.ISOStringFromDate(date: Date().after(days: -365 * 10 - 12)) // "2012-8-15T03:07:33.457Z" + ) + couples = [ + Couple_1, + Couple_2, + Couple_3, + Couple_4, + Couple_5, + Couple_6, + ] + } +} + +var testViewModel: TestViewModel = .init() + +class AnniversaryCalculatorDemoTests: XCTestCase { + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + for couple in testViewModel.couples { + XCTAssertTrue(couple.shouldAnniversaryToRemind()) + } + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITests.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITests.swift new file mode 100644 index 0000000..84b92d0 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITests.swift @@ -0,0 +1,40 @@ +// +// AnniversaryCalculatorDemoUITests.swift +// AnniversaryCalculatorDemoUITests +// +// Created by chenyilong on 2022/8/15. +// + +import XCTest + +class AnniversaryCalculatorDemoUITests: XCTestCase { + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITestsLaunchTests.swift b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITestsLaunchTests.swift new file mode 100644 index 0000000..0c24711 --- /dev/null +++ b/Swift/AnniversaryCalculator/AnniversaryCalculatorDemoUITests/AnniversaryCalculatorDemoUITestsLaunchTests.swift @@ -0,0 +1,31 @@ +// +// AnniversaryCalculatorDemoUITestsLaunchTests.swift +// AnniversaryCalculatorDemoUITests +// +// Created by chenyilong on 2022/8/15. +// + +import XCTest + +class AnniversaryCalculatorDemoUITestsLaunchTests: XCTestCase { + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/Swift/AnniversaryCalculator/Architecture.png b/Swift/AnniversaryCalculator/Architecture.png new file mode 100755 index 0000000..2efd169 Binary files /dev/null and b/Swift/AnniversaryCalculator/Architecture.png differ diff --git a/Swift/AnniversaryCalculator/README.md b/Swift/AnniversaryCalculator/README.md new file mode 100755 index 0000000..22e4d81 --- /dev/null +++ b/Swift/AnniversaryCalculator/README.md @@ -0,0 +1,101 @@ +# iOS Tech Assessment + +The Tech Interview question : + +You're welcome to use any programming language (preferably Swift) or tools (preferably Xcode) you wish and you may look up any online resources or references as needed. Unit tests are welcome but optional. + +The details of the test are below. If anything is unclear, don't hesitate to contact us and ask questions. + +***You are given an array of records, each representing a couple. Each record contains the following information:*** + +***the couple ID, as a string*** + +***the couple’s wedding date, as a string in ISO format (can be null / missing)*** + +***Please write a function that, given an array of couple records, creates an array of wedding anniversary reminder records.*** + +***Each anniversary reminder record should contain the following information:*** + +***the couple ID, as a string*** + +***the next wedding anniversary date, as a string in ISO format*** + +***The function should only create a reminder record for a couple if the next wedding anniversary date is any day within the next 2 weeks.*** + +***Additionally, anniversaries celebrating a multiple of 5 years should be sent a reminder 1 week earlier than the normal case. Finally, anniversaries that are a multiple of 10 years should be sent a reminder 2 weeks earlier than the normal case.*** + +![Architecture](Architecture.png) + +## INPUT LIMIT + +- array is not null +- date is past +- ~~overyear?~~ + +## out limit: + +output: + +- if year%5==0 then day+7 +- if year%10==0 then day+14 + +## Unit Test Cases + + + +today is [2022-08-15 08:45:02] + +input / output: + +```jsx +[ +{"coupleId":"1", "anniversary": "2021-8-16T10:21+0800"}, +{"coupleId":"2", "anniversary": "2021-8-29T10:21+0800"}, +{"coupleId":"3", "anniversary": "2017-8-08T10:21+0800"}, +{"coupleId":"4", "anniversary": "2017-8-22T10:21+0800"}, +{"coupleId":"5", "anniversary": "2012-8-01T10:21+0800"}, +{"coupleId":"6", "anniversary": "2012-8-15T10:21+0800"} +] +``` + +in 14 days input / output + +anniversary -1/-14 = today[2022-08-15 09:16:45] + + today ≥ anniversary -14 && today ≤ anniversary -1 + +✅ anniversary ≤today+14 && anniversary ≥ today+1 + +```jsx +[ +{"coupleId":"1", "anniversary": "2021-8-16T10:21+0800"}, +{"coupleId":"2", "anniversary": "2021-8-29T10:21+0800"}, +] +``` + +5 years: input / output + +✅anniversary = anniversary +7 + +anniversary -1/-14 = today[2022-08-15 09:16:45] + +```jsx +[ +{"coupleId":"3", "anniversary": "2017-8-08T10:21+0800"}, +{"coupleId":"4", "anniversary": "2017-8-22T10:21+0800"}, +] +``` + +10 years: input / output + +✅anniversary = anniversary +14 + +anniversary -1/-14 = today[2022-08-15 09:16:45] + +```jsx + +[ +{"coupleId":"5", "anniversary": "2012-8-01T10:21+0800"}, +{"coupleId":"6", "anniversary": "2012-8-15T10:21+0800"} +] +``` \ No newline at end of file diff --git a/Swift/MVVMDemo/LICENSE b/Swift/MVVMDemo/LICENSE new file mode 100644 index 0000000..d585ce6 --- /dev/null +++ b/Swift/MVVMDemo/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 ChenYilong(open to work) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Swift/MVVMDemo/README.md b/Swift/MVVMDemo/README.md new file mode 100644 index 0000000..ea8e6e3 --- /dev/null +++ b/Swift/MVVMDemo/README.md @@ -0,0 +1,38 @@ +# iOSTest +Source code: [Swift Demo]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/Swift/MVVMDemo "") + +

+ + +## Task DETAILS + +Your task is to create a native iOS app. +Use the endpoints at https://jsonplaceholder.typicode.com +Display posts in a list. +Open a detailed view with associated comments when user selects an item on the posts list. + +### Nice to have: + +Search functionality on the posts list and comments list. + + +## Result from Yilong Chen + +![https://github.com/ChenYilong](preview.gif) + + Below is a summary of the tasks I undertook, and the functionalities I implemented as part of this assignment: + +1. **Native iOS App Creation**: I developed a native iOS app using Swift and MVVM, following best practices and clean code principles. + +2. **API Integration**: Integrated the app with the API endpoints provided at https://jsonplaceholder.typicode.com. I effectively fetched data from the API and handled possible errors. + +3. **Displaying Posts**: I created a UI that lists all posts retrieved from the API endpoint. Each post displays the necessary information as required. + +4. **Detailed View**: Implemented a detailed view which gets triggered when a user selects an item from the posts list. This view showcases the associated comments for the selected post. + +5. **Search Functionality**: As an additional feature, I implemented search functionality on both the posts list and the comments list. This allows users to easily find specific posts or comments by typing in search keywords. + +6. **Unit Testing**: Finally, I added comprehensive unit test cases to ensure the correct behavior of the implemented functionalities. This resulted in achieving 78.3% code coverage, thereby validating the reliability and performance of the app. + +![](https://tva1.sinaimg.cn/large/008vOhrAgy1hgduaf64xrj30hw0pamyj.jpg) +![](https://tva1.sinaimg.cn/large/008vOhrAgy1hgem05jw55j31hc0u047b.jpg) \ No newline at end of file diff --git a/Swift/MVVMDemo/banner.png b/Swift/MVVMDemo/banner.png new file mode 100644 index 0000000..8eca32e Binary files /dev/null and b/Swift/MVVMDemo/banner.png differ diff --git a/Swift/MVVMDemo/iOSTest.xcodeproj/project.pbxproj b/Swift/MVVMDemo/iOSTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..3893ec2 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest.xcodeproj/project.pbxproj @@ -0,0 +1,777 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 9A0EE85A2A51066500BE4CE6 /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8552A51066500BE4CE6 /* Repository.swift */; }; + 9A0EE85D2A51067F00BE4CE6 /* PostListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE85C2A51067F00BE4CE6 /* PostListViewModel.swift */; }; + 9A0EE8672A510AD700BE4CE6 /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8662A510AD600BE4CE6 /* UIColor+Extension.swift */; }; + 9A0EE8712A51244700BE4CE6 /* RowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8702A51244700BE4CE6 /* RowViewModel.swift */; }; + 9A0EE8732A513D6600BE4CE6 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8722A513D6600BE4CE6 /* Observable.swift */; }; + 9A0EE8752A513F2D00BE4CE6 /* PostCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8742A513F2D00BE4CE6 /* PostCellViewModel.swift */; }; + 9A0EE8772A516EA900BE4CE6 /* MockURLProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE8762A516EA900BE4CE6 /* MockURLProtocol.swift */; }; + 9A0EE87A2A51741600BE4CE6 /* emptyData.json in Resources */ = {isa = PBXBuildFile; fileRef = 9A0EE8782A51741600BE4CE6 /* emptyData.json */; }; + 9A0EE87B2A51741600BE4CE6 /* errorData.json in Resources */ = {isa = PBXBuildFile; fileRef = 9A0EE8792A51741600BE4CE6 /* errorData.json */; }; + 9A0EE8812A518CB400BE4CE6 /* rightCommentData.json in Resources */ = {isa = PBXBuildFile; fileRef = 9A0EE8802A518CB400BE4CE6 /* rightCommentData.json */; }; + 9A0EE8832A518CC700BE4CE6 /* nilData.json in Resources */ = {isa = PBXBuildFile; fileRef = 9A0EE8822A518CC700BE4CE6 /* nilData.json */; }; + 9A0EE88C2A51ABA200BE4CE6 /* CommentCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE88A2A51ABA200BE4CE6 /* CommentCellViewModel.swift */; }; + 9A0EE88D2A51ABA200BE4CE6 /* CommentListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A0EE88B2A51ABA200BE4CE6 /* CommentListViewModel.swift */; }; + 9A0EE8912A51B7F700BE4CE6 /* rightPostData.json in Resources */ = {isa = PBXBuildFile; fileRef = 9A0EE8902A51B7F700BE4CE6 /* rightPostData.json */; }; + 9A1B85622A751537008FEF09 /* CommentListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85562A751536008FEF09 /* CommentListViewController.swift */; }; + 9A1B85632A751537008FEF09 /* PostListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85572A751536008FEF09 /* PostListTableViewCell.swift */; }; + 9A1B85642A751537008FEF09 /* BaseContentDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85582A751536008FEF09 /* BaseContentDetailViewController.swift */; }; + 9A1B85652A751537008FEF09 /* EmptyViewTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85592A751536008FEF09 /* EmptyViewTableViewCell.swift */; }; + 9A1B85662A751537008FEF09 /* BaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855A2A751537008FEF09 /* BaseCell.swift */; }; + 9A1B85672A751537008FEF09 /* BaseContentListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855B2A751537008FEF09 /* BaseContentListViewController.swift */; }; + 9A1B85682A751537008FEF09 /* PostDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855C2A751537008FEF09 /* PostDetailViewController.swift */; }; + 9A1B85692A751537008FEF09 /* ClassIdenfifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855D2A751537008FEF09 /* ClassIdenfifiable.swift */; }; + 9A1B856A2A751537008FEF09 /* UITableView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855E2A751537008FEF09 /* UITableView+Extension.swift */; }; + 9A1B856B2A751537008FEF09 /* PostListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B855F2A751537008FEF09 /* PostListViewController.swift */; }; + 9A1B856C2A751537008FEF09 /* CommentDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85602A751537008FEF09 /* CommentDetailViewController.swift */; }; + 9A1B856D2A751537008FEF09 /* CommentListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85612A751537008FEF09 /* CommentListTableViewCell.swift */; }; + 9A1B856F2A75186D008FEF09 /* Posts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B856E2A75186D008FEF09 /* Posts.swift */; }; + 9A1B85712A75188B008FEF09 /* Comments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85702A75188B008FEF09 /* Comments.swift */; }; + 9A1B85732A753A83008FEF09 /* Contents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85722A753A83008FEF09 /* Contents.swift */; }; + 9A1B85782A754F09008FEF09 /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85752A754F08008FEF09 /* Comment.swift */; }; + 9A1B85792A754F09008FEF09 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85762A754F08008FEF09 /* Post.swift */; }; + 9A1B857A2A754F09008FEF09 /* ContentModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1B85772A754F08008FEF09 /* ContentModel.swift */; }; + 9AC962002A51018A00B43724 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC961FF2A51018A00B43724 /* AppDelegate.swift */; }; + 9AC962022A51018A00B43724 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC962012A51018A00B43724 /* SceneDelegate.swift */; }; + 9AC962092A51018D00B43724 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AC962082A51018D00B43724 /* Assets.xcassets */; }; + 9AC9620C2A51018D00B43724 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AC9620A2A51018D00B43724 /* LaunchScreen.storyboard */; }; + 9AC962172A51018D00B43724 /* iOSTestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC962162A51018D00B43724 /* iOSTestTests.swift */; }; + 9AC962212A51018D00B43724 /* iOSTestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC962202A51018D00B43724 /* iOSTestUITests.swift */; }; + 9AC962232A51018D00B43724 /* iOSTestUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AC962222A51018D00B43724 /* iOSTestUITestsLaunchTests.swift */; }; + 9AF926AA2A7453230090B0C4 /* Networking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AF926A92A7453230090B0C4 /* Networking.swift */; }; + 9AFEAA142A52ED480000BA3B /* ContentListViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AFEAA132A52ED480000BA3B /* ContentListViewModelProtocol.swift */; }; + 9AFEAA162A53A20B0000BA3B /* ContentCellViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AFEAA152A53A20A0000BA3B /* ContentCellViewModelProtocol.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9AC962132A51018D00B43724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AC961F42A51018A00B43724 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AC961FB2A51018A00B43724; + remoteInfo = iOSTest; + }; + 9AC9621D2A51018D00B43724 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AC961F42A51018A00B43724 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AC961FB2A51018A00B43724; + remoteInfo = iOSTest; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A0EE8552A51066500BE4CE6 /* Repository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repository.swift; sourceTree = ""; }; + 9A0EE85C2A51067F00BE4CE6 /* PostListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostListViewModel.swift; sourceTree = ""; }; + 9A0EE8662A510AD600BE4CE6 /* UIColor+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; + 9A0EE8702A51244700BE4CE6 /* RowViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RowViewModel.swift; sourceTree = ""; }; + 9A0EE8722A513D6600BE4CE6 /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; + 9A0EE8742A513F2D00BE4CE6 /* PostCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostCellViewModel.swift; sourceTree = ""; }; + 9A0EE8762A516EA900BE4CE6 /* MockURLProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockURLProtocol.swift; sourceTree = ""; }; + 9A0EE8782A51741600BE4CE6 /* emptyData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = emptyData.json; sourceTree = ""; }; + 9A0EE8792A51741600BE4CE6 /* errorData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = errorData.json; sourceTree = ""; }; + 9A0EE8802A518CB400BE4CE6 /* rightCommentData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rightCommentData.json; sourceTree = ""; }; + 9A0EE8822A518CC700BE4CE6 /* nilData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = nilData.json; sourceTree = ""; }; + 9A0EE88A2A51ABA200BE4CE6 /* CommentCellViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentCellViewModel.swift; sourceTree = ""; }; + 9A0EE88B2A51ABA200BE4CE6 /* CommentListViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentListViewModel.swift; sourceTree = ""; }; + 9A0EE8902A51B7F700BE4CE6 /* rightPostData.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rightPostData.json; sourceTree = ""; }; + 9A1B85562A751536008FEF09 /* CommentListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentListViewController.swift; sourceTree = ""; }; + 9A1B85572A751536008FEF09 /* PostListTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostListTableViewCell.swift; sourceTree = ""; }; + 9A1B85582A751536008FEF09 /* BaseContentDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseContentDetailViewController.swift; sourceTree = ""; }; + 9A1B85592A751536008FEF09 /* EmptyViewTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EmptyViewTableViewCell.swift; sourceTree = ""; }; + 9A1B855A2A751537008FEF09 /* BaseCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseCell.swift; sourceTree = ""; }; + 9A1B855B2A751537008FEF09 /* BaseContentListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseContentListViewController.swift; sourceTree = ""; }; + 9A1B855C2A751537008FEF09 /* PostDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostDetailViewController.swift; sourceTree = ""; }; + 9A1B855D2A751537008FEF09 /* ClassIdenfifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClassIdenfifiable.swift; sourceTree = ""; }; + 9A1B855E2A751537008FEF09 /* UITableView+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITableView+Extension.swift"; sourceTree = ""; }; + 9A1B855F2A751537008FEF09 /* PostListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostListViewController.swift; sourceTree = ""; }; + 9A1B85602A751537008FEF09 /* CommentDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentDetailViewController.swift; sourceTree = ""; }; + 9A1B85612A751537008FEF09 /* CommentListTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentListTableViewCell.swift; sourceTree = ""; }; + 9A1B856E2A75186D008FEF09 /* Posts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Posts.swift; sourceTree = ""; }; + 9A1B85702A75188B008FEF09 /* Comments.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Comments.swift; sourceTree = ""; }; + 9A1B85722A753A83008FEF09 /* Contents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Contents.swift; sourceTree = ""; }; + 9A1B85752A754F08008FEF09 /* Comment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; + 9A1B85762A754F08008FEF09 /* Post.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; + 9A1B85772A754F08008FEF09 /* ContentModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentModel.swift; sourceTree = ""; }; + 9AC961FC2A51018A00B43724 /* iOSTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC961FF2A51018A00B43724 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9AC962012A51018A00B43724 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 9AC962082A51018D00B43724 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9AC9620B2A51018D00B43724 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9AC9620D2A51018D00B43724 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AC962122A51018D00B43724 /* iOSTestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTestTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC962162A51018D00B43724 /* iOSTestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestTests.swift; sourceTree = ""; }; + 9AC9621C2A51018D00B43724 /* iOSTestUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTestUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AC962202A51018D00B43724 /* iOSTestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestUITests.swift; sourceTree = ""; }; + 9AC962222A51018D00B43724 /* iOSTestUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestUITestsLaunchTests.swift; sourceTree = ""; }; + 9AF926A92A7453230090B0C4 /* Networking.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Networking.swift; sourceTree = ""; }; + 9AFEAA132A52ED480000BA3B /* ContentListViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentListViewModelProtocol.swift; sourceTree = ""; }; + 9AFEAA152A53A20A0000BA3B /* ContentCellViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentCellViewModelProtocol.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9AC961F92A51018A00B43724 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC9620F2A51018D00B43724 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC962192A51018D00B43724 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A0EE84E2A51066500BE4CE6 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 9AFEAA132A52ED480000BA3B /* ContentListViewModelProtocol.swift */, + 9A0EE85C2A51067F00BE4CE6 /* PostListViewModel.swift */, + 9A0EE88B2A51ABA200BE4CE6 /* CommentListViewModel.swift */, + 9AFEAA152A53A20A0000BA3B /* ContentCellViewModelProtocol.swift */, + 9A0EE8742A513F2D00BE4CE6 /* PostCellViewModel.swift */, + 9A0EE88A2A51ABA200BE4CE6 /* CommentCellViewModel.swift */, + 9A0EE8702A51244700BE4CE6 /* RowViewModel.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; + 9A0EE8502A51066500BE4CE6 /* View */ = { + isa = PBXGroup; + children = ( + 9A1B855B2A751537008FEF09 /* BaseContentListViewController.swift */, + 9A1B85582A751536008FEF09 /* BaseContentDetailViewController.swift */, + 9A1B855F2A751537008FEF09 /* PostListViewController.swift */, + 9A1B855C2A751537008FEF09 /* PostDetailViewController.swift */, + 9A1B85562A751536008FEF09 /* CommentListViewController.swift */, + 9A1B85602A751537008FEF09 /* CommentDetailViewController.swift */, + 9A1B855A2A751537008FEF09 /* BaseCell.swift */, + 9A1B855D2A751537008FEF09 /* ClassIdenfifiable.swift */, + 9A1B85612A751537008FEF09 /* CommentListTableViewCell.swift */, + 9A1B85592A751536008FEF09 /* EmptyViewTableViewCell.swift */, + 9A1B85572A751536008FEF09 /* PostListTableViewCell.swift */, + 9A1B855E2A751537008FEF09 /* UITableView+Extension.swift */, + ); + path = View; + sourceTree = ""; + }; + 9A0EE8512A51066500BE4CE6 /* Helpers */ = { + isa = PBXGroup; + children = ( + 9A0EE8722A513D6600BE4CE6 /* Observable.swift */, + 9A0EE8662A510AD600BE4CE6 /* UIColor+Extension.swift */, + ); + path = Helpers; + sourceTree = ""; + }; + 9A0EE8532A51066500BE4CE6 /* Model */ = { + isa = PBXGroup; + children = ( + 9A1B85722A753A83008FEF09 /* Contents.swift */, + 9A1B856E2A75186D008FEF09 /* Posts.swift */, + 9A1B85702A75188B008FEF09 /* Comments.swift */, + 9A1B85742A754F08008FEF09 /* Entity */, + 9A0EE8542A51066500BE4CE6 /* API */, + ); + path = Model; + sourceTree = ""; + }; + 9A0EE8542A51066500BE4CE6 /* API */ = { + isa = PBXGroup; + children = ( + 9A0EE8552A51066500BE4CE6 /* Repository.swift */, + 9AF926A92A7453230090B0C4 /* Networking.swift */, + ); + path = API; + sourceTree = ""; + }; + 9A1B85742A754F08008FEF09 /* Entity */ = { + isa = PBXGroup; + children = ( + 9A1B85752A754F08008FEF09 /* Comment.swift */, + 9A1B85762A754F08008FEF09 /* Post.swift */, + 9A1B85772A754F08008FEF09 /* ContentModel.swift */, + ); + path = Entity; + sourceTree = ""; + }; + 9AC961F32A51018A00B43724 = { + isa = PBXGroup; + children = ( + 9AC961FE2A51018A00B43724 /* iOSTest */, + 9AC962152A51018D00B43724 /* iOSTestTests */, + 9AC9621F2A51018D00B43724 /* iOSTestUITests */, + 9AC961FD2A51018A00B43724 /* Products */, + ); + sourceTree = ""; + }; + 9AC961FD2A51018A00B43724 /* Products */ = { + isa = PBXGroup; + children = ( + 9AC961FC2A51018A00B43724 /* iOSTest.app */, + 9AC962122A51018D00B43724 /* iOSTestTests.xctest */, + 9AC9621C2A51018D00B43724 /* iOSTestUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9AC961FE2A51018A00B43724 /* iOSTest */ = { + isa = PBXGroup; + children = ( + 9A0EE8532A51066500BE4CE6 /* Model */, + 9A0EE8502A51066500BE4CE6 /* View */, + 9A0EE84E2A51066500BE4CE6 /* ViewModel */, + 9A0EE8512A51066500BE4CE6 /* Helpers */, + 9AC961FF2A51018A00B43724 /* AppDelegate.swift */, + 9AC962012A51018A00B43724 /* SceneDelegate.swift */, + 9AC962082A51018D00B43724 /* Assets.xcassets */, + 9AC9620A2A51018D00B43724 /* LaunchScreen.storyboard */, + 9AC9620D2A51018D00B43724 /* Info.plist */, + ); + path = iOSTest; + sourceTree = ""; + }; + 9AC962152A51018D00B43724 /* iOSTestTests */ = { + isa = PBXGroup; + children = ( + 9A0EE8782A51741600BE4CE6 /* emptyData.json */, + 9A0EE8792A51741600BE4CE6 /* errorData.json */, + 9A0EE8822A518CC700BE4CE6 /* nilData.json */, + 9A0EE8802A518CB400BE4CE6 /* rightCommentData.json */, + 9A0EE8902A51B7F700BE4CE6 /* rightPostData.json */, + 9AC962162A51018D00B43724 /* iOSTestTests.swift */, + 9A0EE8762A516EA900BE4CE6 /* MockURLProtocol.swift */, + ); + path = iOSTestTests; + sourceTree = ""; + }; + 9AC9621F2A51018D00B43724 /* iOSTestUITests */ = { + isa = PBXGroup; + children = ( + 9AC962202A51018D00B43724 /* iOSTestUITests.swift */, + 9AC962222A51018D00B43724 /* iOSTestUITestsLaunchTests.swift */, + ); + path = iOSTestUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9AC961FB2A51018A00B43724 /* iOSTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC962262A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTest" */; + buildPhases = ( + 9AC961F82A51018A00B43724 /* Sources */, + 9AC961F92A51018A00B43724 /* Frameworks */, + 9AC961FA2A51018A00B43724 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iOSTest; + productName = iOSTest; + productReference = 9AC961FC2A51018A00B43724 /* iOSTest.app */; + productType = "com.apple.product-type.application"; + }; + 9AC962112A51018D00B43724 /* iOSTestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC962292A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTestTests" */; + buildPhases = ( + 9AC9620E2A51018D00B43724 /* Sources */, + 9AC9620F2A51018D00B43724 /* Frameworks */, + 9AC962102A51018D00B43724 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AC962142A51018D00B43724 /* PBXTargetDependency */, + ); + name = iOSTestTests; + productName = iOSTestTests; + productReference = 9AC962122A51018D00B43724 /* iOSTestTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9AC9621B2A51018D00B43724 /* iOSTestUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AC9622C2A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTestUITests" */; + buildPhases = ( + 9AC962182A51018D00B43724 /* Sources */, + 9AC962192A51018D00B43724 /* Frameworks */, + 9AC9621A2A51018D00B43724 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AC9621E2A51018D00B43724 /* PBXTargetDependency */, + ); + name = iOSTestUITests; + productName = iOSTestUITests; + productReference = 9AC9621C2A51018D00B43724 /* iOSTestUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9AC961F42A51018A00B43724 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 9AC961FB2A51018A00B43724 = { + CreatedOnToolsVersion = 14.2; + }; + 9AC962112A51018D00B43724 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9AC961FB2A51018A00B43724; + }; + 9AC9621B2A51018D00B43724 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9AC961FB2A51018A00B43724; + }; + }; + }; + buildConfigurationList = 9AC961F72A51018A00B43724 /* Build configuration list for PBXProject "iOSTest" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9AC961F32A51018A00B43724; + productRefGroup = 9AC961FD2A51018A00B43724 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9AC961FB2A51018A00B43724 /* iOSTest */, + 9AC962112A51018D00B43724 /* iOSTestTests */, + 9AC9621B2A51018D00B43724 /* iOSTestUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9AC961FA2A51018A00B43724 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC9620C2A51018D00B43724 /* LaunchScreen.storyboard in Resources */, + 9AC962092A51018D00B43724 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC962102A51018D00B43724 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A0EE87B2A51741600BE4CE6 /* errorData.json in Resources */, + 9A0EE8912A51B7F700BE4CE6 /* rightPostData.json in Resources */, + 9A0EE8832A518CC700BE4CE6 /* nilData.json in Resources */, + 9A0EE87A2A51741600BE4CE6 /* emptyData.json in Resources */, + 9A0EE8812A518CB400BE4CE6 /* rightCommentData.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC9621A2A51018D00B43724 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9AC961F82A51018A00B43724 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC962002A51018A00B43724 /* AppDelegate.swift in Sources */, + 9A0EE8672A510AD700BE4CE6 /* UIColor+Extension.swift in Sources */, + 9A1B85682A751537008FEF09 /* PostDetailViewController.swift in Sources */, + 9A1B85622A751537008FEF09 /* CommentListViewController.swift in Sources */, + 9A1B856C2A751537008FEF09 /* CommentDetailViewController.swift in Sources */, + 9A1B85672A751537008FEF09 /* BaseContentListViewController.swift in Sources */, + 9A1B856D2A751537008FEF09 /* CommentListTableViewCell.swift in Sources */, + 9A1B85662A751537008FEF09 /* BaseCell.swift in Sources */, + 9AF926AA2A7453230090B0C4 /* Networking.swift in Sources */, + 9A0EE8732A513D6600BE4CE6 /* Observable.swift in Sources */, + 9A1B85712A75188B008FEF09 /* Comments.swift in Sources */, + 9A1B85792A754F09008FEF09 /* Post.swift in Sources */, + 9AFEAA142A52ED480000BA3B /* ContentListViewModelProtocol.swift in Sources */, + 9A1B85642A751537008FEF09 /* BaseContentDetailViewController.swift in Sources */, + 9A1B85652A751537008FEF09 /* EmptyViewTableViewCell.swift in Sources */, + 9A0EE88C2A51ABA200BE4CE6 /* CommentCellViewModel.swift in Sources */, + 9A0EE8712A51244700BE4CE6 /* RowViewModel.swift in Sources */, + 9A1B856F2A75186D008FEF09 /* Posts.swift in Sources */, + 9A0EE8752A513F2D00BE4CE6 /* PostCellViewModel.swift in Sources */, + 9AFEAA162A53A20B0000BA3B /* ContentCellViewModelProtocol.swift in Sources */, + 9A1B85632A751537008FEF09 /* PostListTableViewCell.swift in Sources */, + 9A1B856A2A751537008FEF09 /* UITableView+Extension.swift in Sources */, + 9A1B856B2A751537008FEF09 /* PostListViewController.swift in Sources */, + 9A1B85692A751537008FEF09 /* ClassIdenfifiable.swift in Sources */, + 9A0EE88D2A51ABA200BE4CE6 /* CommentListViewModel.swift in Sources */, + 9A1B85782A754F09008FEF09 /* Comment.swift in Sources */, + 9A1B857A2A754F09008FEF09 /* ContentModel.swift in Sources */, + 9A0EE85A2A51066500BE4CE6 /* Repository.swift in Sources */, + 9A0EE85D2A51067F00BE4CE6 /* PostListViewModel.swift in Sources */, + 9AC962022A51018A00B43724 /* SceneDelegate.swift in Sources */, + 9A1B85732A753A83008FEF09 /* Contents.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC9620E2A51018D00B43724 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC962172A51018D00B43724 /* iOSTestTests.swift in Sources */, + 9A0EE8772A516EA900BE4CE6 /* MockURLProtocol.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AC962182A51018D00B43724 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AC962232A51018D00B43724 /* iOSTestUITestsLaunchTests.swift in Sources */, + 9AC962212A51018D00B43724 /* iOSTestUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9AC962142A51018D00B43724 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AC961FB2A51018A00B43724 /* iOSTest */; + targetProxy = 9AC962132A51018D00B43724 /* PBXContainerItemProxy */; + }; + 9AC9621E2A51018D00B43724 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AC961FB2A51018A00B43724 /* iOSTest */; + targetProxy = 9AC9621D2A51018D00B43724 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9AC9620A2A51018D00B43724 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AC9620B2A51018D00B43724 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9AC962242A51018D00B43724 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9AC962252A51018D00B43724 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9AC962272A51018D00B43724 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iOSTest/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9AC962282A51018D00B43724 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iOSTest/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9AC9622A2A51018D00B43724 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTest.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iOSTest"; + }; + name = Debug; + }; + 9AC9622B2A51018D00B43724 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTest.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/iOSTest"; + }; + name = Release; + }; + 9AC9622D2A51018D00B43724 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iOSTest; + }; + name = Debug; + }; + 9AC9622E2A51018D00B43724 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.iOSTestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iOSTest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9AC961F72A51018A00B43724 /* Build configuration list for PBXProject "iOSTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC962242A51018D00B43724 /* Debug */, + 9AC962252A51018D00B43724 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC962262A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC962272A51018D00B43724 /* Debug */, + 9AC962282A51018D00B43724 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC962292A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC9622A2A51018D00B43724 /* Debug */, + 9AC9622B2A51018D00B43724 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AC9622C2A51018D00B43724 /* Build configuration list for PBXNativeTarget "iOSTestUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AC9622D2A51018D00B43724 /* Debug */, + 9AC9622E2A51018D00B43724 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9AC961F42A51018A00B43724 /* Project object */; +} diff --git a/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Swift/MVVMDemo/iOSTest.xcodeproj/xcshareddata/xcschemes/iOSTest.xcscheme b/Swift/MVVMDemo/iOSTest.xcodeproj/xcshareddata/xcschemes/iOSTest.xcscheme new file mode 100644 index 0000000..1741c2a --- /dev/null +++ b/Swift/MVVMDemo/iOSTest.xcodeproj/xcshareddata/xcschemes/iOSTest.xcscheme @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMDemo/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist b/Swift/MVVMDemo/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..3fced1f --- /dev/null +++ b/Swift/MVVMDemo/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + iOSTest.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + 9AC961FB2A51018A00B43724 + + primary + + + 9AC962112A51018D00B43724 + + primary + + + 9AC9621B2A51018D00B43724 + + primary + + + + + diff --git a/Swift/MVVMDemo/iOSTest/AppDelegate.swift b/Swift/MVVMDemo/iOSTest/AppDelegate.swift new file mode 100644 index 0000000..dd66728 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +@main +final class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..9221b9b --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/ThemeColor.colorset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/ThemeColor.colorset/Contents.json new file mode 100644 index 0000000..8f303df --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/ThemeColor.colorset/Contents.json @@ -0,0 +1,33 @@ +{ + "colors" : [ + { + "color" : { + "platform" : "ios", + "reference" : "systemBackgroundColor" + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/alertColor.colorset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/alertColor.colorset/Contents.json new file mode 100644 index 0000000..ab745b2 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/alertColor.colorset/Contents.json @@ -0,0 +1,33 @@ +{ + "colors" : [ + { + "color" : { + "platform" : "universal", + "reference" : "labelColor" + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/refreshControlBgColor.colorset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/refreshControlBgColor.colorset/Contents.json new file mode 100644 index 0000000..d2ddb70 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/refreshControlBgColor.colorset/Contents.json @@ -0,0 +1,15 @@ +{ + "colors" : [ + { + "color" : { + "platform" : "universal", + "reference" : "systemGrayColor" + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/Contents.json b/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/Contents.json new file mode 100644 index 0000000..0da08ff --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "userIconPlaceholder.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/userIconPlaceholder.jpg b/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/userIconPlaceholder.jpg new file mode 100644 index 0000000..bf91c81 Binary files /dev/null and b/Swift/MVVMDemo/iOSTest/Assets.xcassets/userIconPlaceholder.imageset/userIconPlaceholder.jpg differ diff --git a/Swift/MVVMDemo/iOSTest/Base.lproj/LaunchScreen.storyboard b/Swift/MVVMDemo/iOSTest/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMDemo/iOSTest/Helpers/Observable.swift b/Swift/MVVMDemo/iOSTest/Helpers/Observable.swift new file mode 100755 index 0000000..1dbb045 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Helpers/Observable.swift @@ -0,0 +1,43 @@ +// +// Observable.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class Observable { + var value: T { + didSet { + Task { + await notifyValueChanged() + } + } + } + + private var valueChanged: ((T) async -> Void)? + + init(value: T) { + self.value = value + } + + func addObserver(fireNow: Bool = true, _ onChange: ((T) async -> Void)?) { + valueChanged = onChange + if fireNow { + Task { + await notifyValueChanged() + } + } + } + + private func notifyValueChanged() async { + if let valueChanged = valueChanged { + await valueChanged(self.value) + } + } + + func removeObserver() { + valueChanged = nil + } +} diff --git a/Swift/MVVMDemo/iOSTest/Helpers/UIColor+Extension.swift b/Swift/MVVMDemo/iOSTest/Helpers/UIColor+Extension.swift new file mode 100644 index 0000000..378621a --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Helpers/UIColor+Extension.swift @@ -0,0 +1,14 @@ +// +// UIColor+Extension.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +extension UIColor { + static let themeColor = UIColor(named: "ThemeColor") + static let alertColor = UIColor(named: "AlertColor") + static let refreshControlBgColor = UIColor(named: "RefreshControlBgColor") +} diff --git a/Swift/MVVMDemo/iOSTest/Info.plist b/Swift/MVVMDemo/iOSTest/Info.plist new file mode 100644 index 0000000..0eb786d --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Info.plist @@ -0,0 +1,23 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + + diff --git a/Swift/MVVMDemo/iOSTest/Model/API/Networking.swift b/Swift/MVVMDemo/iOSTest/Model/API/Networking.swift new file mode 100644 index 0000000..ac8f588 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/API/Networking.swift @@ -0,0 +1,72 @@ +// +// NetworkService.swift +// iOSTest +// +// Created by chenyilong on 2023/7/29. +// + +import Foundation + +enum ApiError: Error { + case urlError + case networkError(Error) + case decodingError(Error) +} + +protocol Request { + associatedtype RequestResponse: Response + var url: URL { get } + var method: String { get } + + func handleResponse(data: Data, response: URLResponse) throws -> RequestResponse +} + +extension Request { + var method: String { + return "GET" + } +} + +protocol Response: Decodable { + var statusCode: Int { get } + var data: Data { get } + var errMsg: String? { get } + + init(statusCode: Int, data: Data, errMsg: String?) + func decodeData() throws -> T +} + +extension Response { + func decodeData() throws -> T { + let decoder = JSONDecoder() + return try decoder.decode(T.self, from: self.data) + } +} + +protocol Networking { + associatedtype R: Request + func request(request: R) async throws -> R.RequestResponse +} + +class DefaultNetworking: Networking { + typealias R = Req + + //session to be used to make the API call + let session: URLSession + + // Make the session shared by default. + // In unit tests, a mock session can be injected + init(urlSession: URLSession = .shared) { + self.session = urlSession + } + + func request(request: R) async throws -> R.RequestResponse where R.RequestResponse: Response { + let (data, response) = try await session.data(from: request.url) + guard let httpResponse = response as? HTTPURLResponse else { + throw ApiError.urlError + } + return try request.handleResponse(data: data, response: httpResponse) + } +} + + diff --git a/Swift/MVVMDemo/iOSTest/Model/API/Repository.swift b/Swift/MVVMDemo/iOSTest/Model/API/Repository.swift new file mode 100755 index 0000000..7e519a6 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/API/Repository.swift @@ -0,0 +1,77 @@ +// +// Repository.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +class ContentRequest: Request { + typealias RequestResponse = DataType + + let url: URL + + init(url: URL) { + self.url = url + } + + func handleResponse(data: Data, response: URLResponse) throws -> DataType { + guard let httpResponse = response as? HTTPURLResponse else { + throw ApiError.urlError + } + return DataType(statusCode: httpResponse.statusCode, data: data, errMsg: nil) + } +} + +class ContentResponse: Response { + var statusCode: Int + var data: Data + var errMsg: String? + + required init(statusCode: Int, data: Data, errMsg: String?) { + self.statusCode = statusCode + self.data = data + self.errMsg = errMsg + } + + func decodeData() throws -> T { + let decoder = JSONDecoder() + return try decoder.decode(T.self, from: data) + } +} + +class PostRequest: ContentRequest { + init() { + super.init(url: URL(string: "https://jsonplaceholder.typicode.com/posts")!) + } +} + +class CommentRequest: ContentRequest { + init(id: Int) { + super.init(url: URL(string: "https://jsonplaceholder.typicode.com/posts/\(id)/comments")!) + } +} + +class PostResponse: ContentResponse { + var posts: [Post] { + do { + return try decodeData() + } catch { + print("Error: \(error)") + return [] + } + } +} + +class CommentResponse: ContentResponse { + var comments: [Comment] { + do { + return try decodeData() + } catch { + print("Error: \(error)") + return [] + } + } +} + diff --git a/Swift/MVVMDemo/iOSTest/Model/Comments.swift b/Swift/MVVMDemo/iOSTest/Model/Comments.swift new file mode 100644 index 0000000..3a683ea --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Comments.swift @@ -0,0 +1,46 @@ +// +// Comments.swift +// iOSTest +// +// Created by chenyilong on 2023/7/29. +// + +import Foundation + +final class Comments: Contents where N.R == CommentRequest { + + var post: Post + init(post:Post, networking: N) { + self.post = post + super.init(networking: networking) + } + + override func loadEntity() async throws { + do { + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await networking.request(request: request) + let contents = response.comments + if contents.isEmpty { + } else { + self.originalContents = contents + setupAllContents() + } + } catch { + // handle error + throw error + } + } + + override func filterEntityForSearchText(_ searchText: String) { + if searchText.isEmpty { + self.resetFilters() + return + } + let filteredcontents = originalContents.filter { (content: Entity) -> Bool in + return content.body.lowercased().contains(searchText.lowercased()) + } + updateEntity(filteredcontents) + } + +} + diff --git a/Swift/MVVMDemo/iOSTest/Model/Contents.swift b/Swift/MVVMDemo/iOSTest/Model/Contents.swift new file mode 100644 index 0000000..50669bc --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Contents.swift @@ -0,0 +1,55 @@ +// +// Contents.swift +// iOSTest +// +// Created by chenyilong on 2023/7/30. +// + +import Foundation + +protocol MVVMModelProtocol { + associatedtype Entity + var entity: Observable<[Entity]> { get } + func loadEntity() async throws + func updateEntity(_ newEntity: [Entity]) + func filterEntityForSearchText(_ searchText: String) +} + +class Contents: ObservableObject, MVVMModelProtocol where N.R == R { + + typealias Entity = T + + @Published var entity: Observable<[Entity]> = Observable<[Entity]>(value: []) + var originalContents: [Entity] = [] + var networking: N + + init(networking: N) { + self.networking = networking + } + + func setupAllContents() { + entity.value = originalContents + } + + func loadEntity() async throws { + fatalError("please override this method") + } + + func updateEntity(_ newEntity: [Entity]) { + entity.value = newEntity + } + + func filterEntityForSearchText(_ searchText: String) { + fatalError("please override this method") + } + + func resetFilters() { + setupAllContents() + } + + deinit { + entity.removeObserver() + } + +} + diff --git a/Swift/MVVMDemo/iOSTest/Model/Entity/Comment.swift b/Swift/MVVMDemo/iOSTest/Model/Entity/Comment.swift new file mode 100644 index 0000000..0a71f77 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Entity/Comment.swift @@ -0,0 +1,23 @@ +// +// Post.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +struct Comment: Codable, Identifiable { + let postId: Int + let id: Int + let name: String + let body: String + let email: String +} + +extension Comment: ContentModel { + var title: String { + return name // we'll use 'name' as 'title' for Comment + } + // no additional implementation needed +} diff --git a/Swift/MVVMDemo/iOSTest/Model/Entity/ContentModel.swift b/Swift/MVVMDemo/iOSTest/Model/Entity/ContentModel.swift new file mode 100644 index 0000000..6b883a7 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Entity/ContentModel.swift @@ -0,0 +1,14 @@ +// +// ContentModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/4. +// + +import Foundation + +protocol ContentModel { + var id: Int { get } + var body: String { get } + var title: String { get } +} diff --git a/Swift/MVVMDemo/iOSTest/Model/Entity/Post.swift b/Swift/MVVMDemo/iOSTest/Model/Entity/Post.swift new file mode 100644 index 0000000..ba82b0e --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Entity/Post.swift @@ -0,0 +1,19 @@ +// +// Post.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +struct Post: Codable, Identifiable { + let id: Int + let userId: Int + let title: String + let body: String +} + +extension Post: ContentModel { + // no additional implementation needed, as Post already conforms to ContentModel +} diff --git a/Swift/MVVMDemo/iOSTest/Model/Posts.swift b/Swift/MVVMDemo/iOSTest/Model/Posts.swift new file mode 100644 index 0000000..d447b98 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/Model/Posts.swift @@ -0,0 +1,44 @@ +// +// Posts.swift +// iOSTest +// +// Created by chenyilong on 2023/7/29. +// + +import Foundation + +final class Posts: Contents where N.R == PostRequest { + + override init(networking: N) { + super.init(networking: networking) + } + + override func loadEntity() async throws { + do { + let request = PostRequest() + let response: PostResponse = try await networking.request(request: request) + let contents = response.posts + if contents.isEmpty { + } else { + self.originalContents = contents + setupAllContents() + } + } catch { + // handle error + throw error + } + } + + override func filterEntityForSearchText(_ searchText: String) { + guard !searchText.isEmpty else { + self.resetFilters() + return + } + + let filteredPosts = originalContents.filter { (content: Post) -> Bool in + return content.title.lowercased().contains(searchText.lowercased()) + } + entity.value = filteredPosts + } + +} diff --git a/Swift/MVVMDemo/iOSTest/SceneDelegate.swift b/Swift/MVVMDemo/iOSTest/SceneDelegate.swift new file mode 100644 index 0000000..151b970 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/SceneDelegate.swift @@ -0,0 +1,67 @@ +// +// SceneDelegate.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + + let memoryCapacity = 500 * 1024 * 1024 + let diskCapacity = 500 * 1024 * 1024 + let cache = URLCache(memoryCapacity: memoryCapacity, diskCapacity: diskCapacity, diskPath: nil) + URLCache.shared = cache + + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let windowScene = (scene as? UIWindowScene) else { return } + + let window = UIWindow(windowScene: windowScene) + let viewController = PostListViewController() + let navigationController = UINavigationController(rootViewController: viewController) + + window.rootViewController = navigationController + + self.window = window + window.makeKeyAndVisible() + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Swift/MVVMDemo/iOSTest/View/BaseCell.swift b/Swift/MVVMDemo/iOSTest/View/BaseCell.swift new file mode 100644 index 0000000..7d9e7e9 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/BaseCell.swift @@ -0,0 +1,19 @@ +// +// BaseCell.swift +// iOSTest +// +// Created by chenyilong on 2023/7/25. +// + +import Foundation +import UIKit + +class BaseCell: UITableViewCell, ClassIdenfifiable { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/BaseContentDetailViewController.swift b/Swift/MVVMDemo/iOSTest/View/BaseContentDetailViewController.swift new file mode 100644 index 0000000..9f7776f --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/BaseContentDetailViewController.swift @@ -0,0 +1,64 @@ +// +// PostDetailViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + + +import UIKit + +class BaseContentDetailViewController: UIViewController { + + let model: Model + + init(model: Model) { + self.model = model + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = .white + + navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) + navigationItem.largeTitleDisplayMode = .never + + title = model.title + + setupView() + } + + // Normally I wouldn't set up a view like this but since this is only just 1 view for this test, so i'm sorry + private func setupView() { + let contentView = UIView() + contentView.translatesAutoresizingMaskIntoConstraints = false + + let contentLabel = UITextView() + contentLabel.isEditable = false + contentLabel.font = .systemFont(ofSize: 18, weight: .regular) + contentLabel.text = model.body + contentLabel.contentOffset = .zero + contentLabel.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(contentLabel) + + view.addSubview(contentView) + + NSLayoutConstraint.activate([ + contentView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + contentView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + contentView.topAnchor.constraint(equalTo: view.topAnchor), + + contentLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20), + contentLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20), + contentLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -48), + contentLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 40) + ]) + } + +} diff --git a/Swift/MVVMDemo/iOSTest/View/BaseContentListViewController.swift b/Swift/MVVMDemo/iOSTest/View/BaseContentListViewController.swift new file mode 100644 index 0000000..35f7447 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/BaseContentListViewController.swift @@ -0,0 +1,147 @@ +// +// PostListViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +protocol ContentHandling { + associatedtype Content + func cellPressed(content: Content) +} + +class BaseContentListViewController: UITableViewController, UISearchResultsUpdating, ContentHandling where ViewModelType.Content == Content { + + lazy var searchController: UISearchController = { + let controller = UISearchController(searchResultsController: nil) + controller.obscuresBackgroundDuringPresentation = false + controller.searchBar.placeholder = "Search" + controller.searchResultsUpdater = self + controller.hidesNavigationBarDuringPresentation = false + controller.searchBar.searchBarStyle = .minimal + return controller + }() + + lazy var activityIndicator: UIActivityIndicatorView = { + let indicator = UIActivityIndicatorView(style: .large) + indicator.hidesWhenStopped = true + indicator.translatesAutoresizingMaskIntoConstraints = false + + return indicator + }() + + var updateTask: Task? = nil + + var viewModel: ViewModelType + + required init(viewModel: ViewModelType) { + self.viewModel = viewModel + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil) + + navigationController?.setNavigationBarHidden(true, animated: true) + + refreshControl = UIRefreshControl() + refreshControl?.backgroundColor = .refreshControlBgColor + refreshControl?.addTarget(self, action: #selector(refreshTriggered), for: .valueChanged) + + // Setup the Search Controller + tableView.tableHeaderView = searchController.searchBar + definesPresentationContext = true + + tableView.register(EmptyViewTableViewCell.self) + + refreshTriggered() + self.view.addSubview(activityIndicator) + // Set up constraints + NSLayoutConstraint.activate([ + activityIndicator.centerYAnchor.constraint(equalTo: view.centerYAnchor), + activityIndicator.centerXAnchor.constraint(equalTo: view.centerXAnchor) + ]) + } + + @objc + private func refreshTriggered() { + refreshControl?.beginRefreshing() + navigationController?.setNavigationBarHidden(false, animated: true) + initBinding() + } + + func initBinding() { + updateTask = Task { [weak self] in + await viewModel.refreshTriggered() + viewModel.contents.addObserver(fireNow: true) { [weak self] contents in + var contentCellViewModels: [ViewModelType.ContentCellViewModel] = [] + for content in contents { + if Task.isCancelled { + self?.updateTask = nil + break + } + if var homeContentCellViewModel = self?.viewModel.contentCellViewModel(for: content) { + homeContentCellViewModel.cellPressed = { + self?.cellPressed(content: content) + } + contentCellViewModels.append(homeContentCellViewModel) + } + } + + self?.viewModel.contentsFetched(contentCellViewModels) + + await MainActor.run { + self?.tableView.reloadData() + self?.refreshControl?.endRefreshing() + } + } + + viewModel.viewState.addObserver(fireNow: true) { [weak self] viewState in + switch viewState { + + case .loading: + self?.activityIndicator.startAnimating() + break + + case .loaded, .error: + self?.activityIndicator.stopAnimating() + // Update your view to reflect the error state, using the provided error message + break + + } + } + } + } + + open func cellPressed(content: Content) { + // This function can be overridden in each subclass to handle specific actions + } + + // MARK: UISearchResultsUpdating + func updateSearchResults(for searchController: UISearchController) { + viewModel.searchTextChanged(searchController.searchBar.text ?? "") + } + + // MARK: update task life cycle + deinit { + updateTask?.cancel() + updateTask = nil + } + + @objc func appDidEnterBackground() { + updateTask?.cancel() + updateTask = nil + } + + @objc func appWillEnterForeground() { + initBinding() + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/ClassIdenfifiable.swift b/Swift/MVVMDemo/iOSTest/View/ClassIdenfifiable.swift new file mode 100644 index 0000000..36f87a9 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/ClassIdenfifiable.swift @@ -0,0 +1,20 @@ +// +// ClassIdenfifiable.swift +// iOSTest +// +// Created by chenyilong on 2023/7/25. +// + +import Foundation + +protocol ClassIdenfifiable { + static var reuseIdentifier: String { get } +} + +extension ClassIdenfifiable { + static var reuseIdentifier: String { + return String(describing: self) + } +} + + diff --git a/Swift/MVVMDemo/iOSTest/View/CommentDetailViewController.swift b/Swift/MVVMDemo/iOSTest/View/CommentDetailViewController.swift new file mode 100644 index 0000000..a862c71 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/CommentDetailViewController.swift @@ -0,0 +1,13 @@ +// +// PostDetailViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + + +import UIKit + +final class CommentDetailViewController: BaseContentDetailViewController { + // No need for init, viewDidLoad, setupView since they are inherited. +} diff --git a/Swift/MVVMDemo/iOSTest/View/CommentListTableViewCell.swift b/Swift/MVVMDemo/iOSTest/View/CommentListTableViewCell.swift new file mode 100644 index 0000000..7b672ec --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/CommentListTableViewCell.swift @@ -0,0 +1,81 @@ +// +// CommentListTableViewCell.swift +// iOSTest +// +// Created by chenyilong on 2023/7/3. +// + +import UIKit + +final class CommentListTableViewCell: BaseCell { + + private let userIconImageView: UIImageView = { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFit + imageView.translatesAutoresizingMaskIntoConstraints = false + return imageView + }() + + private let postIdLabel = UILabel() + private let nameLabel = UILabel() + private let bodyLabel = UILabel() + private let idLabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + commonInit() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(with comment: Comment) { + userIconImageView.image = UIImage(named: "userIconPlaceholder") + postIdLabel.text = "PostId: \(comment.postId)" + + nameLabel.text = "Name: " + comment.name + bodyLabel.text = "Comment: " + comment.body + idLabel.text = "ID: \(comment.id)" + } + + private func commonInit() { + postIdLabel.font = .systemFont(ofSize: 18, weight: .regular) + postIdLabel.numberOfLines = 0 + nameLabel.font = .systemFont(ofSize: 18, weight: .semibold) + nameLabel.numberOfLines = 0 + bodyLabel.font = .systemFont(ofSize: 18, weight: .regular) + bodyLabel.numberOfLines = 0 + idLabel.font = .systemFont(ofSize: 16, weight: .regular) + idLabel.numberOfLines = 0 + // quantityLabel.font = .systemFont(ofSize: 14, weight: .regular) + + let labelStackView = UIStackView() + labelStackView.axis = .vertical + labelStackView.spacing = 4 + + labelStackView.addArrangedSubview(postIdLabel) + labelStackView.addArrangedSubview(nameLabel) + labelStackView.addArrangedSubview(bodyLabel) + labelStackView.addArrangedSubview(idLabel) + + let containerStackView = UIStackView() + containerStackView.axis = .horizontal + containerStackView.spacing = 16 + containerStackView.translatesAutoresizingMaskIntoConstraints = false + + containerStackView.addArrangedSubview(userIconImageView) + containerStackView.addArrangedSubview(labelStackView) + + contentView.addSubview(containerStackView) + + NSLayoutConstraint.activate([ + userIconImageView.widthAnchor.constraint(equalToConstant: 80), + + containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16), + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 8), + containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16), + containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -8) + ]) + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/CommentListViewController.swift b/Swift/MVVMDemo/iOSTest/View/CommentListViewController.swift new file mode 100644 index 0000000..19393c2 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/CommentListViewController.swift @@ -0,0 +1,72 @@ +// +// ViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class CommentListViewController: BaseContentListViewController>, CommentCellViewModel> { + + required init(viewModel: CommentListViewModel>) { + super.init(viewModel: viewModel) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "Comments" + tableView.register(CommentListTableViewCell.self) + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + switch viewModel.viewState.value { + + case .loading: + return EmptyViewTableViewCell() + + case .loaded: + let cell: CommentListTableViewCell = tableView.dequeueReusableCell(for: indexPath) + + let comment = viewModel.contentForRowAt(at: indexPath.item) + cell.configure(with: comment) + return cell + + default: + return UITableViewCell() + } + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + viewModel.numberOfRowsInSection() + } + + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + switch viewModel.viewState.value { + + case .loading: + return 240 + + case .loaded: + return 240 + + default: + return 0 + } + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: false) + viewModel.didSelectRowAt(at: indexPath.item) + } + + override func cellPressed(content: Comment) { + navigationController?.pushViewController(CommentDetailViewController(model: content), animated: true) + } + +} + diff --git a/Swift/MVVMDemo/iOSTest/View/EmptyViewTableViewCell.swift b/Swift/MVVMDemo/iOSTest/View/EmptyViewTableViewCell.swift new file mode 100644 index 0000000..adf592e --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/EmptyViewTableViewCell.swift @@ -0,0 +1,39 @@ +// +// EmptyViewTableViewCell.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class EmptyViewTableViewCell: BaseCell { + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + private func setupView() { + backgroundColor = .themeColor + + let label = UILabel() + label.text = "No data available, please pull to refresh" + label.textColor = .alertColor + label.numberOfLines = 0 + label.textAlignment = .center + label.translatesAutoresizingMaskIntoConstraints = false + + contentView.addSubview(label) + + NSLayoutConstraint.activate([ + label.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), + label.centerYAnchor.constraint(equalTo: contentView.centerYAnchor) + ]) + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/PostDetailViewController.swift b/Swift/MVVMDemo/iOSTest/View/PostDetailViewController.swift new file mode 100644 index 0000000..6b3c910 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/PostDetailViewController.swift @@ -0,0 +1,74 @@ +// +// PostDetailViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class PostDetailViewController: BaseContentDetailViewController { + + override func viewDidLoad() { + super.viewDidLoad() + addCommentsButton() + } + + // Normally I wouldn't set up a view like this but since this is only just 1 view for this test, so i'm sorry + private func setupView() { + let contentView = UIView() + contentView.translatesAutoresizingMaskIntoConstraints = false + + let contentLabel = UITextView() + contentLabel.isEditable = false + contentLabel.font = .systemFont(ofSize: 18, weight: .regular) + contentLabel.text = model.body + contentLabel.contentOffset = .zero + contentLabel.translatesAutoresizingMaskIntoConstraints = false + + contentView.addSubview(contentLabel) + + view.addSubview(contentView) + + addCommentsButton() + NSLayoutConstraint.activate([ + contentView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + contentView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + contentView.topAnchor.constraint(equalTo: view.topAnchor), + + contentLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20), + contentLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20), + contentLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -48), + contentLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 40), + ]) + } + + func addCommentsButton() { + let contentsButton = UIButton() + contentsButton.translatesAutoresizingMaskIntoConstraints = false + self.view.addSubview(contentsButton) + + contentsButton.translatesAutoresizingMaskIntoConstraints = false + + let attributedString = NSMutableAttributedString.init(string: "Comments") + attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: 1, range: + NSRange.init(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.blue, range: + NSRange.init(location: 0, length: attributedString.length)) + attributedString.addAttribute(NSAttributedString.Key.font, value: UIFont.systemFont(ofSize: 24.0), range: NSRange.init(location: 0, length: attributedString.length)) + contentsButton.setAttributedTitle(attributedString, for: .normal) + + NSLayoutConstraint.activate([ + contentsButton.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor), + contentsButton.trailingAnchor.constraint(equalTo: view.trailingAnchor), + contentsButton.topAnchor.constraint(equalTo: view.topAnchor), + contentsButton.bottomAnchor.constraint(equalTo: view.bottomAnchor) + ]) + contentsButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside) + } + + @objc func buttonAction(sender: UIButton!) { + navigationController?.pushViewController(CommentListViewController(viewModel: CommentListViewModel(post: model)), animated: true) + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/PostListTableViewCell.swift b/Swift/MVVMDemo/iOSTest/View/PostListTableViewCell.swift new file mode 100644 index 0000000..ee94fef --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/PostListTableViewCell.swift @@ -0,0 +1,52 @@ +// +// PostListTableViewCell.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class PostListTableViewCell: BaseCell { + + private let titleLabel = UILabel() + private let subtitleLabel = UILabel() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + setupView() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func configure(with model: Post) { + titleLabel.text = model.title + titleLabel.numberOfLines = 0 + subtitleLabel.text = String(describing: model.id) + } + + private func setupView() { + accessoryType = .disclosureIndicator + subtitleLabel.textColor = .lightGray + + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.distribution = .equalCentering + stackView.translatesAutoresizingMaskIntoConstraints = false + + stackView.addArrangedSubview(titleLabel) + stackView.addArrangedSubview(subtitleLabel) + + contentView.addSubview(stackView) + + NSLayoutConstraint.activate([ + stackView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + stackView.topAnchor.constraint(equalTo: contentView.topAnchor), + stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + ]) + } +} diff --git a/Swift/MVVMDemo/iOSTest/View/PostListViewController.swift b/Swift/MVVMDemo/iOSTest/View/PostListViewController.swift new file mode 100644 index 0000000..c686599 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/PostListViewController.swift @@ -0,0 +1,70 @@ +// +// PostListViewController.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +final class PostListViewController: BaseContentListViewController>, PostCellViewModel> { + + required init(viewModel: PostListViewModel> = PostListViewModel()) { + super.init(viewModel: viewModel) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + title = "iOS Test from ChenYilong" + tableView.register(PostListTableViewCell.self) + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + switch viewModel.viewState.value { + + case .loading: + return EmptyViewTableViewCell() + + case .loaded: + let cell: PostListTableViewCell = tableView.dequeueReusableCell(for: indexPath) + let post = viewModel.contentForRowAt(at: indexPath.item) + cell.configure(with: post) + return cell + + default: + return UITableViewCell() + } + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + viewModel.numberOfRowsInSection() + } + + override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + switch viewModel.viewState.value { + + case .loading: + return 60 + + case .loaded: + return 60 + + default: + return 0 + } + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: false) + viewModel.didSelectRowAt(at: indexPath.item) + } + + override func cellPressed(content: Post) { + navigationController?.pushViewController(PostDetailViewController(model: content), animated: true) + } + +} diff --git a/Swift/MVVMDemo/iOSTest/View/UITableView+Extension.swift b/Swift/MVVMDemo/iOSTest/View/UITableView+Extension.swift new file mode 100644 index 0000000..a5c203b --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/View/UITableView+Extension.swift @@ -0,0 +1,23 @@ +// +// UITableView+Extension.swift +// iOSTest +// +// Created by chenyilong on 2023/7/28. +// + +import Foundation +import UIKit + +extension UITableView { + func register(_: T.Type) where T: ClassIdenfifiable { + register(T.self, forCellReuseIdentifier: T.reuseIdentifier) + } + + func dequeueReusableCell(for indexPath: IndexPath) -> T where T: ClassIdenfifiable { + guard let cell = dequeueReusableCell(withIdentifier: T.reuseIdentifier, for: indexPath) as? T else { + fatalError("Could not dequeue cell with identifier: \(T.reuseIdentifier)") + } + return cell + } + +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/CommentCellViewModel.swift b/Swift/MVVMDemo/iOSTest/ViewModel/CommentCellViewModel.swift new file mode 100644 index 0000000..5ebc28d --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/CommentCellViewModel.swift @@ -0,0 +1,20 @@ +// +// CommentCellViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class CommentCellViewModel: ContentCellViewModelProtocol { + typealias Content = Comment + + var cellPressed: (() -> Void)? + + var content: Content + + init(content: Content) { + self.content = content + } +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/CommentListViewModel.swift b/Swift/MVVMDemo/iOSTest/ViewModel/CommentListViewModel.swift new file mode 100644 index 0000000..e44140b --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/CommentListViewModel.swift @@ -0,0 +1,113 @@ +// +// PostListViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class CommentListViewModel: ContentListViewModelProtocol where N.R == CommentRequest { + + typealias Content = Comment + + typealias ContentCellViewModel = CommentCellViewModel + + var post: Post + + private var contentCellViewModels: [CommentCellViewModel] = Array() + + var viewState = Observable(value: .loading) + + var comments: Comments + + var contents: Observable<[Comment]> { + comments.entity + } + + var searchText = Observable(value: "") + + func setupSearchTextObserver() { + searchText.addObserver { [weak self] text in + self?.comments.filterEntityForSearchText(text) + } + } + + private var networking: N + + init(post: Post, networking: N = DefaultNetworking()) { + self.post = post + self.networking = networking + self.comments = Comments(post: post, networking: networking) + setupSearchTextObserver() + } + + func refreshTriggered() async { + do { + try await comments.loadEntity() + let contents = comments.originalContents + if contents.isEmpty { + self.viewState.value = .loading + } else { + self.viewState.value = .loaded + } + } catch { + // handle error + self.viewState.value = .error(string: error.localizedDescription) + } + } + + deinit { + viewState.removeObserver() + } + + // MARK: ContentListViewModelProtocol + + func contentCellViewModel(for content: Comment) -> CommentCellViewModel { + let commentCellViewModel = CommentCellViewModel(content: content) + return commentCellViewModel + } + + func searchTextChanged(_ searchTextValue: String) { + searchText.value = searchTextValue + } + + func contentsFetched(_ theContentCellViewModels: [CommentCellViewModel]) { + contentCellViewModels = theContentCellViewModels + } + + private func contentCellViewModel(at index: Int) -> CommentCellViewModel { + let contentViewModel = contentCellViewModels[index] + return contentViewModel + } + + func numberOfRowsInSection() -> Int { + switch viewState.value { + + case .loading: + return 1 + + case .loaded: + return contentCellViewModels.count + + default: + return 0 + } + } + + func contentForRowAt(at index: Int) -> Content { + contentCellViewModels[index].content + } + + func didSelectRowAt(at index: Int) { + switch viewState.value { + + case .loaded: + let postViewModel = contentCellViewModel(at: index) + postViewModel.cellPressed?() + + default: + break + } + } +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/ContentCellViewModelProtocol.swift b/Swift/MVVMDemo/iOSTest/ViewModel/ContentCellViewModelProtocol.swift new file mode 100644 index 0000000..65b613c --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/ContentCellViewModelProtocol.swift @@ -0,0 +1,14 @@ +// +// ContentCellViewModelProtocol.swift +// iOSTest +// +// Created by chenyilong on 2023/7/4. +// + +import Foundation + +protocol ContentCellViewModelProtocol: ViewModelClickable { + associatedtype Content + var content: Content { get set } + init(content: Content) +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/ContentListViewModelProtocol.swift b/Swift/MVVMDemo/iOSTest/ViewModel/ContentListViewModelProtocol.swift new file mode 100644 index 0000000..8cb7b93 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/ContentListViewModelProtocol.swift @@ -0,0 +1,36 @@ +// +// ContentListViewModelProtocol.swift +// iOSTest +// +// Created by chenyilong on 2023/7/3. +// + +enum ViewState { + case loading + case loaded + case error(string: String) +} + +protocol ContentListViewModelProtocol { + associatedtype Content + associatedtype ContentCellViewModel: ContentCellViewModelProtocol where ContentCellViewModel.Content == Content + + // MARK: Data bingding + var contents: Observable<[Content]> { get } + + // MARK: View State + var viewState: Observable { get } + + // MARK: commands + func refreshTriggered() async + func searchTextChanged(_ searchText: String) + func contentsFetched(_ contentCellViewModels: [ContentCellViewModel]) + + func numberOfRowsInSection() -> Int + func contentForRowAt(at index: Int) -> Content + func didSelectRowAt(at index: Int) + + // MARK: sub View Model + func contentCellViewModel(for content: Content) -> ContentCellViewModel + +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/PostCellViewModel.swift b/Swift/MVVMDemo/iOSTest/ViewModel/PostCellViewModel.swift new file mode 100644 index 0000000..54e274e --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/PostCellViewModel.swift @@ -0,0 +1,18 @@ +// +// PostCellViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class PostCellViewModel: ContentCellViewModelProtocol { + var cellPressed: (() -> Void)? + var content: Post + + init(content: Post) { + self.content = content + } +} + diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/PostListViewModel.swift b/Swift/MVVMDemo/iOSTest/ViewModel/PostListViewModel.swift new file mode 100644 index 0000000..2dbff77 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/PostListViewModel.swift @@ -0,0 +1,110 @@ +// +// PostListViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class PostListViewModel: ContentListViewModelProtocol where N.R == PostRequest { + typealias Content = Post + + private var contentCellViewModels: [PostCellViewModel] = Array() + var posts: Posts + + var contents: Observable<[Content]> { + posts.entity + } + + var viewState = Observable(value: .loading) + var searchText = Observable(value: "") + + private var networking: N + + init(networking: N = DefaultNetworking()) { + self.networking = networking + self.posts = Posts(networking: networking) + setupSearchTextObserver() + } + + func setupSearchTextObserver() { + searchText.addObserver { [weak self] text in + self?.posts.filterEntityForSearchText(text) + } + } + + func setupAllPosts() { + posts.setupAllContents() + } + + func refreshTriggered() async { + do { + viewState.value = .loading + try await self.posts.loadEntity() + let contents = self.posts.originalContents + if contents.isEmpty { + self.viewState.value = .loading + } else { + self.viewState.value = .loaded + } + } catch { + // handle error + self.viewState.value = .error(string: error.localizedDescription) + } + } + + deinit { + viewState.removeObserver() + } + + // MARK: ContentListViewModelProtocol + + func searchTextChanged(_ searchTextValue: String) { + searchText.value = searchTextValue + } + + func contentsFetched(_ theContentCellViewModels: [PostCellViewModel]) { + contentCellViewModels = theContentCellViewModels + } + + func contentCellViewModel(for post: Content) -> PostCellViewModel { + let postCellViewModel = PostCellViewModel(content: post) + return postCellViewModel + } + + private func contentCellViewModel(at index: Int) -> PostCellViewModel { + let contentViewModel = contentCellViewModels[index] + return contentViewModel + } + + func numberOfRowsInSection() -> Int { + switch viewState.value { + + case .loading: + return 1 + + case .loaded: + return contentCellViewModels.count + + default: + return 0 + } + } + + func contentForRowAt(at index: Int) -> Content { + contentCellViewModels[index].content + } + + func didSelectRowAt(at index: Int) { + switch viewState.value { + + case .loaded: + let postViewModel = contentCellViewModel(at: index) + postViewModel.cellPressed?() + + default: + break + } + } +} diff --git a/Swift/MVVMDemo/iOSTest/ViewModel/RowViewModel.swift b/Swift/MVVMDemo/iOSTest/ViewModel/RowViewModel.swift new file mode 100755 index 0000000..a953a48 --- /dev/null +++ b/Swift/MVVMDemo/iOSTest/ViewModel/RowViewModel.swift @@ -0,0 +1,13 @@ +// +// RowViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +/// Conform this protocol to handles user press action +protocol ViewModelClickable { + var cellPressed: (()->Void)? { get set } +} diff --git a/Swift/MVVMDemo/iOSTestTests/MockURLProtocol.swift b/Swift/MVVMDemo/iOSTestTests/MockURLProtocol.swift new file mode 100644 index 0000000..29ae42d --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/MockURLProtocol.swift @@ -0,0 +1,53 @@ +// +// MockURLProtocol.swift +// iOSTestTests +// +// Created by chenyilong on 2023/7/2. +// + +import XCTest + +final class MockURLProtocol: URLProtocol { + static var requestHandler: ((URLRequest) throws -> (HTTPURLResponse, Data?, Error?))? + + override class func canInit(with request: URLRequest) -> Bool { + print("MockURLProtocol canInit called") + return true + } + + override class func canonicalRequest(for request: URLRequest) -> URLRequest { + request + } + + override func startLoading() { + print("MockURLProtocol startLoading called") + guard let handler = MockURLProtocol.requestHandler else { + let error = NSError(domain: "MockURLProtocol", code: 1, userInfo: [NSLocalizedDescriptionKey: "Request handler is missing"]) + client?.urlProtocol(self, didFailWithError: error) + return + } + + do { + let (response, data, error) = try handler(request) + + if let error = error { + client?.urlProtocol(self, didFailWithError: error) + return + } + + guard let responseData = data else { + let error = NSError(domain: "MockURLProtocol", code: 2, userInfo: [NSLocalizedDescriptionKey: "Data is missing"]) + client?.urlProtocol(self, didFailWithError: error) + return + } + + client?.urlProtocol(self, didReceive: response, cacheStoragePolicy: .notAllowed) + client?.urlProtocol(self, didLoad: responseData) + client?.urlProtocolDidFinishLoading(self) + } catch { + client?.urlProtocol(self, didFailWithError: error) + } + } + + override func stopLoading() {} +} diff --git a/Swift/MVVMDemo/iOSTestTests/emptyData.json b/Swift/MVVMDemo/iOSTestTests/emptyData.json new file mode 100644 index 0000000..0d4f101 --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/emptyData.json @@ -0,0 +1,2 @@ +[ +] diff --git a/Swift/MVVMDemo/iOSTestTests/errorData.json b/Swift/MVVMDemo/iOSTestTests/errorData.json new file mode 100644 index 0000000..c1577ca --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/errorData.json @@ -0,0 +1 @@ +error json data diff --git a/Swift/MVVMDemo/iOSTestTests/iOSTestTests.swift b/Swift/MVVMDemo/iOSTestTests/iOSTestTests.swift new file mode 100644 index 0000000..2f04300 --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/iOSTestTests.swift @@ -0,0 +1,637 @@ +// +// iOSTestTests.swift +// iOSTestTests +// +// Created by chenyilong on 2023/7/2. +// + +import XCTest +@testable import iOSTest + +final class iOSTestTests: XCTestCase { + var postNetworking: DefaultNetworking! + var commentNetworking: DefaultNetworking! + var homeRowViewModel: PostListViewModel>! + var detailVC: PostDetailViewController! + var post: Post! + var emptyData : Data! + var errorData : Data! + var rightPostData : Data! + var nilData : Data! + var rightCommentData : Data! + var urlSession: URLSession! + var commentRowViewModel: CommentListViewModel>! + var comment: Comment! + var viewController: PostListViewController! + var rootNavigationController: UINavigationController! + var timeoutForExpectationFulfilled: TimeInterval! + + override func setUpWithError() throws { + + timeoutForExpectationFulfilled = 60.0 + + post = Post(id: 1, userId: 1, title: "Test Title", body: "Test Body") // or fetch a post from API + + detailVC = PostDetailViewController(model: post) + detailVC.loadViewIfNeeded() // load the view hierarchy so you can test its elements + + // Set url session for mock networking + let configuration = URLSessionConfiguration.ephemeral + configuration.protocolClasses = [MockURLProtocol.self] + let urlSession = URLSession(configuration: configuration) + + postNetworking = DefaultNetworking(urlSession: urlSession) + commentNetworking = DefaultNetworking(urlSession: urlSession) + + // API Injected with custom url session for mocking + homeRowViewModel = PostListViewModel(networking: postNetworking) + + emptyData = try loadJson(filename: "emptyData") + errorData = try loadJson(filename: "errorData") + rightPostData = try loadJson(filename: "rightPostData") + rightCommentData = try loadJson(filename: "rightCommentData") + nilData = try loadJson(filename: "nilData") + + commentRowViewModel = CommentListViewModel(post: post, networking: commentNetworking) + comment = Comment(postId: 1, id: 1, name: "id labore ex et quam laborum", body: "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium", email: "Eliseo@gardner.biz") + + let window = UIWindow(frame: UIScreen.main.bounds) + viewController = PostListViewController() + viewController.loadViewIfNeeded() + + rootNavigationController = UINavigationController(rootViewController: viewController) + window.rootViewController = rootNavigationController + + window.makeKeyAndVisible() + RunLoop.current.run(until: Date()) + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + postNetworking = nil + commentNetworking = nil + homeRowViewModel = nil + post = nil + detailVC = nil + emptyData = nil + errorData = nil + rightPostData = nil + rightCommentData = nil + nilData = nil + commentRowViewModel = nil + comment = nil + viewController = nil + rootNavigationController = nil + } + + func loadJson(filename fileName: String) throws -> Data { + guard let pathString = Bundle(for: type(of: self)).path(forResource: fileName, ofType: "json") else { + fatalError("UnitTestData.json not found") + } + + guard let jsonString = try? String(contentsOfFile: pathString, encoding: .utf8) else { + fatalError("Unable to convert UnitTestData.json to String") + } + + guard let jsonData = jsonString.data(using: .utf8) else { + fatalError("Unable to convert UnitTestData.json to Data") + } + return jsonData + } + + // MARK: test Network Error for Posts request + func testFetchHomePostsContent() { + // Set mock data + + let mockData = rightPostData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Create an expectation for a background download task. + let expectation = XCTestExpectation(description: "Download contents from api") + Task { + do { + let postRequetResponse = try await postNetworking.request(request: PostRequest()) + let contents = postRequetResponse.posts + + // use contents here + XCTAssertFalse(contents.isEmpty, "Posts array should not be empty") + } catch { + // handle error + XCTFail("Error: \(error.localizedDescription)") + } + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchHomePostsContentEmptyData() throws { + + // Set mock data + let mockData = emptyData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + + Task { + do { + let postRequest = PostRequest() // ensure this is well-formed + let postRequestResponse = try await postNetworking.request(request: postRequest) + let contents = postRequestResponse.posts + // use contents here + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + } catch { + // handle error + XCTFail("Error: \(error.localizedDescription)") + } + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchHomePostsContentErrorData() throws { + // Set mock data + + let mockData = errorData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + Task { + do { + let postRequetResponse = try await postNetworking.request(request: PostRequest()) + let contents = postRequetResponse.posts + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + } catch { + XCTAssertNotNil(error, "Posts array should be error") + } + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchHomePostsContentRightData() throws { + + // Set mock data + + let mockData = rightPostData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + let errorTemp = NSError(domain:"", code:0, userInfo:nil) + return (HTTPURLResponse(), mockData, errorTemp) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + // Make mock network request to get result from local file + Task { + do { + let postRequetResponse = try await postNetworking.request(request: PostRequest()) + let contents = postRequetResponse.posts // use contents here + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + } catch { + // handle error + XCTAssertNotNil(error, "Posts array should be error") + } + expectation.fulfill() + } + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchHomePostsContentNilData() throws { + + // Set mock data + + let mockData : Data? = nilData + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + let errorTemp = NSError(domain:"", code:0, userInfo:nil) + return (HTTPURLResponse(), mockData, errorTemp) + } + + // Set expectation. Used to test async code. + // Make mock network request to get result from local file + let expectation = XCTestExpectation(description: "response") + Task { + do { + let postRequetResponse = try await postNetworking.request(request: PostRequest()) + let contents = postRequetResponse.posts + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + } catch { + // handle error + XCTAssertNotNil(error, "Posts array should be error") + } + expectation.fulfill() + } + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testPostDetailPress() { + clickPostDetail(post: self.post, detailVC: self.detailVC) + } + + func clickPostDetail(post: Post, detailVC :PostDetailViewController) { + let expectation = XCTestExpectation(description: "response") + DispatchQueue.main.async { + detailVC.loadViewIfNeeded() + if let viewController = self.viewController { + viewController.tableView(viewController.tableView ?? UITableView(), didSelectRowAt: IndexPath(row: 0, section: 0) + ) + + self.rootNavigationController.pushViewController(detailVC, animated: true) + XCTAssertEqual(detailVC.model.title, post.title) + XCTAssertEqual(detailVC.model.body, post.body) + expectation.fulfill() + + } + } + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testHomePostsContentFilter() { + + // Set mock data + + let mockData = rightPostData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Create an expectation for a background download task. + let expectation = XCTestExpectation(description: "Download contents from api") + + Task { + await homeRowViewModel.refreshTriggered() + switch homeRowViewModel.viewState.value { + + case .loading: + break + + case .loaded: + XCTAssertTrue(((homeRowViewModel.contents.value.isEmpty) == false), "Posts array should not be empty!") + + var filterString = String(describing: UInt8.max) + homeRowViewModel.posts.filterEntityForSearchText(filterString) + XCTAssertTrue(((homeRowViewModel.contents.value.isEmpty) == true), "Filter Posts array should not contain :" + filterString) + + homeRowViewModel.posts.resetFilters() + XCTAssertTrue(((homeRowViewModel.contents.value.isEmpty) == false), "Reset Posts array should not be empty") + + filterString = "s" + homeRowViewModel.posts.filterEntityForSearchText(filterString) + for post in homeRowViewModel.contents.value { + let isContain = post.title.lowercased().contains(filterString.lowercased()) + XCTAssertTrue(isContain == true, post.title.lowercased() + "Filter Posts array should contain:" + filterString) + } + + filterString = "" + homeRowViewModel.posts.filterEntityForSearchText(filterString) + XCTAssertTrue(((homeRowViewModel.contents.value.isEmpty) == false), "Reset Posts array should not be empty") + + let post : Post = (homeRowViewModel.contents.value[0]) + let detailVC = await PostDetailViewController(model: post) + + clickPostDetail(post: post, detailVC: detailVC) + break + + default: + break + } + + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testCommentsFilter() { + + // Set mock data + + let mockData = rightCommentData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + + // Create an expectation for a background download task. + let expectation = XCTestExpectation(description: "Download contents from api") + + Task { + await commentRowViewModel.refreshTriggered() + + switch commentRowViewModel.viewState.value { + + case .loading: + break + + case .loaded: + XCTAssertTrue(((commentRowViewModel.contents.value.isEmpty) == false), "Posts array should not be empty!") + + var filterString = String(describing: UInt8.max) + commentRowViewModel.comments.filterEntityForSearchText(filterString) + XCTAssertTrue(((commentRowViewModel.contents.value.isEmpty) == true), "Filter Posts array should not contain :" + filterString) + + commentRowViewModel.comments.resetFilters() + XCTAssertTrue(((commentRowViewModel.contents.value.isEmpty) == false), "Reset Posts array should not be empty") + + filterString = "s" + commentRowViewModel.comments.filterEntityForSearchText(filterString) + for comment in commentRowViewModel.contents.value { + let isContain = comment.body.lowercased().contains(filterString.lowercased()) + XCTAssertTrue(isContain == true, comment.body.lowercased() + "Filter Posts array should contain:" + filterString) + } + + filterString = "" + commentRowViewModel.comments.filterEntityForSearchText(filterString) + XCTAssertTrue(((commentRowViewModel.contents.value.isEmpty) == false), "Reset Posts array should not be empty") + break + default: + break + } + + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + // MARK: test Network Error for Comments request + + func testFetchCommentsContent() { + // Set mock data + let mockData = rightCommentData! + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + // Create an expectation for a background download task. + let expectation = XCTestExpectation(description: "Download contents from api") + Task { + do { + + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await commentNetworking.request(request: request) + let contents = response.comments + + XCTAssertFalse(contents.isEmpty, "Comments array should not be empty") + } catch { + XCTFail("Error: \(error.localizedDescription)") + } + expectation.fulfill() + } + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchCommentsContentEmptyData() throws { + + // Set mock data + let mockData = emptyData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + Task { + do { + + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await commentNetworking.request(request: request) + let contents = response.comments + + XCTAssertTrue(contents.isEmpty, "Comments array should be empty") + + } catch { + XCTFail("Error: \(error.localizedDescription)") + } + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + + func testFetchCommentsContentErrorData() throws { + // Set mock data + + let mockData = errorData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + return (HTTPURLResponse(), mockData, nil) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + Task { + do { + + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await commentNetworking.request(request: request) + let contents = response.comments + + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + + } catch { + XCTAssertNotNil(error, "Posts array should be error") + } + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchCommentsContentRightData() throws { + + // Set mock data + + let mockData = rightPostData! + + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + let errorTemp = NSError(domain:"", code:0, userInfo:nil) + return (HTTPURLResponse(), mockData, errorTemp) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + Task { + do { + + + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await commentNetworking.request(request: request) + let contents = response.comments + + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + + } catch { + + XCTAssertNotNil(error, "Posts array should be error") + } + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testFetchCommentsContentNilData() throws { + + // Set mock data + + let mockData : Data? = nilData + // Return data in mock request handler + MockURLProtocol.requestHandler = { request in + let errorTemp = NSError(domain:"", code:0, userInfo:nil) + return (HTTPURLResponse(), mockData, errorTemp) + } + + // Set expectation. Used to test async code. + let expectation = XCTestExpectation(description: "response") + + // Make mock network request to get result from local file + Task { + do { + + let request = CommentRequest(id: post.id) + let response: CommentResponse = try await commentNetworking.request(request: request) + let contents = response.comments + + XCTAssertTrue(contents.isEmpty, "Posts array should be empty") + + } catch { + XCTAssertNotNil(error, "Posts array should be error") + } + // Fulfill the expectation to indicate that the background task has finished successfully. + expectation.fulfill() + } + + // Wait until the expectation is fulfilled, with a timeout of seconds. + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testCommentListTableViewCell() throws { + + } + + + func testCommentsDetailViewController() throws { + let expectation = XCTestExpectation(description: "response") + + let detailVC = CommentDetailViewController(model: comment) + DispatchQueue.main.async { + detailVC.loadViewIfNeeded() + + if let viewController = self.viewController { + viewController.loadViewIfNeeded() + self.rootNavigationController.pushViewController(detailVC, animated: true) + XCTAssertEqual(detailVC.title, self.comment.name) + expectation.fulfill() + + } + } + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + + } + + func testCommentsListViewController() throws { + let expectation = XCTestExpectation(description: "response") + + let commentRowViewModel = CommentListViewModel>(post: post) + + let commentListViewController = CommentListViewController(viewModel: commentRowViewModel) + DispatchQueue.main.async { + commentListViewController.loadViewIfNeeded() + + if let viewController = self.viewController { + viewController.loadViewIfNeeded() + + self.rootNavigationController.pushViewController(commentListViewController, animated: true) + XCTAssertEqual(commentListViewController.title, "Comments") + // XCTAssertEqual(commentListViewController.viewModel.postId, self.comment.postId) + + commentListViewController.tableView(commentListViewController.tableView ?? UITableView(), didSelectRowAt: IndexPath(row: 0, section: 0)) + expectation.fulfill() + } + + } + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + + func testCommentCellViewModel() throws { + let commentCellViewModel = CommentCellViewModel(content: comment) + XCTAssertEqual(commentCellViewModel.content.id, comment.id) + } + + func testPostCellViewModel() throws { + let homePostCellViewModel = PostCellViewModel(content: post) + + XCTAssertEqual( homePostCellViewModel.content.id, post.id) + } + + func testObservable() throws { + let expectation = XCTestExpectation(description: "response") + var array = ["a"] + let contents = Observable<[String]>(value: []) + + contents.addObserver(fireNow: false) { contents in + XCTAssertEqual( contents[0] , array[0]) + XCTAssertEqual( contents[0] , "b") + + expectation.fulfill() + + } + array = ["b"] + contents.value = array + wait(for: [expectation], timeout: timeoutForExpectationFulfilled) + } + +} diff --git a/Swift/MVVMDemo/iOSTestTests/nilData.json b/Swift/MVVMDemo/iOSTestTests/nilData.json new file mode 100644 index 0000000..e69de29 diff --git a/Swift/MVVMDemo/iOSTestTests/rightCommentData.json b/Swift/MVVMDemo/iOSTestTests/rightCommentData.json new file mode 100644 index 0000000..de52670 --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/rightCommentData.json @@ -0,0 +1,37 @@ +[ + { + "postId": 1, + "id": 1, + "name": "id labore ex et quam laborum", + "email": "Eliseo@gardner.biz", + "body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium" + }, + { + "postId": 1, + "id": 2, + "name": "quo vero reiciendis velit similique earum", + "email": "Jayne_Kuhic@sydney.com", + "body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et" + }, + { + "postId": 1, + "id": 3, + "name": "odio adipisci rerum aut animi", + "email": "Nikita@garfield.biz", + "body": "quia molestiae reprehenderit quasi aspernatur\naut expedita occaecati aliquam eveniet laudantium\nomnis quibusdam delectus saepe quia accusamus maiores nam est\ncum et ducimus et vero voluptates excepturi deleniti ratione" + }, + { + "postId": 1, + "id": 4, + "name": "alias odio sit", + "email": "Lew@alysha.tv", + "body": "non et atque\noccaecati deserunt quas accusantium unde odit nobis qui voluptatem\nquia voluptas consequuntur itaque dolor\net qui rerum deleniti ut occaecati" + }, + { + "postId": 1, + "id": 5, + "name": "vero eaque aliquid doloribus et culpa", + "email": "Hayden@althea.biz", + "body": "harum non quasi et ratione\ntempore iure ex voluptates in ratione\nharum architecto fugit inventore cupiditate\nvoluptates magni quo et" + } +] diff --git a/Swift/MVVMDemo/iOSTestTests/rightPostData.json b/Swift/MVVMDemo/iOSTestTests/rightPostData.json new file mode 100644 index 0000000..63c056b --- /dev/null +++ b/Swift/MVVMDemo/iOSTestTests/rightPostData.json @@ -0,0 +1,602 @@ +[ + { + "userId": 1, + "id": 1, + "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", + "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto" + }, + { + "userId": 1, + "id": 2, + "title": "qui est esse", + "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla" + }, + { + "userId": 1, + "id": 3, + "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut", + "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut" + }, + { + "userId": 1, + "id": 4, + "title": "eum et est occaecati", + "body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit" + }, + { + "userId": 1, + "id": 5, + "title": "nesciunt quas odio", + "body": "repudiandae veniam quaerat sunt sed\nalias aut fugiat sit autem sed est\nvoluptatem omnis possimus esse voluptatibus quis\nest aut tenetur dolor neque" + }, + { + "userId": 1, + "id": 6, + "title": "dolorem eum magni eos aperiam quia", + "body": "ut aspernatur corporis harum nihil quis provident sequi\nmollitia nobis aliquid molestiae\nperspiciatis et ea nemo ab reprehenderit accusantium quas\nvoluptate dolores velit et doloremque molestiae" + }, + { + "userId": 1, + "id": 7, + "title": "magnam facilis autem", + "body": "dolore placeat quibusdam ea quo vitae\nmagni quis enim qui quis quo nemo aut saepe\nquidem repellat excepturi ut quia\nsunt ut sequi eos ea sed quas" + }, + { + "userId": 1, + "id": 8, + "title": "dolorem dolore est ipsam", + "body": "dignissimos aperiam dolorem qui eum\nfacilis quibusdam animi sint suscipit qui sint possimus cum\nquaerat magni maiores excepturi\nipsam ut commodi dolor voluptatum modi aut vitae" + }, + { + "userId": 1, + "id": 9, + "title": "nesciunt iure omnis dolorem tempora et accusantium", + "body": "consectetur animi nesciunt iure dolore\nenim quia ad\nveniam autem ut quam aut nobis\net est aut quod aut provident voluptas autem voluptas" + }, + { + "userId": 1, + "id": 10, + "title": "optio molestias id quia eum", + "body": "quo et expedita modi cum officia vel magni\ndoloribus qui repudiandae\nvero nisi sit\nquos veniam quod sed accusamus veritatis error" + }, + { + "userId": 2, + "id": 11, + "title": "et ea vero quia laudantium autem", + "body": "delectus reiciendis molestiae occaecati non minima eveniet qui voluptatibus\naccusamus in eum beatae sit\nvel qui neque voluptates ut commodi qui incidunt\nut animi commodi" + }, + { + "userId": 2, + "id": 12, + "title": "in quibusdam tempore odit est dolorem", + "body": "itaque id aut magnam\npraesentium quia et ea odit et ea voluptas et\nsapiente quia nihil amet occaecati quia id voluptatem\nincidunt ea est distinctio odio" + }, + { + "userId": 2, + "id": 13, + "title": "dolorum ut in voluptas mollitia et saepe quo animi", + "body": "aut dicta possimus sint mollitia voluptas commodi quo doloremque\niste corrupti reiciendis voluptatem eius rerum\nsit cumque quod eligendi laborum minima\nperferendis recusandae assumenda consectetur porro architecto ipsum ipsam" + }, + { + "userId": 2, + "id": 14, + "title": "voluptatem eligendi optio", + "body": "fuga et accusamus dolorum perferendis illo voluptas\nnon doloremque neque facere\nad qui dolorum molestiae beatae\nsed aut voluptas totam sit illum" + }, + { + "userId": 2, + "id": 15, + "title": "eveniet quod temporibus", + "body": "reprehenderit quos placeat\nvelit minima officia dolores impedit repudiandae molestiae nam\nvoluptas recusandae quis delectus\nofficiis harum fugiat vitae" + }, + { + "userId": 2, + "id": 16, + "title": "sint suscipit perspiciatis velit dolorum rerum ipsa laboriosam odio", + "body": "suscipit nam nisi quo aperiam aut\nasperiores eos fugit maiores voluptatibus quia\nvoluptatem quis ullam qui in alias quia est\nconsequatur magni mollitia accusamus ea nisi voluptate dicta" + }, + { + "userId": 2, + "id": 17, + "title": "fugit voluptas sed molestias voluptatem provident", + "body": "eos voluptas et aut odit natus earum\naspernatur fuga molestiae ullam\ndeserunt ratione qui eos\nqui nihil ratione nemo velit ut aut id quo" + }, + { + "userId": 2, + "id": 18, + "title": "voluptate et itaque vero tempora molestiae", + "body": "eveniet quo quis\nlaborum totam consequatur non dolor\nut et est repudiandae\nest voluptatem vel debitis et magnam" + }, + { + "userId": 2, + "id": 19, + "title": "adipisci placeat illum aut reiciendis qui", + "body": "illum quis cupiditate provident sit magnam\nea sed aut omnis\nveniam maiores ullam consequatur atque\nadipisci quo iste expedita sit quos voluptas" + }, + { + "userId": 2, + "id": 20, + "title": "doloribus ad provident suscipit at", + "body": "qui consequuntur ducimus possimus quisquam amet similique\nsuscipit porro ipsam amet\neos veritatis officiis exercitationem vel fugit aut necessitatibus totam\nomnis rerum consequatur expedita quidem cumque explicabo" + }, + { + "userId": 3, + "id": 21, + "title": "asperiores ea ipsam voluptatibus modi minima quia sint", + "body": "repellat aliquid praesentium dolorem quo\nsed totam minus non itaque\nnihil labore molestiae sunt dolor eveniet hic recusandae veniam\ntempora et tenetur expedita sunt" + }, + { + "userId": 3, + "id": 22, + "title": "dolor sint quo a velit explicabo quia nam", + "body": "eos qui et ipsum ipsam suscipit aut\nsed omnis non odio\nexpedita earum mollitia molestiae aut atque rem suscipit\nnam impedit esse" + }, + { + "userId": 3, + "id": 23, + "title": "maxime id vitae nihil numquam", + "body": "veritatis unde neque eligendi\nquae quod architecto quo neque vitae\nest illo sit tempora doloremque fugit quod\net et vel beatae sequi ullam sed tenetur perspiciatis" + }, + { + "userId": 3, + "id": 24, + "title": "autem hic labore sunt dolores incidunt", + "body": "enim et ex nulla\nomnis voluptas quia qui\nvoluptatem consequatur numquam aliquam sunt\ntotam recusandae id dignissimos aut sed asperiores deserunt" + }, + { + "userId": 3, + "id": 25, + "title": "rem alias distinctio quo quis", + "body": "ullam consequatur ut\nomnis quis sit vel consequuntur\nipsa eligendi ipsum molestiae et omnis error nostrum\nmolestiae illo tempore quia et distinctio" + }, + { + "userId": 3, + "id": 26, + "title": "est et quae odit qui non", + "body": "similique esse doloribus nihil accusamus\nomnis dolorem fuga consequuntur reprehenderit fugit recusandae temporibus\nperspiciatis cum ut laudantium\nomnis aut molestiae vel vero" + }, + { + "userId": 3, + "id": 27, + "title": "quasi id et eos tenetur aut quo autem", + "body": "eum sed dolores ipsam sint possimus debitis occaecati\ndebitis qui qui et\nut placeat enim earum aut odit facilis\nconsequatur suscipit necessitatibus rerum sed inventore temporibus consequatur" + }, + { + "userId": 3, + "id": 28, + "title": "delectus ullam et corporis nulla voluptas sequi", + "body": "non et quaerat ex quae ad maiores\nmaiores recusandae totam aut blanditiis mollitia quas illo\nut voluptatibus voluptatem\nsimilique nostrum eum" + }, + { + "userId": 3, + "id": 29, + "title": "iusto eius quod necessitatibus culpa ea", + "body": "odit magnam ut saepe sed non qui\ntempora atque nihil\naccusamus illum doloribus illo dolor\neligendi repudiandae odit magni similique sed cum maiores" + }, + { + "userId": 3, + "id": 30, + "title": "a quo magni similique perferendis", + "body": "alias dolor cumque\nimpedit blanditiis non eveniet odio maxime\nblanditiis amet eius quis tempora quia autem rem\na provident perspiciatis quia" + }, + { + "userId": 4, + "id": 31, + "title": "ullam ut quidem id aut vel consequuntur", + "body": "debitis eius sed quibusdam non quis consectetur vitae\nimpedit ut qui consequatur sed aut in\nquidem sit nostrum et maiores adipisci atque\nquaerat voluptatem adipisci repudiandae" + }, + { + "userId": 4, + "id": 32, + "title": "doloremque illum aliquid sunt", + "body": "deserunt eos nobis asperiores et hic\nest debitis repellat molestiae optio\nnihil ratione ut eos beatae quibusdam distinctio maiores\nearum voluptates et aut adipisci ea maiores voluptas maxime" + }, + { + "userId": 4, + "id": 33, + "title": "qui explicabo molestiae dolorem", + "body": "rerum ut et numquam laborum odit est sit\nid qui sint in\nquasi tenetur tempore aperiam et quaerat qui in\nrerum officiis sequi cumque quod" + }, + { + "userId": 4, + "id": 34, + "title": "magnam ut rerum iure", + "body": "ea velit perferendis earum ut voluptatem voluptate itaque iusto\ntotam pariatur in\nnemo voluptatem voluptatem autem magni tempora minima in\nest distinctio qui assumenda accusamus dignissimos officia nesciunt nobis" + }, + { + "userId": 4, + "id": 35, + "title": "id nihil consequatur molestias animi provident", + "body": "nisi error delectus possimus ut eligendi vitae\nplaceat eos harum cupiditate facilis reprehenderit voluptatem beatae\nmodi ducimus quo illum voluptas eligendi\net nobis quia fugit" + }, + { + "userId": 4, + "id": 36, + "title": "fuga nam accusamus voluptas reiciendis itaque", + "body": "ad mollitia et omnis minus architecto odit\nvoluptas doloremque maxime aut non ipsa qui alias veniam\nblanditiis culpa aut quia nihil cumque facere et occaecati\nqui aspernatur quia eaque ut aperiam inventore" + }, + { + "userId": 4, + "id": 37, + "title": "provident vel ut sit ratione est", + "body": "debitis et eaque non officia sed nesciunt pariatur vel\nvoluptatem iste vero et ea\nnumquam aut expedita ipsum nulla in\nvoluptates omnis consequatur aut enim officiis in quam qui" + }, + { + "userId": 4, + "id": 38, + "title": "explicabo et eos deleniti nostrum ab id repellendus", + "body": "animi esse sit aut sit nesciunt assumenda eum voluptas\nquia voluptatibus provident quia necessitatibus ea\nrerum repudiandae quia voluptatem delectus fugit aut id quia\nratione optio eos iusto veniam iure" + }, + { + "userId": 4, + "id": 39, + "title": "eos dolorem iste accusantium est eaque quam", + "body": "corporis rerum ducimus vel eum accusantium\nmaxime aspernatur a porro possimus iste omnis\nest in deleniti asperiores fuga aut\nvoluptas sapiente vel dolore minus voluptatem incidunt ex" + }, + { + "userId": 4, + "id": 40, + "title": "enim quo cumque", + "body": "ut voluptatum aliquid illo tenetur nemo sequi quo facilis\nipsum rem optio mollitia quas\nvoluptatem eum voluptas qui\nunde omnis voluptatem iure quasi maxime voluptas nam" + }, + { + "userId": 5, + "id": 41, + "title": "non est facere", + "body": "molestias id nostrum\nexcepturi molestiae dolore omnis repellendus quaerat saepe\nconsectetur iste quaerat tenetur asperiores accusamus ex ut\nnam quidem est ducimus sunt debitis saepe" + }, + { + "userId": 5, + "id": 42, + "title": "commodi ullam sint et excepturi error explicabo praesentium voluptas", + "body": "odio fugit voluptatum ducimus earum autem est incidunt voluptatem\nodit reiciendis aliquam sunt sequi nulla dolorem\nnon facere repellendus voluptates quia\nratione harum vitae ut" + }, + { + "userId": 5, + "id": 43, + "title": "eligendi iste nostrum consequuntur adipisci praesentium sit beatae perferendis", + "body": "similique fugit est\nillum et dolorum harum et voluptate eaque quidem\nexercitationem quos nam commodi possimus cum odio nihil nulla\ndolorum exercitationem magnam ex et a et distinctio debitis" + }, + { + "userId": 5, + "id": 44, + "title": "optio dolor molestias sit", + "body": "temporibus est consectetur dolore\net libero debitis vel velit laboriosam quia\nipsum quibusdam qui itaque fuga rem aut\nea et iure quam sed maxime ut distinctio quae" + }, + { + "userId": 5, + "id": 45, + "title": "ut numquam possimus omnis eius suscipit laudantium iure", + "body": "est natus reiciendis nihil possimus aut provident\nex et dolor\nrepellat pariatur est\nnobis rerum repellendus dolorem autem" + }, + { + "userId": 5, + "id": 46, + "title": "aut quo modi neque nostrum ducimus", + "body": "voluptatem quisquam iste\nvoluptatibus natus officiis facilis dolorem\nquis quas ipsam\nvel et voluptatum in aliquid" + }, + { + "userId": 5, + "id": 47, + "title": "quibusdam cumque rem aut deserunt", + "body": "voluptatem assumenda ut qui ut cupiditate aut impedit veniam\noccaecati nemo illum voluptatem laudantium\nmolestiae beatae rerum ea iure soluta nostrum\neligendi et voluptate" + }, + { + "userId": 5, + "id": 48, + "title": "ut voluptatem illum ea doloribus itaque eos", + "body": "voluptates quo voluptatem facilis iure occaecati\nvel assumenda rerum officia et\nillum perspiciatis ab deleniti\nlaudantium repellat ad ut et autem reprehenderit" + }, + { + "userId": 5, + "id": 49, + "title": "laborum non sunt aut ut assumenda perspiciatis voluptas", + "body": "inventore ab sint\nnatus fugit id nulla sequi architecto nihil quaerat\neos tenetur in in eum veritatis non\nquibusdam officiis aspernatur cumque aut commodi aut" + }, + { + "userId": 5, + "id": 50, + "title": "repellendus qui recusandae incidunt voluptates tenetur qui omnis exercitationem", + "body": "error suscipit maxime adipisci consequuntur recusandae\nvoluptas eligendi et est et voluptates\nquia distinctio ab amet quaerat molestiae et vitae\nadipisci impedit sequi nesciunt quis consectetur" + }, + { + "userId": 6, + "id": 51, + "title": "soluta aliquam aperiam consequatur illo quis voluptas", + "body": "sunt dolores aut doloribus\ndolore doloribus voluptates tempora et\ndoloremque et quo\ncum asperiores sit consectetur dolorem" + }, + { + "userId": 6, + "id": 52, + "title": "qui enim et consequuntur quia animi quis voluptate quibusdam", + "body": "iusto est quibusdam fuga quas quaerat molestias\na enim ut sit accusamus enim\ntemporibus iusto accusantium provident architecto\nsoluta esse reprehenderit qui laborum" + }, + { + "userId": 6, + "id": 53, + "title": "ut quo aut ducimus alias", + "body": "minima harum praesentium eum rerum illo dolore\nquasi exercitationem rerum nam\nporro quis neque quo\nconsequatur minus dolor quidem veritatis sunt non explicabo similique" + }, + { + "userId": 6, + "id": 54, + "title": "sit asperiores ipsam eveniet odio non quia", + "body": "totam corporis dignissimos\nvitae dolorem ut occaecati accusamus\nex velit deserunt\net exercitationem vero incidunt corrupti mollitia" + }, + { + "userId": 6, + "id": 55, + "title": "sit vel voluptatem et non libero", + "body": "debitis excepturi ea perferendis harum libero optio\neos accusamus cum fuga ut sapiente repudiandae\net ut incidunt omnis molestiae\nnihil ut eum odit" + }, + { + "userId": 6, + "id": 56, + "title": "qui et at rerum necessitatibus", + "body": "aut est omnis dolores\nneque rerum quod ea rerum velit pariatur beatae excepturi\net provident voluptas corrupti\ncorporis harum reprehenderit dolores eligendi" + }, + { + "userId": 6, + "id": 57, + "title": "sed ab est est", + "body": "at pariatur consequuntur earum quidem\nquo est laudantium soluta voluptatem\nqui ullam et est\net cum voluptas voluptatum repellat est" + }, + { + "userId": 6, + "id": 58, + "title": "voluptatum itaque dolores nisi et quasi", + "body": "veniam voluptatum quae adipisci id\net id quia eos ad et dolorem\naliquam quo nisi sunt eos impedit error\nad similique veniam" + }, + { + "userId": 6, + "id": 59, + "title": "qui commodi dolor at maiores et quis id accusantium", + "body": "perspiciatis et quam ea autem temporibus non voluptatibus qui\nbeatae a earum officia nesciunt dolores suscipit voluptas et\nanimi doloribus cum rerum quas et magni\net hic ut ut commodi expedita sunt" + }, + { + "userId": 6, + "id": 60, + "title": "consequatur placeat omnis quisquam quia reprehenderit fugit veritatis facere", + "body": "asperiores sunt ab assumenda cumque modi velit\nqui esse omnis\nvoluptate et fuga perferendis voluptas\nillo ratione amet aut et omnis" + }, + { + "userId": 7, + "id": 61, + "title": "voluptatem doloribus consectetur est ut ducimus", + "body": "ab nemo optio odio\ndelectus tenetur corporis similique nobis repellendus rerum omnis facilis\nvero blanditiis debitis in nesciunt doloribus dicta dolores\nmagnam minus velit" + }, + { + "userId": 7, + "id": 62, + "title": "beatae enim quia vel", + "body": "enim aspernatur illo distinctio quae praesentium\nbeatae alias amet delectus qui voluptate distinctio\nodit sint accusantium autem omnis\nquo molestiae omnis ea eveniet optio" + }, + { + "userId": 7, + "id": 63, + "title": "voluptas blanditiis repellendus animi ducimus error sapiente et suscipit", + "body": "enim adipisci aspernatur nemo\nnumquam omnis facere dolorem dolor ex quis temporibus incidunt\nab delectus culpa quo reprehenderit blanditiis asperiores\naccusantium ut quam in voluptatibus voluptas ipsam dicta" + }, + { + "userId": 7, + "id": 64, + "title": "et fugit quas eum in in aperiam quod", + "body": "id velit blanditiis\neum ea voluptatem\nmolestiae sint occaecati est eos perspiciatis\nincidunt a error provident eaque aut aut qui" + }, + { + "userId": 7, + "id": 65, + "title": "consequatur id enim sunt et et", + "body": "voluptatibus ex esse\nsint explicabo est aliquid cumque adipisci fuga repellat labore\nmolestiae corrupti ex saepe at asperiores et perferendis\nnatus id esse incidunt pariatur" + }, + { + "userId": 7, + "id": 66, + "title": "repudiandae ea animi iusto", + "body": "officia veritatis tenetur vero qui itaque\nsint non ratione\nsed et ut asperiores iusto eos molestiae nostrum\nveritatis quibusdam et nemo iusto saepe" + }, + { + "userId": 7, + "id": 67, + "title": "aliquid eos sed fuga est maxime repellendus", + "body": "reprehenderit id nostrum\nvoluptas doloremque pariatur sint et accusantium quia quod aspernatur\net fugiat amet\nnon sapiente et consequatur necessitatibus molestiae" + }, + { + "userId": 7, + "id": 68, + "title": "odio quis facere architecto reiciendis optio", + "body": "magnam molestiae perferendis quisquam\nqui cum reiciendis\nquaerat animi amet hic inventore\nea quia deleniti quidem saepe porro velit" + }, + { + "userId": 7, + "id": 69, + "title": "fugiat quod pariatur odit minima", + "body": "officiis error culpa consequatur modi asperiores et\ndolorum assumenda voluptas et vel qui aut vel rerum\nvoluptatum quisquam perspiciatis quia rerum consequatur totam quas\nsequi commodi repudiandae asperiores et saepe a" + }, + { + "userId": 7, + "id": 70, + "title": "voluptatem laborum magni", + "body": "sunt repellendus quae\nest asperiores aut deleniti esse accusamus repellendus quia aut\nquia dolorem unde\neum tempora esse dolore" + }, + { + "userId": 8, + "id": 71, + "title": "et iusto veniam et illum aut fuga", + "body": "occaecati a doloribus\niste saepe consectetur placeat eum voluptate dolorem et\nqui quo quia voluptas\nrerum ut id enim velit est perferendis" + }, + { + "userId": 8, + "id": 72, + "title": "sint hic doloribus consequatur eos non id", + "body": "quam occaecati qui deleniti consectetur\nconsequatur aut facere quas exercitationem aliquam hic voluptas\nneque id sunt ut aut accusamus\nsunt consectetur expedita inventore velit" + }, + { + "userId": 8, + "id": 73, + "title": "consequuntur deleniti eos quia temporibus ab aliquid at", + "body": "voluptatem cumque tenetur consequatur expedita ipsum nemo quia explicabo\naut eum minima consequatur\ntempore cumque quae est et\net in consequuntur voluptatem voluptates aut" + }, + { + "userId": 8, + "id": 74, + "title": "enim unde ratione doloribus quas enim ut sit sapiente", + "body": "odit qui et et necessitatibus sint veniam\nmollitia amet doloremque molestiae commodi similique magnam et quam\nblanditiis est itaque\nquo et tenetur ratione occaecati molestiae tempora" + }, + { + "userId": 8, + "id": 75, + "title": "dignissimos eum dolor ut enim et delectus in", + "body": "commodi non non omnis et voluptas sit\nautem aut nobis magnam et sapiente voluptatem\net laborum repellat qui delectus facilis temporibus\nrerum amet et nemo voluptate expedita adipisci error dolorem" + }, + { + "userId": 8, + "id": 76, + "title": "doloremque officiis ad et non perferendis", + "body": "ut animi facere\ntotam iusto tempore\nmolestiae eum aut et dolorem aperiam\nquaerat recusandae totam odio" + }, + { + "userId": 8, + "id": 77, + "title": "necessitatibus quasi exercitationem odio", + "body": "modi ut in nulla repudiandae dolorum nostrum eos\naut consequatur omnis\nut incidunt est omnis iste et quam\nvoluptates sapiente aliquam asperiores nobis amet corrupti repudiandae provident" + }, + { + "userId": 8, + "id": 78, + "title": "quam voluptatibus rerum veritatis", + "body": "nobis facilis odit tempore cupiditate quia\nassumenda doloribus rerum qui ea\nillum et qui totam\naut veniam repellendus" + }, + { + "userId": 8, + "id": 79, + "title": "pariatur consequatur quia magnam autem omnis non amet", + "body": "libero accusantium et et facere incidunt sit dolorem\nnon excepturi qui quia sed laudantium\nquisquam molestiae ducimus est\nofficiis esse molestiae iste et quos" + }, + { + "userId": 8, + "id": 80, + "title": "labore in ex et explicabo corporis aut quas", + "body": "ex quod dolorem ea eum iure qui provident amet\nquia qui facere excepturi et repudiandae\nasperiores molestias provident\nminus incidunt vero fugit rerum sint sunt excepturi provident" + }, + { + "userId": 9, + "id": 81, + "title": "tempora rem veritatis voluptas quo dolores vero", + "body": "facere qui nesciunt est voluptatum voluptatem nisi\nsequi eligendi necessitatibus ea at rerum itaque\nharum non ratione velit laboriosam quis consequuntur\nex officiis minima doloremque voluptas ut aut" + }, + { + "userId": 9, + "id": 82, + "title": "laudantium voluptate suscipit sunt enim enim", + "body": "ut libero sit aut totam inventore sunt\nporro sint qui sunt molestiae\nconsequatur cupiditate qui iste ducimus adipisci\ndolor enim assumenda soluta laboriosam amet iste delectus hic" + }, + { + "userId": 9, + "id": 83, + "title": "odit et voluptates doloribus alias odio et", + "body": "est molestiae facilis quis tempora numquam nihil qui\nvoluptate sapiente consequatur est qui\nnecessitatibus autem aut ipsa aperiam modi dolore numquam\nreprehenderit eius rem quibusdam" + }, + { + "userId": 9, + "id": 84, + "title": "optio ipsam molestias necessitatibus occaecati facilis veritatis dolores aut", + "body": "sint molestiae magni a et quos\neaque et quasi\nut rerum debitis similique veniam\nrecusandae dignissimos dolor incidunt consequatur odio" + }, + { + "userId": 9, + "id": 85, + "title": "dolore veritatis porro provident adipisci blanditiis et sunt", + "body": "similique sed nisi voluptas iusto omnis\nmollitia et quo\nassumenda suscipit officia magnam sint sed tempora\nenim provident pariatur praesentium atque animi amet ratione" + }, + { + "userId": 9, + "id": 86, + "title": "placeat quia et porro iste", + "body": "quasi excepturi consequatur iste autem temporibus sed molestiae beatae\net quaerat et esse ut\nvoluptatem occaecati et vel explicabo autem\nasperiores pariatur deserunt optio" + }, + { + "userId": 9, + "id": 87, + "title": "nostrum quis quasi placeat", + "body": "eos et molestiae\nnesciunt ut a\ndolores perspiciatis repellendus repellat aliquid\nmagnam sint rem ipsum est" + }, + { + "userId": 9, + "id": 88, + "title": "sapiente omnis fugit eos", + "body": "consequatur omnis est praesentium\nducimus non iste\nneque hic deserunt\nvoluptatibus veniam cum et rerum sed" + }, + { + "userId": 9, + "id": 89, + "title": "sint soluta et vel magnam aut ut sed qui", + "body": "repellat aut aperiam totam temporibus autem et\narchitecto magnam ut\nconsequatur qui cupiditate rerum quia soluta dignissimos nihil iure\ntempore quas est" + }, + { + "userId": 9, + "id": 90, + "title": "ad iusto omnis odit dolor voluptatibus", + "body": "minus omnis soluta quia\nqui sed adipisci voluptates illum ipsam voluptatem\neligendi officia ut in\neos soluta similique molestias praesentium blanditiis" + }, + { + "userId": 10, + "id": 91, + "title": "aut amet sed", + "body": "libero voluptate eveniet aperiam sed\nsunt placeat suscipit molestias\nsimilique fugit nam natus\nexpedita consequatur consequatur dolores quia eos et placeat" + }, + { + "userId": 10, + "id": 92, + "title": "ratione ex tenetur perferendis", + "body": "aut et excepturi dicta laudantium sint rerum nihil\nlaudantium et at\na neque minima officia et similique libero et\ncommodi voluptate qui" + }, + { + "userId": 10, + "id": 93, + "title": "beatae soluta recusandae", + "body": "dolorem quibusdam ducimus consequuntur dicta aut quo laboriosam\nvoluptatem quis enim recusandae ut sed sunt\nnostrum est odit totam\nsit error sed sunt eveniet provident qui nulla" + }, + { + "userId": 10, + "id": 94, + "title": "qui qui voluptates illo iste minima", + "body": "aspernatur expedita soluta quo ab ut similique\nexpedita dolores amet\nsed temporibus distinctio magnam saepe deleniti\nomnis facilis nam ipsum natus sint similique omnis" + }, + { + "userId": 10, + "id": 95, + "title": "id minus libero illum nam ad officiis", + "body": "earum voluptatem facere provident blanditiis velit laboriosam\npariatur accusamus odio saepe\ncumque dolor qui a dicta ab doloribus consequatur omnis\ncorporis cupiditate eaque assumenda ad nesciunt" + }, + { + "userId": 10, + "id": 96, + "title": "quaerat velit veniam amet cupiditate aut numquam ut sequi", + "body": "in non odio excepturi sint eum\nlabore voluptates vitae quia qui et\ninventore itaque rerum\nveniam non exercitationem delectus aut" + }, + { + "userId": 10, + "id": 97, + "title": "quas fugiat ut perspiciatis vero provident", + "body": "eum non blanditiis soluta porro quibusdam voluptas\nvel voluptatem qui placeat dolores qui velit aut\nvel inventore aut cumque culpa explicabo aliquid at\nperspiciatis est et voluptatem dignissimos dolor itaque sit nam" + }, + { + "userId": 10, + "id": 98, + "title": "laboriosam dolor voluptates", + "body": "doloremque ex facilis sit sint culpa\nsoluta assumenda eligendi non ut eius\nsequi ducimus vel quasi\nveritatis est dolores" + }, + { + "userId": 10, + "id": 99, + "title": "temporibus sit alias delectus eligendi possimus magni", + "body": "quo deleniti praesentium dicta non quod\naut est molestias\nmolestias et officia quis nihil\nitaque dolorem quia" + }, + { + "userId": 10, + "id": 100, + "title": "at nam consequatur ea labore ea harum", + "body": "cupiditate quo est a modi nesciunt soluta\nipsa voluptas error itaque dicta in\nautem qui minus magnam et distinctio eum\naccusamus ratione error aut" + } +] diff --git a/Swift/MVVMDemo/iOSTestUITests/iOSTestUITests.swift b/Swift/MVVMDemo/iOSTestUITests/iOSTestUITests.swift new file mode 100644 index 0000000..18c12f6 --- /dev/null +++ b/Swift/MVVMDemo/iOSTestUITests/iOSTestUITests.swift @@ -0,0 +1,42 @@ +// +// iOSTestUITests.swift +// iOSTestUITests +// +// Created by chenyilong on 2023/7/2. +// + +import XCTest +@testable import iOSTest + +final class iOSTestUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/Swift/MVVMDemo/iOSTestUITests/iOSTestUITestsLaunchTests.swift b/Swift/MVVMDemo/iOSTestUITests/iOSTestUITestsLaunchTests.swift new file mode 100644 index 0000000..1dc8914 --- /dev/null +++ b/Swift/MVVMDemo/iOSTestUITests/iOSTestUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// iOSTestUITestsLaunchTests.swift +// iOSTestUITests +// +// Created by chenyilong on 2023/7/2. +// + +import XCTest + +final class iOSTestUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/Swift/MVVMDemo/preview.gif b/Swift/MVVMDemo/preview.gif new file mode 100644 index 0000000..a3e58ee Binary files /dev/null and b/Swift/MVVMDemo/preview.gif differ diff --git a/Swift/MVVMTest/README.md b/Swift/MVVMTest/README.md new file mode 100644 index 0000000..a3722de --- /dev/null +++ b/Swift/MVVMTest/README.md @@ -0,0 +1,30 @@ +## Welcome to the iOS Coding Test! + +# iOS +Create a simple application with the list of orders from viewModel and display them in a list. When a user selects a order they will be shown a second screen that will display a more detailed view of the order with view of products. + +We have given you some code over here to start with. Please clone/fork this repository. + + +## Specification +- Consume the orders data from the viewModel +- Display data in a sorted list +- Open a detailed view when user selects a list item + +## Commits +Please commit frequently to communicate your throughts while working on this assignment. + +## What is valued +- Best practice design patterns +- Clean Code + +## Nice to have (If you have time) +- Unit and UI Tests +- Calculate how much GST was paid on each order. GST is 15%. It is up to you to choose the most appropriate place to display GST + +## Duration +Try not to spend more than 4 hours on this. You are not necessarily expected to do everything in this assignment because of the short duration. + +## Tech +- Native iOS frameworks only, Swift or Objcetive-C (no Flutter sorry) +- Use whatever libraries you are comfortable with diff --git a/Swift/MVVMTest/iOSTest.xcodeproj/project.pbxproj b/Swift/MVVMTest/iOSTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..d2a8d3e --- /dev/null +++ b/Swift/MVVMTest/iOSTest.xcodeproj/project.pbxproj @@ -0,0 +1,675 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 1675F2BD273B622B009E2871 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2BC273B622B009E2871 /* AppDelegate.swift */; }; + 1675F2BF273B622B009E2871 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2BE273B622B009E2871 /* SceneDelegate.swift */; }; + 1675F2C1273B622B009E2871 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2C0273B622B009E2871 /* ViewController.swift */; }; + 1675F2C4273B622B009E2871 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1675F2C2273B622B009E2871 /* Main.storyboard */; }; + 1675F2C6273B622F009E2871 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1675F2C5273B622F009E2871 /* Assets.xcassets */; }; + 1675F2C9273B622F009E2871 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1675F2C7273B622F009E2871 /* LaunchScreen.storyboard */; }; + 1675F2D4273B622F009E2871 /* iOSTestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2D3273B622F009E2871 /* iOSTestTests.swift */; }; + 1675F2DE273B622F009E2871 /* iOSTestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2DD273B622F009E2871 /* iOSTestUITests.swift */; }; + 1675F2E0273B622F009E2871 /* iOSTestUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2DF273B622F009E2871 /* iOSTestUITestsLaunchTests.swift */; }; + 1675F2ED273B62EC009E2871 /* Order.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2EC273B62EC009E2871 /* Order.swift */; }; + 1675F2EF273B6357009E2871 /* Product.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2EE273B6357009E2871 /* Product.swift */; }; + 1675F2F1273B63ED009E2871 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2F0273B63ED009E2871 /* ViewModel.swift */; }; + 1675F2F3273B6434009E2871 /* RowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2F2273B6434009E2871 /* RowViewModel.swift */; }; + 1675F2F5273B647E009E2871 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1675F2F4273B647E009E2871 /* Observable.swift */; }; + 9A8FC47B288800F400A436D5 /* OrderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8FC479288800F400A436D5 /* OrderCell.swift */; }; + 9A8FC47C288800F400A436D5 /* OrderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A8FC47A288800F400A436D5 /* OrderCell.xib */; }; + 9A8FC48028881FDE00A436D5 /* OrderListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8FC47D28881FDE00A436D5 /* OrderListCell.swift */; }; + 9A8FC48128881FDE00A436D5 /* OrderListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9A8FC47E28881FDE00A436D5 /* OrderListCell.xib */; }; + 9A8FC48228881FDE00A436D5 /* OrderListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A8FC47F28881FDE00A436D5 /* OrderListViewController.swift */; }; + 9AFC4E4B2A5D94E800F0B76C /* OrderCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AFC4E4A2A5D94E800F0B76C /* OrderCellViewModel.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 1675F2D0273B622F009E2871 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1675F2B1273B622B009E2871 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1675F2B8273B622B009E2871; + remoteInfo = iOSTest; + }; + 1675F2DA273B622F009E2871 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1675F2B1273B622B009E2871 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1675F2B8273B622B009E2871; + remoteInfo = iOSTest; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1675F2B9273B622B009E2871 /* iOSTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iOSTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 1675F2BC273B622B009E2871 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1675F2BE273B622B009E2871 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 1675F2C0273B622B009E2871 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 1675F2C3273B622B009E2871 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 1675F2C5273B622F009E2871 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1675F2C8273B622F009E2871 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 1675F2CA273B622F009E2871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1675F2CF273B622F009E2871 /* iOSTestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTestTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 1675F2D3273B622F009E2871 /* iOSTestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestTests.swift; sourceTree = ""; }; + 1675F2D9273B622F009E2871 /* iOSTestUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iOSTestUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 1675F2DD273B622F009E2871 /* iOSTestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestUITests.swift; sourceTree = ""; }; + 1675F2DF273B622F009E2871 /* iOSTestUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSTestUITestsLaunchTests.swift; sourceTree = ""; }; + 1675F2EC273B62EC009E2871 /* Order.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Order.swift; sourceTree = ""; }; + 1675F2EE273B6357009E2871 /* Product.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Product.swift; sourceTree = ""; }; + 1675F2F0273B63ED009E2871 /* ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModel.swift; sourceTree = ""; }; + 1675F2F2273B6434009E2871 /* RowViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RowViewModel.swift; sourceTree = ""; }; + 1675F2F4273B647E009E2871 /* Observable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; + 9A8FC479288800F400A436D5 /* OrderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderCell.swift; sourceTree = ""; }; + 9A8FC47A288800F400A436D5 /* OrderCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = OrderCell.xib; sourceTree = ""; }; + 9A8FC47D28881FDE00A436D5 /* OrderListCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderListCell.swift; sourceTree = ""; }; + 9A8FC47E28881FDE00A436D5 /* OrderListCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = OrderListCell.xib; sourceTree = ""; }; + 9A8FC47F28881FDE00A436D5 /* OrderListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrderListViewController.swift; sourceTree = ""; }; + 9AFC4E4A2A5D94E800F0B76C /* OrderCellViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrderCellViewModel.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1675F2B6273B622B009E2871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2CC273B622F009E2871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2D6273B622F009E2871 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1675F2B0273B622B009E2871 = { + isa = PBXGroup; + children = ( + 1675F2BB273B622B009E2871 /* iOSTest */, + 1675F2D2273B622F009E2871 /* iOSTestTests */, + 1675F2DC273B622F009E2871 /* iOSTestUITests */, + 1675F2BA273B622B009E2871 /* Products */, + ); + sourceTree = ""; + }; + 1675F2BA273B622B009E2871 /* Products */ = { + isa = PBXGroup; + children = ( + 1675F2B9273B622B009E2871 /* iOSTest.app */, + 1675F2CF273B622F009E2871 /* iOSTestTests.xctest */, + 1675F2D9273B622F009E2871 /* iOSTestUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 1675F2BB273B622B009E2871 /* iOSTest */ = { + isa = PBXGroup; + children = ( + 1675F2BC273B622B009E2871 /* AppDelegate.swift */, + 1675F2BE273B622B009E2871 /* SceneDelegate.swift */, + 1675F2C0273B622B009E2871 /* ViewController.swift */, + 1675F2F0273B63ED009E2871 /* ViewModel.swift */, + 1675F2F2273B6434009E2871 /* RowViewModel.swift */, + 9AFC4E4A2A5D94E800F0B76C /* OrderCellViewModel.swift */, + 1675F2F4273B647E009E2871 /* Observable.swift */, + 1675F2EC273B62EC009E2871 /* Order.swift */, + 1675F2EE273B6357009E2871 /* Product.swift */, + 1675F2C2273B622B009E2871 /* Main.storyboard */, + 1675F2C5273B622F009E2871 /* Assets.xcassets */, + 9A8FC479288800F400A436D5 /* OrderCell.swift */, + 9A8FC47A288800F400A436D5 /* OrderCell.xib */, + 9A8FC47D28881FDE00A436D5 /* OrderListCell.swift */, + 9A8FC47E28881FDE00A436D5 /* OrderListCell.xib */, + 9A8FC47F28881FDE00A436D5 /* OrderListViewController.swift */, + 1675F2C7273B622F009E2871 /* LaunchScreen.storyboard */, + 1675F2CA273B622F009E2871 /* Info.plist */, + ); + path = iOSTest; + sourceTree = ""; + }; + 1675F2D2273B622F009E2871 /* iOSTestTests */ = { + isa = PBXGroup; + children = ( + 1675F2D3273B622F009E2871 /* iOSTestTests.swift */, + ); + path = iOSTestTests; + sourceTree = ""; + }; + 1675F2DC273B622F009E2871 /* iOSTestUITests */ = { + isa = PBXGroup; + children = ( + 1675F2DD273B622F009E2871 /* iOSTestUITests.swift */, + 1675F2DF273B622F009E2871 /* iOSTestUITestsLaunchTests.swift */, + ); + path = iOSTestUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1675F2B8273B622B009E2871 /* iOSTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1675F2E3273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTest" */; + buildPhases = ( + 1675F2B5273B622B009E2871 /* Sources */, + 1675F2B6273B622B009E2871 /* Frameworks */, + 1675F2B7273B622B009E2871 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iOSTest; + productName = iOSTest; + productReference = 1675F2B9273B622B009E2871 /* iOSTest.app */; + productType = "com.apple.product-type.application"; + }; + 1675F2CE273B622F009E2871 /* iOSTestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1675F2E6273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTestTests" */; + buildPhases = ( + 1675F2CB273B622F009E2871 /* Sources */, + 1675F2CC273B622F009E2871 /* Frameworks */, + 1675F2CD273B622F009E2871 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 1675F2D1273B622F009E2871 /* PBXTargetDependency */, + ); + name = iOSTestTests; + productName = iOSTestTests; + productReference = 1675F2CF273B622F009E2871 /* iOSTestTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 1675F2D8273B622F009E2871 /* iOSTestUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1675F2E9273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTestUITests" */; + buildPhases = ( + 1675F2D5273B622F009E2871 /* Sources */, + 1675F2D6273B622F009E2871 /* Frameworks */, + 1675F2D7273B622F009E2871 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 1675F2DB273B622F009E2871 /* PBXTargetDependency */, + ); + name = iOSTestUITests; + productName = iOSTestUITests; + productReference = 1675F2D9273B622F009E2871 /* iOSTestUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1675F2B1273B622B009E2871 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1310; + LastUpgradeCheck = 1310; + TargetAttributes = { + 1675F2B8273B622B009E2871 = { + CreatedOnToolsVersion = 13.1; + }; + 1675F2CE273B622F009E2871 = { + CreatedOnToolsVersion = 13.1; + TestTargetID = 1675F2B8273B622B009E2871; + }; + 1675F2D8273B622F009E2871 = { + CreatedOnToolsVersion = 13.1; + TestTargetID = 1675F2B8273B622B009E2871; + }; + }; + }; + buildConfigurationList = 1675F2B4273B622B009E2871 /* Build configuration list for PBXProject "iOSTest" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1675F2B0273B622B009E2871; + productRefGroup = 1675F2BA273B622B009E2871 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1675F2B8273B622B009E2871 /* iOSTest */, + 1675F2CE273B622F009E2871 /* iOSTestTests */, + 1675F2D8273B622F009E2871 /* iOSTestUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1675F2B7273B622B009E2871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8FC48128881FDE00A436D5 /* OrderListCell.xib in Resources */, + 1675F2C9273B622F009E2871 /* LaunchScreen.storyboard in Resources */, + 1675F2C6273B622F009E2871 /* Assets.xcassets in Resources */, + 9A8FC47C288800F400A436D5 /* OrderCell.xib in Resources */, + 1675F2C4273B622B009E2871 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2CD273B622F009E2871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2D7273B622F009E2871 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1675F2B5273B622B009E2871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1675F2F5273B647E009E2871 /* Observable.swift in Sources */, + 1675F2C1273B622B009E2871 /* ViewController.swift in Sources */, + 1675F2BD273B622B009E2871 /* AppDelegate.swift in Sources */, + 9A8FC48228881FDE00A436D5 /* OrderListViewController.swift in Sources */, + 1675F2EF273B6357009E2871 /* Product.swift in Sources */, + 9A8FC47B288800F400A436D5 /* OrderCell.swift in Sources */, + 1675F2ED273B62EC009E2871 /* Order.swift in Sources */, + 1675F2F1273B63ED009E2871 /* ViewModel.swift in Sources */, + 1675F2BF273B622B009E2871 /* SceneDelegate.swift in Sources */, + 9A8FC48028881FDE00A436D5 /* OrderListCell.swift in Sources */, + 1675F2F3273B6434009E2871 /* RowViewModel.swift in Sources */, + 9AFC4E4B2A5D94E800F0B76C /* OrderCellViewModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2CB273B622F009E2871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1675F2D4273B622F009E2871 /* iOSTestTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1675F2D5273B622F009E2871 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1675F2E0273B622F009E2871 /* iOSTestUITestsLaunchTests.swift in Sources */, + 1675F2DE273B622F009E2871 /* iOSTestUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 1675F2D1273B622F009E2871 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1675F2B8273B622B009E2871 /* iOSTest */; + targetProxy = 1675F2D0273B622F009E2871 /* PBXContainerItemProxy */; + }; + 1675F2DB273B622F009E2871 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1675F2B8273B622B009E2871 /* iOSTest */; + targetProxy = 1675F2DA273B622F009E2871 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 1675F2C2273B622B009E2871 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1675F2C3273B622B009E2871 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 1675F2C7273B622F009E2871 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1675F2C8273B622F009E2871 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1675F2E1273B622F009E2871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 1675F2E2273B622F009E2871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1675F2E4273B622F009E2871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iOSTest/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1675F2E5273B622F009E2871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = iOSTest/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTest; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 1675F2E7273B622F009E2871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 92R2MCQ829; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTest.app/iOSTest"; + }; + name = Debug; + }; + 1675F2E8273B622F009E2871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 92R2MCQ829; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTestTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iOSTest.app/iOSTest"; + }; + name = Release; + }; + 1675F2EA273B622F009E2871 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 92R2MCQ829; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iOSTest; + }; + name = Debug; + }; + 1675F2EB273B622F009E2871 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 92R2MCQ829; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = nz.co.bidone.iOSTestUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = iOSTest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1675F2B4273B622B009E2871 /* Build configuration list for PBXProject "iOSTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1675F2E1273B622F009E2871 /* Debug */, + 1675F2E2273B622F009E2871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1675F2E3273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1675F2E4273B622F009E2871 /* Debug */, + 1675F2E5273B622F009E2871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1675F2E6273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1675F2E7273B622F009E2871 /* Debug */, + 1675F2E8273B622F009E2871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1675F2E9273B622F009E2871 /* Build configuration list for PBXNativeTarget "iOSTestUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1675F2EA273B622F009E2871 /* Debug */, + 1675F2EB273B622F009E2871 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1675F2B1273B622B009E2871 /* Project object */; +} diff --git a/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Swift/MVVMTest/iOSTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Swift/MVVMTest/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist b/Swift/MVVMTest/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..92ba303 --- /dev/null +++ b/Swift/MVVMTest/iOSTest.xcodeproj/xcuserdata/chenyilong.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + iOSTest.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Swift/MVVMTest/iOSTest/AppDelegate.swift b/Swift/MVVMTest/iOSTest/AppDelegate.swift new file mode 100644 index 0000000..fc80e92 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/AppDelegate.swift @@ -0,0 +1,32 @@ +// +// AppDelegate.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + @available(iOS 13.0, *) + func application(_: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options _: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + @available(iOS 13.0, *) + func application(_: UIApplication, didDiscardSceneSessions _: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } +} diff --git a/Swift/MVVMTest/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json b/Swift/MVVMTest/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMTest/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json b/Swift/MVVMTest/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMTest/iOSTest/Assets.xcassets/Contents.json b/Swift/MVVMTest/iOSTest/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/MVVMTest/iOSTest/Base.lproj/LaunchScreen.storyboard b/Swift/MVVMTest/iOSTest/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMTest/iOSTest/Base.lproj/Main.storyboard b/Swift/MVVMTest/iOSTest/Base.lproj/Main.storyboard new file mode 100644 index 0000000..fc64e9e --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Base.lproj/Main.storyboard @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMTest/iOSTest/Info.plist b/Swift/MVVMTest/iOSTest/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/Swift/MVVMTest/iOSTest/Observable.swift b/Swift/MVVMTest/iOSTest/Observable.swift new file mode 100644 index 0000000..7ee0fc9 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Observable.swift @@ -0,0 +1,36 @@ +// +// Observable.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +class Observable { + var value: T { + didSet { + DispatchQueue.main.async { + self.valueChanged?(self.value) + } + } + } + + private var valueChanged: ((T) -> Void)? + + init(value: T) { + self.value = value + } + + /// Add closure as an observer and trigger the closure imeediately if fireNow = true + func addObserver(fireNow: Bool = true, _ onChange: ((T) -> Void)?) { + valueChanged = onChange + if fireNow { + onChange?(value) + } + } + + func removeObserver() { + valueChanged = nil + } +} diff --git a/Swift/MVVMTest/iOSTest/Order.swift b/Swift/MVVMTest/iOSTest/Order.swift new file mode 100644 index 0000000..1fb7ef8 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Order.swift @@ -0,0 +1,39 @@ +// +// Order.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +struct Order { + let id: Int + let description: String + let orderDate: String + let deliveryDate: String? + let products: [Product] + + // Returns total value of products in order + func getOrderTotal() -> Double { + // TODO: + return products.reduce(0.0) { total, product in + total + product.price * product.quantity + } + } + + // Returns total value of products in order + func getGSTTotal() -> Double { + return getOrderTotal() * 0.15 + } + + func descriptionString() -> String { + let priceTotal = getOrderTotal() + let priceTotalString = String(format: "%.1f", priceTotal) + + let GST = getGSTTotal() + let GSTTotalString = String(format: "%.1f", GST) + + return "price total:" + priceTotalString + " and GST:" + GSTTotalString + } +} diff --git a/Swift/MVVMTest/iOSTest/OrderCell.storyboard b/Swift/MVVMTest/iOSTest/OrderCell.storyboard new file mode 100644 index 0000000..085d0dd --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderCell.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMTest/iOSTest/OrderCell.swift b/Swift/MVVMTest/iOSTest/OrderCell.swift new file mode 100644 index 0000000..2bcbebf --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderCell.swift @@ -0,0 +1,43 @@ +// +// OrderCell.swift +// iOSTest +// +// Created by chenyilong on 2022/7/20. +// + +import UIKit + +class OrderCell: UITableViewCell { + @IBOutlet var descriptionLabel: UILabel! + @IBOutlet var brandLabel: UILabel! + @IBOutlet var priceLabel: UILabel! + @IBOutlet var quantityLabel: UILabel! + + var cellViewModel: OrderCellViewModel? { + didSet { + descriptionLabel.text = cellViewModel?.product.description + brandLabel.text = cellViewModel?.product.brand + let price: Double = cellViewModel?.product.price ?? 0 + priceLabel.text = String(format: "%.1f", price) + + let quantity: Double = cellViewModel?.product.quantity ?? 0 + quantityLabel.text = String(format: "%.1f", quantity) + } + } + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + initView() + } + + func initView() { + backgroundColor = UIColor(red: CGFloat(arc4random_uniform(256)) / 255.0, green: CGFloat(CGFloat(arc4random_uniform(256))) / 255.0, blue: CGFloat(arc4random_uniform(256)) / 255.0, alpha: 1.0) + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } +} diff --git a/Swift/MVVMTest/iOSTest/OrderCell.xib b/Swift/MVVMTest/iOSTest/OrderCell.xib new file mode 100644 index 0000000..5e54345 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderCell.xib @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMTest/iOSTest/OrderCellViewModel.swift b/Swift/MVVMTest/iOSTest/OrderCellViewModel.swift new file mode 100644 index 0000000..7174b61 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderCellViewModel.swift @@ -0,0 +1,14 @@ +// +// OrderCellViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/12. +// + +class OrderCellViewModel: RowViewModel, ViewModelClickable { + var cellPressed: (() -> Void)? + var product: Product + init(product: Product) { + self.product = product + } +} diff --git a/Swift/MVVMTest/iOSTest/OrderListCell.swift b/Swift/MVVMTest/iOSTest/OrderListCell.swift new file mode 100644 index 0000000..808186e --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderListCell.swift @@ -0,0 +1,59 @@ +// +// OrderCell.swift +// iOSTest +// +// Created by chenyilong on 2022/7/20. +// + +import UIKit + +class OrderListCellViewModel: RowViewModel, ViewModelClickable { + var cellPressed: (() -> Void)? + + var order: Order + + init(order: Order) { + self.order = order + } +} + +class OrderListCell: UITableViewCell { + @IBOutlet var descriptionLabel: UILabel! + + @IBOutlet var orderDateLabel: UILabel! + + @IBOutlet var deliveryDateLabel: UILabel! + + @IBOutlet var productsLabel: UILabel! + + var cellViewModel: OrderListCellViewModel? { + didSet { + descriptionLabel.text = cellViewModel?.order.description + orderDateLabel.text = cellViewModel?.order.orderDate + deliveryDateLabel.text = cellViewModel?.order.deliveryDate + + let productsList = cellViewModel?.order.products as? [Product] + var productsString = "" + for project in productsList ?? [] { + productsString.append("- " + project.description + "\n") + } + productsLabel.text = productsString + } + } + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + initView() + } + + func initView() { + backgroundColor = UIColor(red: CGFloat(arc4random_uniform(256)) / 255.0, green: CGFloat(CGFloat(arc4random_uniform(256))) / 255.0, blue: CGFloat(arc4random_uniform(256)) / 255.0, alpha: 1.0) + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } +} diff --git a/Swift/MVVMTest/iOSTest/OrderListCell.xib b/Swift/MVVMTest/iOSTest/OrderListCell.xib new file mode 100644 index 0000000..5ed88bb --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderListCell.xib @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/MVVMTest/iOSTest/OrderListViewController.swift b/Swift/MVVMTest/iOSTest/OrderListViewController.swift new file mode 100644 index 0000000..8f329d2 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/OrderListViewController.swift @@ -0,0 +1,134 @@ +// +// OrderListViewController.swift +// iOSTest +// +// Created by ChenYilong on 20/07/22. +// + +import UIKit + +class OrderListViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { + let viewModel: ViewModel = .init() + + lazy var loadingIndicator: UIActivityIndicatorView = { + let indicator = UIActivityIndicatorView(style: .gray) + indicator.translatesAutoresizingMaskIntoConstraints = false + indicator.hidesWhenStopped = true + self.view.addSubview(indicator) + NSLayoutConstraint.activate([ + indicator.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), + indicator.centerYAnchor.constraint(equalTo: self.view.centerYAnchor), + ]) + return indicator + }() + + lazy var tableView: UITableView = { + let tableView = UITableView() + tableView.delegate = self + tableView.dataSource = self + tableView.translatesAutoresizingMaskIntoConstraints = false + tableView.estimatedRowHeight = 80 + tableView.rowHeight = UITableView.automaticDimension + + view.addSubview(tableView) + NSLayoutConstraint(item: tableView, + attribute: .centerX, + relatedBy: .equal, + toItem: view, attribute: .centerX, + multiplier: 1.0, constant: 0.0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .leading, + relatedBy: .equal, + toItem: view, attribute: .leading, + multiplier: 1.0, constant: 0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .trailing, + relatedBy: .equal, toItem: view, + attribute: .trailing, + multiplier: 1.0, + constant: 0).isActive = true + NSLayoutConstraint(item: tableView, attribute: .top, + relatedBy: .equal, + toItem: view, + attribute: .top, + multiplier: 1.0, + constant: 0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .bottom, + relatedBy: .equal, toItem: view, + attribute: .bottom, + multiplier: 1.0, + constant: 0).isActive = true + + tableView.separatorStyle = .none + tableView.tableFooterView = UIView() + + // TODO: - tableView.backgroundColor = Custom color of your choice + tableView.backgroundColor = UIColor.white + return tableView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + initView() + initBinding() + } + + func initView() { + // TODO: - view.backgroundColor = Custom color of your choice + view.backgroundColor = UIColor.white + title = "YILONG CHEN's Demo" + let orderListCell = UINib(nibName: "OrderListCell", + bundle: nil) + tableView.register(orderListCell, forCellReuseIdentifier: "Cell") + } + + func initBinding() { + viewModel.orders.addObserver(fireNow: true) { [weak self] orders in + let sortedOrders = orders.sorted { $0.id < $1.id } + for order in sortedOrders { + let orderListCellViewModel = OrderListCellViewModel(order: order) + orderListCellViewModel.cellPressed = { + self?.cellPressed(order: order) + } + self?.viewModel.orderListCellViewModels.append(orderListCellViewModel) + } + self?.tableView.reloadData() + } + } + + // MARK: - UITableViewDataSource, UITableViewDelegate + + func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int { + return viewModel.orderListCellViewModels.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + if let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? OrderListCell { + let orderListCellViewModel = viewModel.orderListCellViewModels[indexPath.row] + cell.cellViewModel = orderListCellViewModel + print("order.descriptionString();", orderListCellViewModel.order.descriptionString()) + + return cell + } + + let cell = UITableViewCell() + return cell + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: false) + let orderListCellViewModel = viewModel.orderListCellViewModels[indexPath.row] + orderListCellViewModel.cellPressed?() + } + + func cellPressed(order: Order) { + let detailOrderViewController = ViewController() + let productsList = order.products + detailOrderViewController.viewModel.productsList = productsList + detailOrderViewController.view.backgroundColor = UIColor.white + detailOrderViewController.title = order.descriptionString() + navigationController?.pushViewController(detailOrderViewController, animated: true) + } +} diff --git a/Swift/MVVMTest/iOSTest/Product.swift b/Swift/MVVMTest/iOSTest/Product.swift new file mode 100644 index 0000000..7237b14 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/Product.swift @@ -0,0 +1,16 @@ +// +// Product.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +struct Product { + let productCode: Int + let description: String + let brand: String + let price: Double + let quantity: Double +} diff --git a/Swift/MVVMTest/iOSTest/RowViewModel.swift b/Swift/MVVMTest/iOSTest/RowViewModel.swift new file mode 100644 index 0000000..86539c4 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/RowViewModel.swift @@ -0,0 +1,15 @@ +// +// RowViewModel.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +protocol RowViewModel {} + +/// Conform this protocol to handles user press action +protocol ViewModelClickable { + var cellPressed: (() -> Void)? { get set } +} diff --git a/Swift/MVVMTest/iOSTest/SceneDelegate.swift b/Swift/MVVMTest/iOSTest/SceneDelegate.swift new file mode 100644 index 0000000..8ef44dd --- /dev/null +++ b/Swift/MVVMTest/iOSTest/SceneDelegate.swift @@ -0,0 +1,48 @@ +// +// SceneDelegate.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import UIKit + +@available(iOS 13.0, *) +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo _: UISceneSession, options _: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } +} diff --git a/Swift/MVVMTest/iOSTest/ViewController.swift b/Swift/MVVMTest/iOSTest/ViewController.swift new file mode 100644 index 0000000..f492ca4 --- /dev/null +++ b/Swift/MVVMTest/iOSTest/ViewController.swift @@ -0,0 +1,117 @@ +// +// ViewController.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import UIKit + +class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { + let viewModel: ViewModel = .init() + lazy var loadingIndicator: UIActivityIndicatorView = { + let indicator = UIActivityIndicatorView(style: .gray) + indicator.translatesAutoresizingMaskIntoConstraints = false + indicator.hidesWhenStopped = true + self.view.addSubview(indicator) + NSLayoutConstraint.activate([ + indicator.centerXAnchor.constraint(equalTo: self.view.centerXAnchor), + indicator.centerYAnchor.constraint(equalTo: self.view.centerYAnchor), + ]) + return indicator + }() + + lazy var tableView: UITableView = { + let tableView = UITableView() + tableView.delegate = self + tableView.dataSource = self + tableView.translatesAutoresizingMaskIntoConstraints = false + tableView.estimatedRowHeight = 80 + tableView.rowHeight = UITableView.automaticDimension + + view.addSubview(tableView) + NSLayoutConstraint(item: tableView, + attribute: .centerX, + relatedBy: .equal, + toItem: view, attribute: .centerX, + multiplier: 1.0, constant: 0.0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .leading, + relatedBy: .equal, + toItem: view, attribute: .leading, + multiplier: 1.0, constant: 0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .trailing, + relatedBy: .equal, toItem: view, + attribute: .trailing, + multiplier: 1.0, + constant: 0).isActive = true + NSLayoutConstraint(item: tableView, attribute: .top, + relatedBy: .equal, + toItem: view, + attribute: .top, + multiplier: 1.0, + constant: 0).isActive = true + NSLayoutConstraint(item: tableView, + attribute: .bottom, + relatedBy: .equal, toItem: view, + attribute: .bottom, + multiplier: 1.0, + constant: 0).isActive = true + + tableView.separatorStyle = .none + tableView.tableFooterView = UIView() + + // TODO: - tableView.backgroundColor = Custom color of your choice + tableView.backgroundColor = UIColor.white + return tableView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + initView() + initBinding() + } + + func initView() { + // TODO: - view.backgroundColor = Custom color of your choice + view.backgroundColor = UIColor.white + title = "YILONG CHEN's Demo" + let orderCell = UINib(nibName: "OrderCell", + bundle: nil) + tableView.register(orderCell, forCellReuseIdentifier: "Cell") + } + + func initBinding() { + viewModel.orders.addObserver(fireNow: false) { [weak self] _ in + self?.tableView.reloadData() + } + } + + // MARK: - UITableViewDataSource, UITableViewDelegate + + func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int { + return viewModel.productsList.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + if let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? OrderCell { + let product = viewModel.productsList[indexPath.row] + let orderCellViewModel = OrderCellViewModel(product: product) + cell.cellViewModel = orderCellViewModel + return cell + } + + let cell = UITableViewCell() + return cell + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: false) + let detailOrderViewController = UIViewController() + detailOrderViewController.view.backgroundColor = UIColor.white + detailOrderViewController.title = "detailOrderViewController" + navigationController?.pushViewController(detailOrderViewController, animated: true) + } +} diff --git a/Swift/MVVMTest/iOSTest/ViewModel.swift b/Swift/MVVMTest/iOSTest/ViewModel.swift new file mode 100644 index 0000000..62af09a --- /dev/null +++ b/Swift/MVVMTest/iOSTest/ViewModel.swift @@ -0,0 +1,83 @@ +// +// ViewModel.swift +// iOSTest +// +// Created by ChenYilong on 10/11/21. +// + +import Foundation + +class ViewModel: RowViewModel { + var orders = Observable<[Order]>(value: []) + var productsList: [Product] = [] + var orderListCellViewModels: [OrderListCellViewModel] = Array() + + init() { + let PRODUCT_1 = Product( + productCode: 136_341, + description: "Chicken Balls Garlic", + brand: "Caterer's Choice", + price: 15.47, + quantity: 2.0 + ) + let PRODUCT_2 = Product( + productCode: 172_488, + description: "Beef Rump G/Fed", + brand: "Meat", + price: 17.87, + quantity: 3.2 + ) + let PRODUCT_3 = Product( + productCode: 58220, + description: "Tomato Puree", + brand: "", + price: 8.28, + quantity: 1.0 + ) + let PRODUCT_4 = Product( + productCode: 183_968, + description: "Chips 10mm French Fries Straight Cut", + brand: "Jeffersons", + price: 26.10, + quantity: 1.0 + ) + let PRODUCT_5 = Product( + productCode: 64996, + description: "Chocolate Buttons Milk", + brand: "Caterers Choice", + price: 10.14, + quantity: 5.0 + ) + + orders = Observable<[Order]>(value: [ + Order( + id: 4937, + description: "Friday Order", + orderDate: "2020-09-25", + deliveryDate: "2020-09-26", + products: [PRODUCT_1, PRODUCT_3] + ), + Order( + id: 1804, + description: "Meats", + orderDate: "2020-08-11", + deliveryDate: "2020-08-12", + products: [PRODUCT_1, PRODUCT_3] + ), + Order( + id: 9639, + description: "Chocolate", + orderDate: "2020-11-02", + deliveryDate: "2020-11-03", + products: [PRODUCT_5] + ), + Order( + id: 2709, + description: "Big Order", + orderDate: "2020-06-09", + deliveryDate: "2020-06-10", + products: [PRODUCT_1, PRODUCT_2, PRODUCT_3, PRODUCT_4, PRODUCT_5] + ), + ]) + } +} diff --git a/Swift/MVVMTest/iOSTestTests/iOSTestTests.swift b/Swift/MVVMTest/iOSTestTests/iOSTestTests.swift new file mode 100644 index 0000000..c96003d --- /dev/null +++ b/Swift/MVVMTest/iOSTestTests/iOSTestTests.swift @@ -0,0 +1,84 @@ +// +// iOSTestTests.swift +// iOSTestTests +// +// Created by ChenYilong on 10/11/21. +// + +@testable import iOSTest +import XCTest + +class iOSTestTests: XCTestCase { + var orderListViewController: OrderListViewController! + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + let storyboard = UIStoryboard(name: "Main", bundle: nil) + let navController = storyboard.instantiateViewController(identifier: "NavigationController") as? UINavigationController + orderListViewController = navController?.viewControllers[0] as? OrderListViewController + orderListViewController.loadViewIfNeeded() + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + /*! + * Order( + id: 4937, + description: "Friday Order", + orderDate: "2020-09-25", + deliveryDate: "2020-09-26", + products: [PRODUCT_1, PRODUCT_3] + ), + Order( + id: 1804, + description: "Meats", + orderDate: "2020-08-11", + deliveryDate: "2020-08-12", + products: [PRODUCT_1, PRODUCT_3] + ), + Order( + id: 9639, + description: "Chocolate", + orderDate: "2020-11-02", + deliveryDate: "2020-11-03", + products: [PRODUCT_5] + ), + Order( + id: 2709, + description: "Big Order", + orderDate: "2020-06-09", + deliveryDate: "2020-06-10", + products: [PRODUCT_1, PRODUCT_2, PRODUCT_3, PRODUCT_4, PRODUCT_5] + ) + */ + func testGetOrderTotal() throws { + XCTAssertEqual(orderListViewController.viewModel.orders.value.count, 4) + + let orders = orderListViewController.viewModel.orders.value + XCTAssertEqual(orders[0].getOrderTotal(), 39.22) + XCTAssertEqual(orders[0].getGSTTotal(), 5.883) + + XCTAssertEqual(orders[1].getOrderTotal(), 39.22) + XCTAssertEqual(orders[1].getGSTTotal(), 5.883) + + XCTAssertEqual(orders[2].getOrderTotal(), 50.7) + XCTAssertEqual(orders[2].getGSTTotal(), 7.605) + + XCTAssertEqual(orders[3].getOrderTotal(), 173.204) + XCTAssertEqual(orders[3].getGSTTotal(), 25.9806) + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } +} diff --git a/Swift/MVVMTest/iOSTestUITests/iOSTestUITests.swift b/Swift/MVVMTest/iOSTestUITests/iOSTestUITests.swift new file mode 100644 index 0000000..f3774f9 --- /dev/null +++ b/Swift/MVVMTest/iOSTestUITests/iOSTestUITests.swift @@ -0,0 +1,41 @@ +// +// iOSTestUITests.swift +// iOSTestUITests +// +// Created by ChenYilong on 10/11/21. +// + +import XCTest + +class iOSTestUITests: XCTestCase { + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/Swift/MVVMTest/iOSTestUITests/iOSTestUITestsLaunchTests.swift b/Swift/MVVMTest/iOSTestUITests/iOSTestUITestsLaunchTests.swift new file mode 100644 index 0000000..a98b7c2 --- /dev/null +++ b/Swift/MVVMTest/iOSTestUITests/iOSTestUITestsLaunchTests.swift @@ -0,0 +1,31 @@ +// +// iOSTestUITestsLaunchTests.swift +// iOSTestUITests +// +// Created by ChenYilong on 10/11/21. +// + +import XCTest + +class iOSTestUITestsLaunchTests: XCTestCase { + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/Swift/Other/CleanSwiftObjC/CHANGELOG.md b/Swift/Other/CleanSwiftObjC/CHANGELOG.md new file mode 100644 index 0000000..6605dc7 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/CHANGELOG.md @@ -0,0 +1,67 @@ +# Change Log + +All notable changes to this project will be documented in this file + +## 3.0.2 + +- Fixed @testable import for project names containing spaces + +## 3.0.1 + +- Added example unit tests for the sample use case in: + - View controller + - Interactor + - Presenter + +## 3.0.0 + +- Updated for the latest Xcode 8.3.3 and Xcode 9.0 beta +- Updated to work with Swift 3 and Swift 4 +- Improved routing whether you use segues or not +- Improved data passing using the all new data store protocol +- Separated the routing process into two phases: navigation and data passing, with a clean interface +- Removed the need for configurator in favor of cleaner setup +- Combined input and output protocols to remove duplication +- Renamed protocols with better names +- Swiftier models with nested enums and structs +- Use optionals to prevent crash in the VIP cycle when the scene is no longer in memory +- Works whether you use storyboards to build your UI or not +- View controller class names are now recognized when specifying class names in storyboards + +## 2.0.1 + +- Updated unit tests for Swift 3 + +## 2.0.0 + +- Nest model structs instead of using underscore +- Swift 3 compatible + +## 1.1.2 + +- Added @testable import to unit test files +- Fixed bug to get main bundle in view controller unit test setup + +## 1.1.1 + +- Added missing router input protocol conformance to router template + +## 1.1.0 + +- Added Unit Tests template to generate XCTest unit test files for: + - View controller + - Interactor + - Presenter + - Worker + +## 1.0.0 + +- Added the Scene template to generate the following Clean Swift components: + - View Controller + - Interactor + - Presenter + - Router + - Worker + - Models + - Configurator +- These components can also be generated individually diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.h new file mode 100644 index 0000000..45fdf17 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.h @@ -0,0 +1,27 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___PresentationLogic; + +@protocol ___VARIABLE_sceneName___BusinessLogic +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request; +@end + +@protocol ___VARIABLE_sceneName___DataStore +//@property (strong, nonatomic) NSString *name; +@end + +@interface ___VARIABLE_sceneName___Interactor: NSObject <___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore> +@property (strong, nonatomic) id<___VARIABLE_sceneName___PresentationLogic> presenter; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.m new file mode 100644 index 0000000..7123129 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Objective-C/___FILEBASENAME___Interactor.m @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Interactor () +@property (strong, nonatomic) ___VARIABLE_sceneName___Worker *worker; +@end + +@implementation ___VARIABLE_sceneName___Interactor + +//@synthesize name = _name; + +#pragma mark Do something + +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request +{ + self.worker = [[___VARIABLE_sceneName___Worker alloc] init]; + [self.worker doSomeWork]; + + ___VARIABLE_sceneName___DoSomethingResponse *response = [[___VARIABLE_sceneName___DoSomethingResponse alloc] init]; + [self.presenter presentSomething:response]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Swift/___FILEBASENAME___Interactor.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Swift/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..838f025 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/Swift/___FILEBASENAME___Interactor.swift @@ -0,0 +1,41 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___BusinessLogic +{ + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) +} + +protocol ___VARIABLE_sceneName___DataStore +{ + //var name: String { get set } +} + +class ___VARIABLE_sceneName___Interactor: ___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore +{ + var presenter: ___VARIABLE_sceneName___PresentationLogic? + var worker: ___VARIABLE_sceneName___Worker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) + { + worker = ___VARIABLE_sceneName___Worker() + worker?.doSomeWork() + + let response = ___VARIABLE_sceneName___.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..c5a5a6c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Interactor.xctemplate/TemplateInfo.plist @@ -0,0 +1,97 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new interactor using Uncle Bob's clean architecture. Your business logic goes here. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Interactor + Description + The interactor name + Identifier + interactorName + Name + Interactor Name: + Required + + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 2 + Summary + This generates a new interactor using Uncle Bob's clean architecture. Your business logic goes here. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.h new file mode 100644 index 0000000..87a2dff --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.h @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +#pragma mark Use cases + +@interface ___VARIABLE_sceneName___DoSomethingRequest: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingResponse: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingViewModel: NSObject +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.m new file mode 100644 index 0000000..61947ce --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Objective-C/___FILEBASENAME___Models.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#pragma mark Use cases + +#import "___VARIABLE_sceneName___Models.h" + +@implementation ___VARIABLE_sceneName___DoSomethingRequest +@end + +@implementation ___VARIABLE_sceneName___DoSomethingResponse +@end + +@implementation ___VARIABLE_sceneName___DoSomethingViewModel +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Swift/___FILEBASENAME___Models.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Swift/___FILEBASENAME___Models.swift new file mode 100644 index 0000000..368d390 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/Swift/___FILEBASENAME___Models.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum ___VARIABLE_sceneName___ +{ + // MARK: Use cases + + enum Something + { + struct Request + { + } + struct Response + { + } + struct ViewModel + { + } + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..61cd6b3 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Models.xctemplate/TemplateInfo.plist @@ -0,0 +1,83 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new set of boundary models between the view controller, interactor, presenter, and router using Uncle Bob's clean architecture. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 4 + Summary + This generates a new set of boundary models between the view controller, interactor, presenter, and router using Uncle Bob's clean architecture. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.h new file mode 100644 index 0000000..65e4bd7 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___DisplayLogic; + +@protocol ___VARIABLE_sceneName___PresentationLogic +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response; +@end + +@interface ___VARIABLE_sceneName___Presenter: NSObject <___VARIABLE_sceneName___PresentationLogic> +@property (weak, nonatomic) id<___VARIABLE_sceneName___DisplayLogic> viewController; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.m new file mode 100644 index 0000000..bae592c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Objective-C/___FILEBASENAME___Presenter.m @@ -0,0 +1,28 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Presenter.h" + +@interface ___VARIABLE_sceneName___Presenter () +@end + +@implementation ___VARIABLE_sceneName___Presenter + +#pragma mark Do something + +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response +{ + ___VARIABLE_sceneName___DoSomethingViewModel *viewModel = [[___VARIABLE_sceneName___DoSomethingViewModel alloc] init]; + [self.viewController displaySomething:viewModel]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Swift/___FILEBASENAME___Presenter.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Swift/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..420f627 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/Swift/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___PresentationLogic +{ + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) +} + +class ___VARIABLE_sceneName___Presenter: ___VARIABLE_sceneName___PresentationLogic +{ + weak var viewController: ___VARIABLE_sceneName___DisplayLogic? + + // MARK: Do something + + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) + { + let viewModel = ___VARIABLE_sceneName___.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..ad28d4c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Presenter.xctemplate/TemplateInfo.plist @@ -0,0 +1,97 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new presenter using Uncle Bob's clean architecture. Your presentation logic goes here. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Presenter + Description + The presenter name + Identifier + presenterName + Name + Presenter Name: + Required + + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 3 + Summary + This generates a new presenter using Uncle Bob's clean architecture. Your presentation logic goes here. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.h new file mode 100644 index 0000000..a730b45 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.h @@ -0,0 +1,29 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@class ___VARIABLE_sceneName___ViewController; +@protocol ___VARIABLE_sceneName___DataStore; + +@protocol ___VARIABLE_sceneName___RoutingLogic +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue; +@end + +@protocol ___VARIABLE_sceneName___DataPassing +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end + +@interface ___VARIABLE_sceneName___Router: NSObject <___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> +@property (weak, nonatomic) ___VARIABLE_sceneName___ViewController *viewController; +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.m new file mode 100644 index 0000000..77e985a --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Objective-C/___FILEBASENAME___Router.m @@ -0,0 +1,52 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Router.h" +//#import "SomewhereViewController.h" + +@interface ___VARIABLE_sceneName___Router () +@end + +@implementation ___VARIABLE_sceneName___Router + +#pragma mark Routing + +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue +//{ +// if (segue != nil) { +// SomewhereViewController *destinationVC = (SomewhereViewController *)segue.destinationViewController; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// } else { +// UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; +// SomewhereViewController *destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"SomewhereViewController"]; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// [self navigateToSomewhere:self.viewController destination:destinationVC]; +// } +//} + +#pragma mark Navigation + +//- (void)navigateToSomewhere:(___VARIABLE_sceneName___ViewController *)source destination:(SomewhereViewController *)destination +//{ +// [source showViewController:destination sender:nil]; +//} + +#pragma mark Passing data + +//- (void)passDataToSomewhere:(id<___VARIABLE_sceneName___DataStore>)source destination:(id)destination +//{ +// destination.name = source.name; +//} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Swift/___FILEBASENAME___Router.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Swift/___FILEBASENAME___Router.swift new file mode 100644 index 0000000..65e0c99 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/Swift/___FILEBASENAME___Router.swift @@ -0,0 +1,60 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol ___VARIABLE_sceneName___RoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol ___VARIABLE_sceneName___DataPassing +{ + var dataStore: ___VARIABLE_sceneName___DataStore? { get } +} + +class ___VARIABLE_sceneName___Router: NSObject, ___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing +{ + weak var viewController: ___VARIABLE_sceneName___ViewController? + var dataStore: ___VARIABLE_sceneName___DataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: ___VARIABLE_sceneName___ViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: ___VARIABLE_sceneName___DataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..fd71c08 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Router.xctemplate/TemplateInfo.plist @@ -0,0 +1,97 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new router using Uncle Bob's clean architecture. You navigate to other scenes by presenting and dismissing other view controllers here. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Router + Description + The router name + Identifier + routerName + Name + Router Name: + Required + + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 6 + Summary + This generates a new router using Uncle Bob's clean architecture. You navigate to other scenes by presenting and dismissing other view controllers here. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..b254231 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/TemplateInfo.plist @@ -0,0 +1,200 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new scene using Uncle Bob's clean architecture. It consists of the view controller, interactor, presenter, and router. You can then create individual workers to supplement the interactor. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___ViewController + Description + The view controller name + Identifier + viewControllerName + Name + View Controller Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Interactor + Description + The interactor name + Identifier + interactorName + Name + Interactor Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Presenter + Description + The presenter name + Identifier + presenterName + Name + Presenter Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Models + Description + The model name + Identifier + modelName + Name + Model Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Worker + Description + The worker name + Identifier + workerName + Name + Worker Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Router + Description + The router name + Identifier + routerName + Name + Router Name: + Required + + Type + static + + + Default + UIViewController + Description + What view controller class to subclass for the new scene + FallbackHeader + #import <UIKit/UIKit.h> + Identifier + viewControllerSubclass + Name + Subclass of: + NotPersisted + + Required + YES + Suffixes + + UIViewController + ViewController + UITableViewController + TableViewController + UICollectionViewController + CollectionViewController + + Type + class + Values + + UIViewController + UITableViewController + UICollectionViewController + + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 0 + Summary + This generates a new scene using Uncle Bob's clean architecture. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Common.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Common.h new file mode 100644 index 0000000..0d01610 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Common.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#ifndef ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h +#define ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h + +#import +#import "___VARIABLE_sceneName___Models.h" +#import "___VARIABLE_sceneName___ViewController.h" +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Presenter.h" +#import "___VARIABLE_sceneName___Router.h" + +#endif diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.h new file mode 100644 index 0000000..45fdf17 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.h @@ -0,0 +1,27 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___PresentationLogic; + +@protocol ___VARIABLE_sceneName___BusinessLogic +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request; +@end + +@protocol ___VARIABLE_sceneName___DataStore +//@property (strong, nonatomic) NSString *name; +@end + +@interface ___VARIABLE_sceneName___Interactor: NSObject <___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore> +@property (strong, nonatomic) id<___VARIABLE_sceneName___PresentationLogic> presenter; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.m new file mode 100644 index 0000000..7123129 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Interactor.m @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Interactor () +@property (strong, nonatomic) ___VARIABLE_sceneName___Worker *worker; +@end + +@implementation ___VARIABLE_sceneName___Interactor + +//@synthesize name = _name; + +#pragma mark Do something + +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request +{ + self.worker = [[___VARIABLE_sceneName___Worker alloc] init]; + [self.worker doSomeWork]; + + ___VARIABLE_sceneName___DoSomethingResponse *response = [[___VARIABLE_sceneName___DoSomethingResponse alloc] init]; + [self.presenter presentSomething:response]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.h new file mode 100644 index 0000000..87a2dff --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.h @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +#pragma mark Use cases + +@interface ___VARIABLE_sceneName___DoSomethingRequest: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingResponse: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingViewModel: NSObject +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.m new file mode 100644 index 0000000..61947ce --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Models.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#pragma mark Use cases + +#import "___VARIABLE_sceneName___Models.h" + +@implementation ___VARIABLE_sceneName___DoSomethingRequest +@end + +@implementation ___VARIABLE_sceneName___DoSomethingResponse +@end + +@implementation ___VARIABLE_sceneName___DoSomethingViewModel +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.h new file mode 100644 index 0000000..65e4bd7 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___DisplayLogic; + +@protocol ___VARIABLE_sceneName___PresentationLogic +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response; +@end + +@interface ___VARIABLE_sceneName___Presenter: NSObject <___VARIABLE_sceneName___PresentationLogic> +@property (weak, nonatomic) id<___VARIABLE_sceneName___DisplayLogic> viewController; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.m new file mode 100644 index 0000000..bae592c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Presenter.m @@ -0,0 +1,28 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Presenter.h" + +@interface ___VARIABLE_sceneName___Presenter () +@end + +@implementation ___VARIABLE_sceneName___Presenter + +#pragma mark Do something + +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response +{ + ___VARIABLE_sceneName___DoSomethingViewModel *viewModel = [[___VARIABLE_sceneName___DoSomethingViewModel alloc] init]; + [self.viewController displaySomething:viewModel]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.h new file mode 100644 index 0000000..a730b45 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.h @@ -0,0 +1,29 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@class ___VARIABLE_sceneName___ViewController; +@protocol ___VARIABLE_sceneName___DataStore; + +@protocol ___VARIABLE_sceneName___RoutingLogic +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue; +@end + +@protocol ___VARIABLE_sceneName___DataPassing +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end + +@interface ___VARIABLE_sceneName___Router: NSObject <___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> +@property (weak, nonatomic) ___VARIABLE_sceneName___ViewController *viewController; +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.m new file mode 100644 index 0000000..77e985a --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Router.m @@ -0,0 +1,52 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Router.h" +//#import "SomewhereViewController.h" + +@interface ___VARIABLE_sceneName___Router () +@end + +@implementation ___VARIABLE_sceneName___Router + +#pragma mark Routing + +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue +//{ +// if (segue != nil) { +// SomewhereViewController *destinationVC = (SomewhereViewController *)segue.destinationViewController; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// } else { +// UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; +// SomewhereViewController *destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"SomewhereViewController"]; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// [self navigateToSomewhere:self.viewController destination:destinationVC]; +// } +//} + +#pragma mark Navigation + +//- (void)navigateToSomewhere:(___VARIABLE_sceneName___ViewController *)source destination:(SomewhereViewController *)destination +//{ +// [source showViewController:destination sender:nil]; +//} + +#pragma mark Passing data + +//- (void)passDataToSomewhere:(id<___VARIABLE_sceneName___DataStore>)source destination:(id)destination +//{ +// destination.name = source.name; +//} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..eeb62bf --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UICollectionViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.h new file mode 100644 index 0000000..73f81e1 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.h @@ -0,0 +1,17 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +@interface ___VARIABLE_sceneName___Worker: NSObject +- (void)doSomeWork; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.m new file mode 100644 index 0000000..488fa0b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___Worker.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Worker () +@end + +@implementation ___VARIABLE_sceneName___Worker + +- (void)doSomeWork +{ +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Interactor.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..838f025 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Interactor.swift @@ -0,0 +1,41 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___BusinessLogic +{ + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) +} + +protocol ___VARIABLE_sceneName___DataStore +{ + //var name: String { get set } +} + +class ___VARIABLE_sceneName___Interactor: ___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore +{ + var presenter: ___VARIABLE_sceneName___PresentationLogic? + var worker: ___VARIABLE_sceneName___Worker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) + { + worker = ___VARIABLE_sceneName___Worker() + worker?.doSomeWork() + + let response = ___VARIABLE_sceneName___.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Models.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Models.swift new file mode 100644 index 0000000..368d390 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Models.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum ___VARIABLE_sceneName___ +{ + // MARK: Use cases + + enum Something + { + struct Request + { + } + struct Response + { + } + struct ViewModel + { + } + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Presenter.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..420f627 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___PresentationLogic +{ + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) +} + +class ___VARIABLE_sceneName___Presenter: ___VARIABLE_sceneName___PresentationLogic +{ + weak var viewController: ___VARIABLE_sceneName___DisplayLogic? + + // MARK: Do something + + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) + { + let viewModel = ___VARIABLE_sceneName___.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Router.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Router.swift new file mode 100644 index 0000000..65e0c99 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Router.swift @@ -0,0 +1,60 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol ___VARIABLE_sceneName___RoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol ___VARIABLE_sceneName___DataPassing +{ + var dataStore: ___VARIABLE_sceneName___DataStore? { get } +} + +class ___VARIABLE_sceneName___Router: NSObject, ___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing +{ + weak var viewController: ___VARIABLE_sceneName___ViewController? + var dataStore: ___VARIABLE_sceneName___DataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: ___VARIABLE_sceneName___ViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: ___VARIABLE_sceneName___DataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..a6dd057 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UICollectionViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Worker.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Worker.swift new file mode 100644 index 0000000..55f2320 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___Worker.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class ___VARIABLE_sceneName___Worker +{ + func doSomeWork() + { + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Common.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Common.h new file mode 100644 index 0000000..0d01610 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Common.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#ifndef ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h +#define ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h + +#import +#import "___VARIABLE_sceneName___Models.h" +#import "___VARIABLE_sceneName___ViewController.h" +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Presenter.h" +#import "___VARIABLE_sceneName___Router.h" + +#endif diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.h new file mode 100644 index 0000000..45fdf17 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.h @@ -0,0 +1,27 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___PresentationLogic; + +@protocol ___VARIABLE_sceneName___BusinessLogic +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request; +@end + +@protocol ___VARIABLE_sceneName___DataStore +//@property (strong, nonatomic) NSString *name; +@end + +@interface ___VARIABLE_sceneName___Interactor: NSObject <___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore> +@property (strong, nonatomic) id<___VARIABLE_sceneName___PresentationLogic> presenter; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.m new file mode 100644 index 0000000..7123129 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Interactor.m @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Interactor () +@property (strong, nonatomic) ___VARIABLE_sceneName___Worker *worker; +@end + +@implementation ___VARIABLE_sceneName___Interactor + +//@synthesize name = _name; + +#pragma mark Do something + +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request +{ + self.worker = [[___VARIABLE_sceneName___Worker alloc] init]; + [self.worker doSomeWork]; + + ___VARIABLE_sceneName___DoSomethingResponse *response = [[___VARIABLE_sceneName___DoSomethingResponse alloc] init]; + [self.presenter presentSomething:response]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.h new file mode 100644 index 0000000..87a2dff --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.h @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +#pragma mark Use cases + +@interface ___VARIABLE_sceneName___DoSomethingRequest: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingResponse: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingViewModel: NSObject +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.m new file mode 100644 index 0000000..61947ce --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Models.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#pragma mark Use cases + +#import "___VARIABLE_sceneName___Models.h" + +@implementation ___VARIABLE_sceneName___DoSomethingRequest +@end + +@implementation ___VARIABLE_sceneName___DoSomethingResponse +@end + +@implementation ___VARIABLE_sceneName___DoSomethingViewModel +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.h new file mode 100644 index 0000000..65e4bd7 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___DisplayLogic; + +@protocol ___VARIABLE_sceneName___PresentationLogic +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response; +@end + +@interface ___VARIABLE_sceneName___Presenter: NSObject <___VARIABLE_sceneName___PresentationLogic> +@property (weak, nonatomic) id<___VARIABLE_sceneName___DisplayLogic> viewController; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.m new file mode 100644 index 0000000..bae592c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Presenter.m @@ -0,0 +1,28 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Presenter.h" + +@interface ___VARIABLE_sceneName___Presenter () +@end + +@implementation ___VARIABLE_sceneName___Presenter + +#pragma mark Do something + +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response +{ + ___VARIABLE_sceneName___DoSomethingViewModel *viewModel = [[___VARIABLE_sceneName___DoSomethingViewModel alloc] init]; + [self.viewController displaySomething:viewModel]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.h new file mode 100644 index 0000000..a730b45 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.h @@ -0,0 +1,29 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@class ___VARIABLE_sceneName___ViewController; +@protocol ___VARIABLE_sceneName___DataStore; + +@protocol ___VARIABLE_sceneName___RoutingLogic +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue; +@end + +@protocol ___VARIABLE_sceneName___DataPassing +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end + +@interface ___VARIABLE_sceneName___Router: NSObject <___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> +@property (weak, nonatomic) ___VARIABLE_sceneName___ViewController *viewController; +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.m new file mode 100644 index 0000000..77e985a --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Router.m @@ -0,0 +1,52 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Router.h" +//#import "SomewhereViewController.h" + +@interface ___VARIABLE_sceneName___Router () +@end + +@implementation ___VARIABLE_sceneName___Router + +#pragma mark Routing + +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue +//{ +// if (segue != nil) { +// SomewhereViewController *destinationVC = (SomewhereViewController *)segue.destinationViewController; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// } else { +// UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; +// SomewhereViewController *destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"SomewhereViewController"]; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// [self navigateToSomewhere:self.viewController destination:destinationVC]; +// } +//} + +#pragma mark Navigation + +//- (void)navigateToSomewhere:(___VARIABLE_sceneName___ViewController *)source destination:(SomewhereViewController *)destination +//{ +// [source showViewController:destination sender:nil]; +//} + +#pragma mark Passing data + +//- (void)passDataToSomewhere:(id<___VARIABLE_sceneName___DataStore>)source destination:(id)destination +//{ +// destination.name = source.name; +//} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..c055431 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UITableViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.h new file mode 100644 index 0000000..73f81e1 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.h @@ -0,0 +1,17 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +@interface ___VARIABLE_sceneName___Worker: NSObject +- (void)doSomeWork; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.m new file mode 100644 index 0000000..488fa0b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___Worker.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Worker () +@end + +@implementation ___VARIABLE_sceneName___Worker + +- (void)doSomeWork +{ +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Interactor.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..838f025 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Interactor.swift @@ -0,0 +1,41 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___BusinessLogic +{ + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) +} + +protocol ___VARIABLE_sceneName___DataStore +{ + //var name: String { get set } +} + +class ___VARIABLE_sceneName___Interactor: ___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore +{ + var presenter: ___VARIABLE_sceneName___PresentationLogic? + var worker: ___VARIABLE_sceneName___Worker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) + { + worker = ___VARIABLE_sceneName___Worker() + worker?.doSomeWork() + + let response = ___VARIABLE_sceneName___.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Models.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Models.swift new file mode 100644 index 0000000..368d390 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Models.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum ___VARIABLE_sceneName___ +{ + // MARK: Use cases + + enum Something + { + struct Request + { + } + struct Response + { + } + struct ViewModel + { + } + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Presenter.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..420f627 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___PresentationLogic +{ + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) +} + +class ___VARIABLE_sceneName___Presenter: ___VARIABLE_sceneName___PresentationLogic +{ + weak var viewController: ___VARIABLE_sceneName___DisplayLogic? + + // MARK: Do something + + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) + { + let viewModel = ___VARIABLE_sceneName___.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Router.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Router.swift new file mode 100644 index 0000000..65e0c99 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Router.swift @@ -0,0 +1,60 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol ___VARIABLE_sceneName___RoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol ___VARIABLE_sceneName___DataPassing +{ + var dataStore: ___VARIABLE_sceneName___DataStore? { get } +} + +class ___VARIABLE_sceneName___Router: NSObject, ___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing +{ + weak var viewController: ___VARIABLE_sceneName___ViewController? + var dataStore: ___VARIABLE_sceneName___DataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: ___VARIABLE_sceneName___ViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: ___VARIABLE_sceneName___DataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..4d89103 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UITableViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Worker.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Worker.swift new file mode 100644 index 0000000..55f2320 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UITableViewControllerSwift/___FILEBASENAME___Worker.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class ___VARIABLE_sceneName___Worker +{ + func doSomeWork() + { + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Common.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Common.h new file mode 100644 index 0000000..0d01610 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Common.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#ifndef ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h +#define ___PROJECTNAMEASIDENTIFIER_______VARIABLE_sceneName____Common_h + +#import +#import "___VARIABLE_sceneName___Models.h" +#import "___VARIABLE_sceneName___ViewController.h" +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Presenter.h" +#import "___VARIABLE_sceneName___Router.h" + +#endif diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.h new file mode 100644 index 0000000..45fdf17 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.h @@ -0,0 +1,27 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___PresentationLogic; + +@protocol ___VARIABLE_sceneName___BusinessLogic +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request; +@end + +@protocol ___VARIABLE_sceneName___DataStore +//@property (strong, nonatomic) NSString *name; +@end + +@interface ___VARIABLE_sceneName___Interactor: NSObject <___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore> +@property (strong, nonatomic) id<___VARIABLE_sceneName___PresentationLogic> presenter; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.m new file mode 100644 index 0000000..7123129 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Interactor.m @@ -0,0 +1,35 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Interactor.h" +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Interactor () +@property (strong, nonatomic) ___VARIABLE_sceneName___Worker *worker; +@end + +@implementation ___VARIABLE_sceneName___Interactor + +//@synthesize name = _name; + +#pragma mark Do something + +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request +{ + self.worker = [[___VARIABLE_sceneName___Worker alloc] init]; + [self.worker doSomeWork]; + + ___VARIABLE_sceneName___DoSomethingResponse *response = [[___VARIABLE_sceneName___DoSomethingResponse alloc] init]; + [self.presenter presentSomething:response]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.h new file mode 100644 index 0000000..87a2dff --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.h @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +#pragma mark Use cases + +@interface ___VARIABLE_sceneName___DoSomethingRequest: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingResponse: NSObject +@end + +@interface ___VARIABLE_sceneName___DoSomethingViewModel: NSObject +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.m new file mode 100644 index 0000000..61947ce --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Models.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#pragma mark Use cases + +#import "___VARIABLE_sceneName___Models.h" + +@implementation ___VARIABLE_sceneName___DoSomethingRequest +@end + +@implementation ___VARIABLE_sceneName___DoSomethingResponse +@end + +@implementation ___VARIABLE_sceneName___DoSomethingViewModel +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.h new file mode 100644 index 0000000..65e4bd7 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.h @@ -0,0 +1,23 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___DisplayLogic; + +@protocol ___VARIABLE_sceneName___PresentationLogic +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response; +@end + +@interface ___VARIABLE_sceneName___Presenter: NSObject <___VARIABLE_sceneName___PresentationLogic> +@property (weak, nonatomic) id<___VARIABLE_sceneName___DisplayLogic> viewController; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.m new file mode 100644 index 0000000..bae592c --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Presenter.m @@ -0,0 +1,28 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Presenter.h" + +@interface ___VARIABLE_sceneName___Presenter () +@end + +@implementation ___VARIABLE_sceneName___Presenter + +#pragma mark Do something + +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response +{ + ___VARIABLE_sceneName___DoSomethingViewModel *viewModel = [[___VARIABLE_sceneName___DoSomethingViewModel alloc] init]; + [self.viewController displaySomething:viewModel]; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.h new file mode 100644 index 0000000..a730b45 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.h @@ -0,0 +1,29 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@class ___VARIABLE_sceneName___ViewController; +@protocol ___VARIABLE_sceneName___DataStore; + +@protocol ___VARIABLE_sceneName___RoutingLogic +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue; +@end + +@protocol ___VARIABLE_sceneName___DataPassing +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end + +@interface ___VARIABLE_sceneName___Router: NSObject <___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> +@property (weak, nonatomic) ___VARIABLE_sceneName___ViewController *viewController; +@property (strong, nonatomic) id<___VARIABLE_sceneName___DataStore> dataStore; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.m new file mode 100644 index 0000000..77e985a --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Router.m @@ -0,0 +1,52 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Router.h" +//#import "SomewhereViewController.h" + +@interface ___VARIABLE_sceneName___Router () +@end + +@implementation ___VARIABLE_sceneName___Router + +#pragma mark Routing + +//- (void)routeToSomewhere:(UIStoryboardSegue *)segue +//{ +// if (segue != nil) { +// SomewhereViewController *destinationVC = (SomewhereViewController *)segue.destinationViewController; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// } else { +// UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; +// SomewhereViewController *destinationVC = [storyboard instantiateViewControllerWithIdentifier:@"SomewhereViewController"]; +// id destinationDS = destinationVC.router.dataStore; +// [self passDataToSomewhere:self.dataStore destination:destinationDS]; +// [self navigateToSomewhere:self.viewController destination:destinationVC]; +// } +//} + +#pragma mark Navigation + +//- (void)navigateToSomewhere:(___VARIABLE_sceneName___ViewController *)source destination:(SomewhereViewController *)destination +//{ +// [source showViewController:destination sender:nil]; +//} + +#pragma mark Passing data + +//- (void)passDataToSomewhere:(id<___VARIABLE_sceneName___DataStore>)source destination:(id)destination +//{ +// destination.name = source.name; +//} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..e5ee767 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UIViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.h new file mode 100644 index 0000000..73f81e1 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.h @@ -0,0 +1,17 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +@interface ___VARIABLE_sceneName___Worker: NSObject +- (void)doSomeWork; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.m new file mode 100644 index 0000000..488fa0b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___Worker.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Worker () +@end + +@implementation ___VARIABLE_sceneName___Worker + +- (void)doSomeWork +{ +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Interactor.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Interactor.swift new file mode 100644 index 0000000..838f025 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Interactor.swift @@ -0,0 +1,41 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___BusinessLogic +{ + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) +} + +protocol ___VARIABLE_sceneName___DataStore +{ + //var name: String { get set } +} + +class ___VARIABLE_sceneName___Interactor: ___VARIABLE_sceneName___BusinessLogic, ___VARIABLE_sceneName___DataStore +{ + var presenter: ___VARIABLE_sceneName___PresentationLogic? + var worker: ___VARIABLE_sceneName___Worker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) + { + worker = ___VARIABLE_sceneName___Worker() + worker?.doSomeWork() + + let response = ___VARIABLE_sceneName___.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Models.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Models.swift new file mode 100644 index 0000000..368d390 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Models.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum ___VARIABLE_sceneName___ +{ + // MARK: Use cases + + enum Something + { + struct Request + { + } + struct Response + { + } + struct ViewModel + { + } + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Presenter.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Presenter.swift new file mode 100644 index 0000000..420f627 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Presenter.swift @@ -0,0 +1,31 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___PresentationLogic +{ + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) +} + +class ___VARIABLE_sceneName___Presenter: ___VARIABLE_sceneName___PresentationLogic +{ + weak var viewController: ___VARIABLE_sceneName___DisplayLogic? + + // MARK: Do something + + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) + { + let viewModel = ___VARIABLE_sceneName___.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Router.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Router.swift new file mode 100644 index 0000000..65e0c99 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Router.swift @@ -0,0 +1,60 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol ___VARIABLE_sceneName___RoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol ___VARIABLE_sceneName___DataPassing +{ + var dataStore: ___VARIABLE_sceneName___DataStore? { get } +} + +class ___VARIABLE_sceneName___Router: NSObject, ___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing +{ + weak var viewController: ___VARIABLE_sceneName___ViewController? + var dataStore: ___VARIABLE_sceneName___DataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: ___VARIABLE_sceneName___ViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: ___VARIABLE_sceneName___DataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..2a6440b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UIViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Worker.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Worker.swift new file mode 100644 index 0000000..55f2320 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Scene.xctemplate/UIViewControllerSwift/___FILEBASENAME___Worker.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class ___VARIABLE_sceneName___Worker +{ + func doSomeWork() + { + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___InteractorTests.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___InteractorTests.m new file mode 100644 index 0000000..9ede7a3 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___InteractorTests.m @@ -0,0 +1,79 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import +#import "___VARIABLE_sceneName___Interactor.h" + +#pragma mark Test doubles + +@interface ___VARIABLE_sceneName___PresentationLogicSpy: NSObject <___VARIABLE_sceneName___PresentationLogic> + +@property (nonatomic) BOOL presentSomethingCalled; +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response; + +@end + +@implementation ___VARIABLE_sceneName___PresentationLogicSpy + +- (void)presentSomething:(___VARIABLE_sceneName___DoSomethingResponse *)response +{ + self.presentSomethingCalled = YES; +} + +@end + + +@interface ___VARIABLE_sceneName___InteractorTests: XCTestCase + +@property (strong, nonatomic) ___VARIABLE_sceneName___Interactor* sut; + +@end + +@implementation ___VARIABLE_sceneName___InteractorTests + +#pragma mark Test lifecycle + +- (void)setUp +{ + [super setUp]; + [self setup___VARIABLE_sceneName___Interactor]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +#pragma mark Test setup + +- (void)setup___VARIABLE_sceneName___Interactor +{ + self.sut = [[___VARIABLE_sceneName___Interactor alloc] init]; +} + +#pragma mark Tests + +- (void)testDoSomething +{ + // Given + ___VARIABLE_sceneName___PresentationLogicSpy *spy = [[___VARIABLE_sceneName___PresentationLogicSpy alloc] init]; + self.sut.presenter = spy; + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + + // When + [self.sut doSomething:request]; + + // Then + XCTAssertTrue(spy.presentSomethingCalled, @"doSomething: should ask the presenter to format the result"); +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___PresenterTests.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___PresenterTests.m new file mode 100644 index 0000000..d036933 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___PresenterTests.m @@ -0,0 +1,79 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import +#import "___VARIABLE_sceneName___Presenter.h" + +#pragma mark Test doubles + +@interface ___VARIABLE_sceneName___DisplayLogicSpy: NSObject <___VARIABLE_sceneName___DisplayLogic> + +@property (nonatomic) BOOL displaySomethingCalled; +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; + +@end + +@implementation ___VARIABLE_sceneName___DisplayLogicSpy + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + self.displaySomethingCalled = YES; +} + +@end + + +@interface ___VARIABLE_sceneName___PresenterTests: XCTestCase + +@property (strong, nonatomic) ___VARIABLE_sceneName___Presenter* sut; + +@end + +@implementation ___VARIABLE_sceneName___PresenterTests + +#pragma mark Test lifecycle + +- (void)setUp +{ + [super setUp]; + [self setup___VARIABLE_sceneName___Presenter]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +#pragma mark Test setup + +- (void)setup___VARIABLE_sceneName___Presenter +{ + self.sut = [[___VARIABLE_sceneName___Presenter alloc] init]; +} + +#pragma mark Tests + +- (void)testPresentSomething +{ + // Given + ___VARIABLE_sceneName___DisplayLogicSpy *spy = [[___VARIABLE_sceneName___DisplayLogicSpy alloc] init]; + self.sut.viewController = spy; + ___VARIABLE_sceneName___DoSomethingResponse *response = [[___VARIABLE_sceneName___DoSomethingResponse alloc] init]; + + // When + [self.sut presentSomething:response]; + + // Then + XCTAssertTrue(spy.displaySomethingCalled, @"presentSomething: should ask the view controller to display the result"); +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___ViewControllerTests.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___ViewControllerTests.m new file mode 100644 index 0000000..c061a36 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___ViewControllerTests.m @@ -0,0 +1,102 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import +#import "___VARIABLE_sceneName___ViewController.h" + +#pragma mark Test doubles + +@interface ___VARIABLE_sceneName___BusinessLogicSpy: NSObject <___VARIABLE_sceneName___BusinessLogic> + +@property (nonatomic) BOOL doSomethingCalled; +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request; + +@end + +@implementation ___VARIABLE_sceneName___BusinessLogicSpy + +- (void)doSomething:(___VARIABLE_sceneName___DoSomethingRequest *)request +{ + self.doSomethingCalled = YES; +} + +@end + + +@interface ___VARIABLE_sceneName___ViewControllerTests: XCTestCase + +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) ___VARIABLE_sceneName___ViewController* sut; + +@end + +@implementation ___VARIABLE_sceneName___ViewControllerTests + +#pragma mark Test lifecycle + +- (void)setUp +{ + [super setUp]; + self.window = [[UIWindow alloc] init]; + [self setup___VARIABLE_sceneName___ViewController]; +} + +- (void)tearDown +{ + self.window = nil; + [super tearDown]; +} + +#pragma mark Test setup + +- (void)setup___VARIABLE_sceneName___ViewController +{ + NSBundle *bundle = [NSBundle mainBundle]; + UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"Main" bundle: bundle]; + self.sut = (___VARIABLE_sceneName___ViewController *)[storyboard instantiateViewControllerWithIdentifier: @"___VARIABLE_sceneName___ViewController"]; +} + +- (void)loadView +{ + [self.window addSubview:self.sut.view]; + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]; +} + +#pragma mark Tests + +- (void)testShouldDoSomethingWhenViewIsLoaded +{ + // Given + ___VARIABLE_sceneName___BusinessLogicSpy *spy = [[___VARIABLE_sceneName___BusinessLogicSpy alloc] init]; + self.sut.interactor = spy; + + // When + [self loadView]; + + // Then + XCTAssertTrue(spy.doSomethingCalled, @"viewDidLoad should ask the interactor to do something"); +} + +- (void)testDisplaySomething +{ + // Given + ___VARIABLE_sceneName___DoSomethingViewModel *viewModel = [[___VARIABLE_sceneName___DoSomethingViewModel alloc] init]; + + // When + [self loadView]; + [self.sut displaySomething:viewModel]; + + // Then + //XCTAssertEqual(self.sut.nameTextField.text, @"", "displaySomething: should update the name text field"); +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___WorkerTests.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___WorkerTests.m new file mode 100644 index 0000000..ab8569d --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Objective-C/___FILEBASENAME___WorkerTests.m @@ -0,0 +1,53 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___WorkerTests : XCTestCase + +@property (strong, nonatomic) ___VARIABLE_sceneName___Worker* sut; + +@end + +@implementation ___VARIABLE_sceneName___WorkerTests + +- (void)setUp +{ + [super setUp]; + [self setup___VARIABLE_sceneName___Worker]; +} + +- (void)tearDown +{ + [super tearDown]; +} + +#pragma mark Test setup + +- (void)setup___VARIABLE_sceneName___Worker +{ + self.sut = [[___VARIABLE_sceneName___Worker alloc] init]; +} + +#pragma mark Tests + +- (void)testExample +{ + // Given + + // When + + // Then +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___InteractorTests.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___InteractorTests.swift new file mode 100644 index 0000000..714e56b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___InteractorTests.swift @@ -0,0 +1,69 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +@testable import ___PROJECTNAMEASIDENTIFIER___ +import XCTest + +class ___VARIABLE_sceneName___InteractorTests: XCTestCase +{ + // MARK: Subject under test + + var sut: ___VARIABLE_sceneName___Interactor! + + // MARK: Test lifecycle + + override func setUp() + { + super.setUp() + setup___VARIABLE_sceneName___Interactor() + } + + override func tearDown() + { + super.tearDown() + } + + // MARK: Test setup + + func setup___VARIABLE_sceneName___Interactor() + { + sut = ___VARIABLE_sceneName___Interactor() + } + + // MARK: Test doubles + + class ___VARIABLE_sceneName___PresentationLogicSpy: ___VARIABLE_sceneName___PresentationLogic + { + var presentSomethingCalled = false + + func presentSomething(response: ___VARIABLE_sceneName___.Something.Response) + { + presentSomethingCalled = true + } + } + + // MARK: Tests + + func testDoSomething() + { + // Given + let spy = ___VARIABLE_sceneName___PresentationLogicSpy() + sut.presenter = spy + let request = ___VARIABLE_sceneName___.Something.Request() + + // When + sut.doSomething(request: request) + + // Then + XCTAssertTrue(spy.presentSomethingCalled, "doSomething(request:) should ask the presenter to format the result") + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___PresenterTests.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___PresenterTests.swift new file mode 100644 index 0000000..c7f1d6a --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___PresenterTests.swift @@ -0,0 +1,69 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +@testable import ___PROJECTNAMEASIDENTIFIER___ +import XCTest + +class ___VARIABLE_sceneName___PresenterTests: XCTestCase +{ + // MARK: Subject under test + + var sut: ___VARIABLE_sceneName___Presenter! + + // MARK: Test lifecycle + + override func setUp() + { + super.setUp() + setup___VARIABLE_sceneName___Presenter() + } + + override func tearDown() + { + super.tearDown() + } + + // MARK: Test setup + + func setup___VARIABLE_sceneName___Presenter() + { + sut = ___VARIABLE_sceneName___Presenter() + } + + // MARK: Test doubles + + class ___VARIABLE_sceneName___DisplayLogicSpy: ___VARIABLE_sceneName___DisplayLogic + { + var displaySomethingCalled = false + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + displaySomethingCalled = true + } + } + + // MARK: Tests + + func testPresentSomething() + { + // Given + let spy = ___VARIABLE_sceneName___DisplayLogicSpy() + sut.viewController = spy + let response = ___VARIABLE_sceneName___.Something.Response() + + // When + sut.presentSomething(response: response) + + // Then + XCTAssertTrue(spy.displaySomethingCalled, "presentSomething(response:) should ask the view controller to display the result") + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___ViewControllerTests.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___ViewControllerTests.swift new file mode 100644 index 0000000..67c9b38 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___ViewControllerTests.swift @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +@testable import ___PROJECTNAMEASIDENTIFIER___ +import XCTest + +class ___VARIABLE_sceneName___ViewControllerTests: XCTestCase +{ + // MARK: Subject under test + + var sut: ___VARIABLE_sceneName___ViewController! + var window: UIWindow! + + // MARK: Test lifecycle + + override func setUp() + { + super.setUp() + window = UIWindow() + setup___VARIABLE_sceneName___ViewController() + } + + override func tearDown() + { + window = nil + super.tearDown() + } + + // MARK: Test setup + + func setup___VARIABLE_sceneName___ViewController() + { + let bundle = Bundle.main + let storyboard = UIStoryboard(name: "Main", bundle: bundle) + sut = storyboard.instantiateViewController(withIdentifier: "___VARIABLE_sceneName___ViewController") as! ___VARIABLE_sceneName___ViewController + } + + func loadView() + { + window.addSubview(sut.view) + RunLoop.current.run(until: Date()) + } + + // MARK: Test doubles + + class ___VARIABLE_sceneName___BusinessLogicSpy: ___VARIABLE_sceneName___BusinessLogic + { + var doSomethingCalled = false + + func doSomething(request: ___VARIABLE_sceneName___.Something.Request) + { + doSomethingCalled = true + } + } + + // MARK: Tests + + func testShouldDoSomethingWhenViewIsLoaded() + { + // Given + let spy = ___VARIABLE_sceneName___BusinessLogicSpy() + sut.interactor = spy + + // When + loadView() + + // Then + XCTAssertTrue(spy.doSomethingCalled, "viewDidLoad() should ask the interactor to do something") + } + + func testDisplaySomething() + { + // Given + let viewModel = ___VARIABLE_sceneName___.Something.ViewModel() + + // When + loadView() + sut.displaySomething(viewModel: viewModel) + + // Then + //XCTAssertEqual(sut.nameTextField.text, "", "displaySomething(viewModel:) should update the name text field") + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___WorkerTests.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___WorkerTests.swift new file mode 100644 index 0000000..1688431 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/Swift/___FILEBASENAME___WorkerTests.swift @@ -0,0 +1,54 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +@testable import ___PROJECTNAMEASIDENTIFIER___ +import XCTest + +class ___VARIABLE_sceneName___WorkerTests: XCTestCase +{ + // MARK: Subject under test + + var sut: ___VARIABLE_sceneName___Worker! + + // MARK: Test lifecycle + + override func setUp() + { + super.setUp() + setup___VARIABLE_sceneName___Worker() + } + + override func tearDown() + { + super.tearDown() + } + + // MARK: Test setup + + func setup___VARIABLE_sceneName___Worker() + { + sut = ___VARIABLE_sceneName___Worker() + } + + // MARK: Test doubles + + // MARK: Tests + + func testSomething() + { + // Given + + // When + + // Then + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..611b0bb --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Unit Tests.xctemplate/TemplateInfo.plist @@ -0,0 +1,139 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates unit tests for your scene using Uncle Bob's clean architecture. It consists of three test files for view controller, interactor, and presenter. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create tests for + Identifier + sceneName + Name + Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___ViewControllerTests + Description + The view controller tests name + Identifier + viewControllerTestsName + Name + View Controller Tests Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___InteractorTests + Description + The interactor tests name + Identifier + interactorTestsName + Name + Interactor Tests Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___PresenterTests + Description + The presenter tests name + Identifier + presenterTestsName + Name + Presenter Tests Name: + Required + + Type + static + + + Default + ___VARIABLE_sceneName:identifier___WorkerTests + Description + The worker tests name + Identifier + workerTestsName + Name + Worker Tests Name: + Required + + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 8 + Summary + This generates unit tests for your scene using Uncle Bob's clean architecture. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..5c4bf75 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/TemplateInfo.plist @@ -0,0 +1,130 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new view controller using Uncle Bob's clean architecture. Your view/view controller logic goes here. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___ViewController + Description + The view controller name + Identifier + viewControllerName + Name + View Controller Name: + Required + + Type + static + + + Default + UIViewController + Description + What view controller class to subclass for the new scene + FallbackHeader + #import <UIKit/UIKit.h> + Identifier + viewControllerSubclass + Name + Subclass of: + NotPersisted + + Required + YES + Suffixes + + UIViewController + ViewController + UITableViewController + TableViewController + UICollectionViewController + CollectionViewController + + Type + class + Values + + UIViewController + UITableViewController + UICollectionViewController + + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 1 + Summary + This generates a new view controller using Uncle Bob's clean architecture. Your view/view controller logic goes here. + + diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..eeb62bf --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UICollectionViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..a6dd057 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UICollectionViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UICollectionViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..c055431 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UITableViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..4d89103 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UITableViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UITableViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h new file mode 100644 index 0000000..e5ee767 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.h @@ -0,0 +1,26 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Common.h" + +@protocol ___VARIABLE_sceneName___BusinessLogic; +@protocol ___VARIABLE_sceneName___RoutingLogic; +@protocol ___VARIABLE_sceneName___DataPassing; + +@protocol ___VARIABLE_sceneName___DisplayLogic +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel; +@end + +@interface ___VARIABLE_sceneName___ViewController: UIViewController <___VARIABLE_sceneName___DisplayLogic> +@property (strong, nonatomic) id<___VARIABLE_sceneName___BusinessLogic> interactor; +@property (strong, nonatomic) NSObject<___VARIABLE_sceneName___RoutingLogic, ___VARIABLE_sceneName___DataPassing> *router; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m new file mode 100644 index 0000000..cb2015f --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerObjective-C/___FILEBASENAME___ViewController.m @@ -0,0 +1,92 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___ViewController.h" + +@protocol ___VARIABLE_sceneName___DataStore; + +@interface ___VARIABLE_sceneName___ViewController () +//@property (weak, nonatomic) IBOutlet UITextField *nameTextField; +@end + +@implementation ___VARIABLE_sceneName___ViewController + +#pragma mark Object lifecycle + +- (instancetype)initWithNibName:(NSString *)nibNameOrNil + bundle:(NSBundle *)nibBundleOrNil +{ + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self setup]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder +{ + self = [super initWithCoder:coder]; + if (self) { + [self setup]; + } + return self; +} + +#pragma mark Setup + +- (void)setup +{ + ___VARIABLE_sceneName___ViewController *viewController = self; + ___VARIABLE_sceneName___Interactor *interactor = [[___VARIABLE_sceneName___Interactor alloc] init]; + ___VARIABLE_sceneName___Presenter *presenter = [[___VARIABLE_sceneName___Presenter alloc] init]; + ___VARIABLE_sceneName___Router *router = [[___VARIABLE_sceneName___Router alloc] init]; + viewController.interactor = interactor; + viewController.router = router; + interactor.presenter = presenter; + presenter.viewController = viewController; + router.viewController = viewController; + router.dataStore = interactor; +} + +#pragma mark Routing + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + NSString *scene = segue.identifier; + SEL selector = NSSelectorFromString([NSString stringWithFormat:@"routeTo%@WithSegue:", scene]); + if ([self.router respondsToSelector:selector]) { + [self.router performSelectorOnMainThread:selector withObject:segue waitUntilDone:NO]; + } +} + +#pragma mark View lifecycle + +- (void)viewDidLoad +{ + [super viewDidLoad]; + [self doSomething]; +} + +#pragma mark Do something + +- (void)doSomething +{ + ___VARIABLE_sceneName___DoSomethingRequest *request = [[___VARIABLE_sceneName___DoSomethingRequest alloc] init]; + [self.interactor doSomething:request]; +} + +- (void)displaySomething:(___VARIABLE_sceneName___DoSomethingViewModel *)viewModel +{ + //self.nameTextField.text = viewModel.name; +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift new file mode 100644 index 0000000..86a8f06 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/View Controller.xctemplate/UIViewControllerSwift/___FILEBASENAME___ViewController.swift @@ -0,0 +1,89 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol ___VARIABLE_sceneName___DisplayLogic: class +{ + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) +} + +class ___VARIABLE_sceneName___ViewController: UIViewController, ___VARIABLE_sceneName___DisplayLogic +{ + var interactor: ___VARIABLE_sceneName___BusinessLogic? + var router: (NSObjectProtocol & ___VARIABLE_sceneName___RoutingLogic & ___VARIABLE_sceneName___DataPassing)? + + // MARK: Object lifecycle + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) + { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + setup() + } + + // MARK: Setup + + private func setup() + { + let viewController = self + let interactor = ___VARIABLE_sceneName___Interactor() + let presenter = ___VARIABLE_sceneName___Presenter() + let router = ___VARIABLE_sceneName___Router() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + // MARK: Routing + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + // MARK: View lifecycle + + override func viewDidLoad() + { + super.viewDidLoad() + doSomething() + } + + // MARK: Do something + + //@IBOutlet weak var nameTextField: UITextField! + + func doSomething() + { + let request = ___VARIABLE_sceneName___.Something.Request() + interactor?.doSomething(request: request) + } + + func displaySomething(viewModel: ___VARIABLE_sceneName___.Something.ViewModel) + { + //nameTextField.text = viewModel.name + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.h b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.h new file mode 100644 index 0000000..73f81e1 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.h @@ -0,0 +1,17 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import + +@interface ___VARIABLE_sceneName___Worker: NSObject +- (void)doSomeWork; +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.m b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.m new file mode 100644 index 0000000..488fa0b --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Objective-C/___FILEBASENAME___Worker.m @@ -0,0 +1,24 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +#import "___VARIABLE_sceneName___Worker.h" + +@interface ___VARIABLE_sceneName___Worker () +@end + +@implementation ___VARIABLE_sceneName___Worker + +- (void)doSomeWork +{ +} + +@end diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Swift/___FILEBASENAME___Worker.swift b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Swift/___FILEBASENAME___Worker.swift new file mode 100644 index 0000000..55f2320 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/Swift/___FILEBASENAME___Worker.swift @@ -0,0 +1,20 @@ +// +// ___FILENAME___ +// ___PROJECTNAME___ +// +// Created by ___FULLUSERNAME___ on ___DATE___. +// Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class ___VARIABLE_sceneName___Worker +{ + func doSomeWork() + { + } +} diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon.png new file mode 100644 index 0000000..5f797c1 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon@2x.png b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon@2x.png new file mode 100644 index 0000000..dc62723 Binary files /dev/null and b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateIcon@2x.png differ diff --git a/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateInfo.plist b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateInfo.plist new file mode 100644 index 0000000..eb76928 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Clean Swift/Worker.xctemplate/TemplateInfo.plist @@ -0,0 +1,97 @@ + + + + + DefaultCompletionName + MyScene + Description + This generates a new worker to perform your specific business logic. + Kind + Xcode.IDEKit.TextSubstitutionFileTemplateKind + Options + + + Description + The name of the scene to create + Identifier + sceneName + Name + New Scene Name: + NotPersisted + + Required + + Type + text + + + Default + ___VARIABLE_sceneName:identifier___ + Identifier + productName + Type + static + + + Default + ___VARIABLE_sceneName:identifier___Worker + Description + The worker name + Identifier + workerName + Name + Worker Name: + Required + + Type + static + + + AllowedTypes + + Objective-C + + public.objective-c-source + public.objective-c-plus-plus-source + + Swift + + public.swift-source + + + Default + Swift + Description + The implementation language + Identifier + languageChoice + MainTemplateFiles + + Swift + ___VARIABLE_sceneName___.swift + Objective-C + ___VARIABLE_sceneName___.m + + Name + Language: + Required + + Type + popup + Values + + Swift + Objective-C + + + + Platforms + + com.apple.platform.iphoneos + + SortOrder + 5 + Summary + This generates a new worker to perform your specific business logic. + + diff --git a/Swift/Other/CleanSwiftObjC/LICENSE b/Swift/Other/CleanSwiftObjC/LICENSE new file mode 100644 index 0000000..da45a76 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Raymond Law (http://clean-swift.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/Swift/Other/CleanSwiftObjC/Makefile b/Swift/Other/CleanSwiftObjC/Makefile new file mode 100644 index 0000000..76eca12 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/Makefile @@ -0,0 +1,12 @@ +XCODE_USER_TEMPLATES_DIR=~/Library/Developer/Xcode/Templates/File\ Templates +XCODE_USER_SNIPPETS_DIR=~/Library/Developer/Xcode/UserData/CodeSnippets + +TEMPLATES_DIR=Clean\ Swift + +install_templates: + mkdir -p $(XCODE_USER_TEMPLATES_DIR) + rm -fR $(XCODE_USER_TEMPLATES_DIR)/$(TEMPLATES_DIR) + cp -R $(TEMPLATES_DIR) $(XCODE_USER_TEMPLATES_DIR) + +uninstall_templates: + rm -fR $(XCODE_USER_TEMPLATES_DIR)/$(TEMPLATES_DIR) diff --git a/Swift/Other/CleanSwiftObjC/README.md b/Swift/Other/CleanSwiftObjC/README.md new file mode 100644 index 0000000..480ca36 --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/README.md @@ -0,0 +1,15 @@ +To learn more about Clean Swift and the VIP cycle, read: + +http://clean-swift.com/clean-swift-ios-architecture + +There is a sample app available at: + +https://github.com/Clean-Swift/CleanStore + +To install the Clean Swift Xcode templates, run: + +> make install_templates + +To uninstall the Clean Swift Xcode templates, run: + +> make uninstall_templates diff --git a/Swift/Other/CleanSwiftObjC/VERSION b/Swift/Other/CleanSwiftObjC/VERSION new file mode 100644 index 0000000..d9c62ed --- /dev/null +++ b/Swift/Other/CleanSwiftObjC/VERSION @@ -0,0 +1 @@ +3.0.2 \ No newline at end of file diff --git a/Swift/Other/CodingChallenge/.gitignore b/Swift/Other/CodingChallenge/.gitignore new file mode 100644 index 0000000..330d167 --- /dev/null +++ b/Swift/Other/CodingChallenge/.gitignore @@ -0,0 +1,90 @@ +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +# Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +# .swiftpm + +.build/ + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# +# Pods/ +# +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/.gitignore b/Swift/Other/CodingChallenge/CachableAsyncImage/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Swift/Other/CodingChallenge/CachableAsyncImage/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Package.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Package.swift new file mode 100644 index 0000000..8e9646f --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Package.swift @@ -0,0 +1,25 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "CachableAsyncImage", + platforms: [.iOS(.v16)], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "CachableAsyncImage", + targets: ["CachableAsyncImage"]), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "CachableAsyncImage", + dependencies: []), + .testTarget( + name: "CachableAsyncImageTests", + dependencies: ["CachableAsyncImage"]), + ] +) diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/README.md b/Swift/Other/CodingChallenge/CachableAsyncImage/README.md new file mode 100644 index 0000000..3c39886 --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/README.md @@ -0,0 +1,6 @@ +# CachableAsyncImage + +CachableAsyncImage is a SwiftUI View which can async load images and support cache. + +You can declare an AsyncImage and pass URL and placeholder into it. When the image appears, ImageLoader will download the image. During the loading, the placeholder will be shown. Once the image is successfully downloaded, it will be stored in NSCache by NSURL-UIImage pair. Meanwhile, the image will display. If during the loading the image disappears, the loader will cancel the task of download. +When the second time to load the image by the same URL, the image will be read in the cache and directly shown. \ No newline at end of file diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/CAsyncImage.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/CAsyncImage.swift new file mode 100644 index 0000000..d1b9d56 --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/CAsyncImage.swift @@ -0,0 +1,50 @@ +// +// CAsyncImage.swift +// +// +// Created by Jacklandrin on 2023/8/7. +// + +import SwiftUI + +public struct CAsyncImage: View { + @ObservedObject private var loader: ImageLoader + private let placeholder: Placeholder? + private let configuration: (Image) -> Image + + + /// Loads and displays an image from the specified URL and it supports cache. The cache can be gained through EnvironmentValue. + /// - Parameters: + /// - url: The URL of the image to display. + /// - cache: Image cache. It can be query by URL and return an optional UIImage. + /// - placeholder: A Placeholder during loading. This package provides a default value PlaceholderImageView. + /// - configuration: The image can be configed in this closure. + public init( + url: URL, + cache: ImageCache? = nil, + placeholder: Placeholder? = PlaceholderImageView(), + configuration: @escaping (Image) -> Image = { $0 } + ) { + loader = ImageLoader(url: url, cache: cache) + self.placeholder = placeholder + self.configuration = configuration + } + + public var body: some View { + image + .onAppear(perform: loader.load) + .onDisappear(perform: loader.cancel) + } + + private var image: some View { + Group { + if loader.image != nil { + configuration(Image(uiImage: loader.image!)) + } else { + placeholder + } + } + } +} + + diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageCache.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageCache.swift new file mode 100644 index 0000000..cd2e3bf --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageCache.swift @@ -0,0 +1,37 @@ +// +// ImageCache.swift +// +// +// Created by Jacklandrin on 2023/8/7. +// + +import UIKit +import SwiftUI + +public protocol ImageCache { + subscript(_ url: URL) -> UIImage? { get set } +} + +struct TemporaryImageCache: ImageCache { + private let cache = NSCache() + + subscript(_ key: URL) -> UIImage? { + get { cache.object(forKey: key as NSURL) } + set { + newValue == nil + ? cache.removeObject(forKey: key as NSURL) + : cache.setObject(newValue!, forKey: key as NSURL) + } + } +} + +struct ImageCacheKey: EnvironmentKey { + static let defaultValue: ImageCache = TemporaryImageCache() +} + +public extension EnvironmentValues { + var imageCache: ImageCache { + get { self[ImageCacheKey.self] } + set { self[ImageCacheKey.self] = newValue } + } +} diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageLoader.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageLoader.swift new file mode 100644 index 0000000..0c90cd2 --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/ImageLoader.swift @@ -0,0 +1,73 @@ +// +// ImageLoader.swift +// +// +// Created by Jacklandrin on 2023/8/7. +// + +import Combine +import UIKit + +class ImageLoader: ObservableObject { + @Published var image: UIImage? + + private(set) var isLoading = false + + private let url: URL + private var cache: ImageCache? + private var cancellable: AnyCancellable? + + private static let imageProcessingQueue = DispatchQueue(label: "image-processing") + + init(url: URL, cache: ImageCache? = nil) { + self.url = url + self.cache = cache + if let image = cache?[url] { + self.image = image + } + } + + deinit { + cancellable?.cancel() + } + + func load() { + guard !isLoading else { return } + + if let image = cache?[url] { + self.image = image + return + } + + cancellable = URLSession.shared.dataTaskPublisher(for: url) + .map { UIImage(data: $0.data) } + .replaceError(with: nil) + .handleEvents(receiveSubscription: { [weak self] _ in self?.onStart() }, + receiveOutput: { [weak self] in self?.cache($0) }, + receiveCompletion: { [weak self] _ in self?.onFinish() }, + receiveCancel: { [weak self] in self?.onFinish() }) + .subscribe(on: Self.imageProcessingQueue) + .receive(on: DispatchQueue.main) + .assign(to: \.image, on: self) + } + + //cancel task + func cancel() { + cancellable?.cancel() + } + + //mark starting loading + private func onStart() { + isLoading = true + } + + //end loading + private func onFinish() { + isLoading = false + } + + private func cache(_ image: UIImage?) { + image.map { cache?[url] = $0 } + } +} + diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/PlaceholderImageView.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/PlaceholderImageView.swift new file mode 100644 index 0000000..416b45a --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Sources/CachableAsyncImage/PlaceholderImageView.swift @@ -0,0 +1,19 @@ +// +// PlaceholderImageView.swift +// +// +// Created by Jacklandrin on 2023/8/7. +// + +import SwiftUI + +public struct PlaceholderImageView: View { + + public init() {} + + public var body: some View { + Image(systemName: "photo.fill") + .resizable() + .foregroundColor(.blue) + } +} diff --git a/Swift/Other/CodingChallenge/CachableAsyncImage/Tests/CachableAsyncImageTests/CachableAsyncImageTests.swift b/Swift/Other/CodingChallenge/CachableAsyncImage/Tests/CachableAsyncImageTests/CachableAsyncImageTests.swift new file mode 100644 index 0000000..8b5f57e --- /dev/null +++ b/Swift/Other/CodingChallenge/CachableAsyncImage/Tests/CachableAsyncImageTests/CachableAsyncImageTests.swift @@ -0,0 +1,4 @@ +import XCTest +@testable import CachableAsyncImage + +final class CachableAsyncImageTests: XCTestCase {} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/.gitignore b/Swift/Other/CodingChallenge/NetworkingProvider/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Swift/Other/CodingChallenge/NetworkingProvider/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/.swiftpm/xcode/package.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Package.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Package.swift new file mode 100644 index 0000000..4dcc5a3 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Package.swift @@ -0,0 +1,25 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "NetworkingProvider", + platforms: [.iOS(.v16)], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "NetworkingProvider", + targets: ["NetworkingProvider"]), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "NetworkingProvider", + dependencies: []), + .testTarget( + name: "NetworkingProviderTests", + dependencies: ["NetworkingProvider"]), + ] +) diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/README.md b/Swift/Other/CodingChallenge/NetworkingProvider/README.md new file mode 100644 index 0000000..c22e6be --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/README.md @@ -0,0 +1,21 @@ +# NetworkingProvider + +NetworkingProvider provides basic network services. + +### NetworkEnviroment +Defined Http header keys, methods and mimeType. + +### NetworkService +A protocol helps define a request with the necessary elements. + +### NetworkProviderProtocol +A protocol for network clients. + +### RequestError +Defined some network errors. + +### Session +Customised URLSession that can decode data by specific type and throw RequestErrors. + +### SessionProtocol +A protocol for sessions. \ No newline at end of file diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkEnviroment.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkEnviroment.swift new file mode 100644 index 0000000..5d200d7 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkEnviroment.swift @@ -0,0 +1,47 @@ +// +// NetworkEnviroment.swift +// Defined Http header keys, methods and mimeType. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public enum NetworkEnvironment { + public static let successStatusCodeRange: Range = 200 ..< 300 + public static let requestDefaultTimeout: TimeInterval = 60 +} + +public enum HttpHeaderKey { + public static let contentType = "Content-Type" + public static let acceptLanguage = "Accept-Language" + public static let contentLength = "Content-Length" + public static let contentDisposition = "Content-Disposition" + public static let accept = "Accept" + public static let authorization = "Authorization" +} + +public enum HttpMethod: String { + case get = "GET" + case post = "POST" + case patch = "PATCH" + case delete = "DELETE" + case connect = "CONNECT" + case head = "HEAD" + case options = "OPTIONS" + case put = "PUT" + case trace = "TRACE" +} + +public enum MimeType: String { + case json = "application/json" + case plain = "text/plain" + case javascript = "text/javascript" + case gif = "image/gif" + case png = "image/png" + case jpg = "image/jpg" + case jpeg = "image/jpeg" + case svg = "image/svg" + case multipart = "multipart/form-data" + case urlEncoded = "application/x-www-form-urlencoded" +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkService.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkService.swift new file mode 100644 index 0000000..bdc729f --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkService.swift @@ -0,0 +1,69 @@ +// +// NetworkService.swift +// A protocol helps define a request with the necessary elements. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public protocol NetworkService { + var baseURL: String { get } + var path: String { get } + var method: HttpMethod { get } + var httpBody: Encodable? { get } + var headers: [String: String]? { get } + var queryParameters: [URLQueryItem]? { get } + var timeout: TimeInterval? { get } +} + +public extension NetworkService { + + var urlRequest: URLRequest { + guard let url = self.url else { + fatalError("URL could not be built") + } + + var request = URLRequest(url: url) + request.httpMethod = method.rawValue + request.allHTTPHeaderFields = headers + request.timeoutInterval = timeout ?? NetworkEnvironment.requestDefaultTimeout + + if let httpBody = httpBody { + request.httpBody = try? httpBody.jsonEncode() + } + + return request + } +} + +private extension NetworkService { + + var url: URL? { + let urlComponents = URLComponents(string: baseURL) + guard var components = urlComponents else { + return URL(string: baseURL) + } + + components.path = components.path.appending(path) + + guard let queryParams = queryParameters else { + return components.url + } + + if components.queryItems == nil { + components.queryItems = [] + } + + components.queryItems?.append(contentsOf: queryParams) + + return components.url + } +} + +private extension Encodable { + + func jsonEncode() throws -> Data? { + try JSONEncoder().encode(self) + } +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkingProvider.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkingProvider.swift new file mode 100644 index 0000000..10cd2fb --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/NetworkingProvider.swift @@ -0,0 +1,16 @@ +// +// NetworkingProvider.swift +// A protocol for network clients. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public protocol NetworkProviderProtocol { + + var urlSession: SessionProtocol { get } + var service: NetworkService { get } + + func request(dataType: T.Type) async throws -> T where T: Decodable +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/RequestError.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/RequestError.swift new file mode 100644 index 0000000..a085dcf --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/RequestError.swift @@ -0,0 +1,37 @@ +// +// RequestError.swift +// Defined some network errors. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public enum RequestError: Error { + case operationCancelled + case requestFailed(error: Error) + case unknownStatusCode + case unexpectedStatusCode(code: Int) + case contentEmptyData + case contentDecoding(error: Error) +} + +extension RequestError: CustomStringConvertible { + + public var description: String { + switch self { + case .operationCancelled: + return "Operation was cancelled" + case let .requestFailed(error): + return "Request failed with \(error)" + case .unknownStatusCode: + return "The status code is unknown" + case let .unexpectedStatusCode(error): + return "The status code is unexpected \(error)" + case .contentEmptyData: + return "The contyent data is empty" + case let .contentDecoding(error): + return "Error while decoding with \(error)" + } + } +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/Session.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/Session.swift new file mode 100644 index 0000000..c5c6f46 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/Session.swift @@ -0,0 +1,69 @@ +// +// Session.swift +// Customised URLSession that can decode data by specific type and throw RequestErrors. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public class Session: SessionProtocol { + + public let session: URLSession + + public init(session: URLSession = .shared) { + self.session = session + } + + /// Convenience method to load decoded data using an URLRequest, it can throw RequestErrors. + /// - Parameters: + /// - request: The URLRequest for which to load data. + /// - dataType: The type of deserialized object. + /// - Throws: RequestErrors. + /// - Returns: Deserialized object. + public func dataTask( + _ request: URLRequest, + dataType: T.Type + ) async throws -> (T, URLResponse) where T : Decodable { + + let (data, response) = try await dataTask(request) + try validate(response: response, statusCodes: NetworkEnvironment.successStatusCodeRange) + let result = try decode(data: data, type: dataType) + return (result, response) + } + + private func dataTask(_ request: URLRequest) async throws -> (Data, URLResponse) { + do { + return try await session.data(for: request) + } catch { + throw RequestError.requestFailed(error: error) + } + } +} + +private extension Session { + func validate(response: URLResponse?, statusCodes: Range) throws { + guard let httpResponse = response as? HTTPURLResponse else { + throw RequestError.unknownStatusCode + } + + if !statusCodes.contains(httpResponse.statusCode) { + throw RequestError.unexpectedStatusCode(code: httpResponse.statusCode) + } + } + + func decode(data: Data?, type: T.Type) throws -> T { + guard + let data = data, + !data.isEmpty + else { + throw RequestError.contentEmptyData + } + + do { + return try JSONDecoder().decode(type, from: data) + } catch { + throw RequestError.contentDecoding(error: error) + } + } +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/SessionProtocol.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/SessionProtocol.swift new file mode 100644 index 0000000..ba5a1b3 --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Sources/NetworkingProvider/SessionProtocol.swift @@ -0,0 +1,24 @@ +// +// SessionProtocol.swift +// A protocol for sessions. +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +public protocol SessionProtocol { + + /// Convenience method to load decoded data using an URLRequest, it can throw RequestErrors. + /// - Parameters: + /// - request: The URLRequest for which to load data. + /// - dataType: The type of deserialized object. + /// - Throws: RequestErrors. + /// - Returns: Deserialized object. + func dataTask ( + _ request: URLRequest, + dataType: T.Type + ) async throws -> (T, URLResponse) + + var session: URLSession { get } +} diff --git a/Swift/Other/CodingChallenge/NetworkingProvider/Tests/NetworkingProviderTests/NetworkingProviderTests.swift b/Swift/Other/CodingChallenge/NetworkingProvider/Tests/NetworkingProviderTests/NetworkingProviderTests.swift new file mode 100644 index 0000000..dc8030d --- /dev/null +++ b/Swift/Other/CodingChallenge/NetworkingProvider/Tests/NetworkingProviderTests/NetworkingProviderTests.swift @@ -0,0 +1,4 @@ +import XCTest +@testable import NetworkingProvider + +final class NetworkingProviderTests: XCTestCase {} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage1.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage1.json new file mode 100644 index 0000000..d503192 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage1.json @@ -0,0 +1,48 @@ +{ + "total_count": 160136, + "incomplete_results": false, + "items": [ + { + "login": "jack", + "id": 85945244, + "node_id": "MDQ6VXNlcjg1OTQ1MjQ0", + "avatar_url": "https://avatars.githubusercontent.com/u/85945244?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jack", + "html_url": "https://github.com/jack", + "followers_url": "https://api.github.com/users/jack/followers", + "following_url": "https://api.github.com/users/jack/following{/other_user}", + "gists_url": "https://api.github.com/users/jack/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jack/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jack/subscriptions", + "organizations_url": "https://api.github.com/users/jack/orgs", + "repos_url": "https://api.github.com/users/jack/repos", + "events_url": "https://api.github.com/users/jack/events{/privacy}", + "received_events_url": "https://api.github.com/users/jack/received_events", + "type": "User", + "site_admin": false, + "score": 1.0 + }, + { + "login": "JacksonTian", + "id": 327019, + "node_id": "MDQ6VXNlcjMyNzAxOQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/327019?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JacksonTian", + "html_url": "https://github.com/JacksonTian", + "followers_url": "https://api.github.com/users/JacksonTian/followers", + "following_url": "https://api.github.com/users/JacksonTian/following{/other_user}", + "gists_url": "https://api.github.com/users/JacksonTian/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JacksonTian/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JacksonTian/subscriptions", + "organizations_url": "https://api.github.com/users/JacksonTian/orgs", + "repos_url": "https://api.github.com/users/JacksonTian/repos", + "events_url": "https://api.github.com/users/JacksonTian/events{/privacy}", + "received_events_url": "https://api.github.com/users/JacksonTian/received_events", + "type": "User", + "site_admin": false, + "score": 1.0 + } + ] +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage2.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage2.json new file mode 100644 index 0000000..59ef478 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/ResultPage2.json @@ -0,0 +1,48 @@ +{ + "total_count": 160143, + "incomplete_results": false, + "items": [ + { + "login": "jackfrued", + "id": 7474657, + "node_id": "MDQ6VXNlcjc0NzQ2NTc=", + "avatar_url": "https://avatars.githubusercontent.com/u/7474657?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jackfrued", + "html_url": "https://github.com/jackfrued", + "followers_url": "https://api.github.com/users/jackfrued/followers", + "following_url": "https://api.github.com/users/jackfrued/following{/other_user}", + "gists_url": "https://api.github.com/users/jackfrued/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jackfrued/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jackfrued/subscriptions", + "organizations_url": "https://api.github.com/users/jackfrued/orgs", + "repos_url": "https://api.github.com/users/jackfrued/repos", + "events_url": "https://api.github.com/users/jackfrued/events{/privacy}", + "received_events_url": "https://api.github.com/users/jackfrued/received_events", + "type": "User", + "site_admin": false, + "score": 1.0 + }, + { + "login": "jackfranklin", + "id": 193238, + "node_id": "MDQ6VXNlcjE5MzIzOA==", + "avatar_url": "https://avatars.githubusercontent.com/u/193238?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jackfranklin", + "html_url": "https://github.com/jackfranklin", + "followers_url": "https://api.github.com/users/jackfranklin/followers", + "following_url": "https://api.github.com/users/jackfranklin/following{/other_user}", + "gists_url": "https://api.github.com/users/jackfranklin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jackfranklin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jackfranklin/subscriptions", + "organizations_url": "https://api.github.com/users/jackfranklin/orgs", + "repos_url": "https://api.github.com/users/jackfranklin/repos", + "events_url": "https://api.github.com/users/jackfranklin/events{/privacy}", + "received_events_url": "https://api.github.com/users/jackfranklin/received_events", + "type": "User", + "site_admin": false, + "score": 1.0 + } + ] +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/UserDetail.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/UserDetail.json new file mode 100644 index 0000000..23d284e --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/Resource/UserDetail.json @@ -0,0 +1,34 @@ +{ + "login": "jacklandrin", + "id": 3782279, + "node_id": "MDQ6VXNlcjM3ODIyNzk=", + "avatar_url": "https://avatars.githubusercontent.com/u/3782279?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/jacklandrin", + "html_url": "https://github.com/jacklandrin", + "followers_url": "https://api.github.com/users/jacklandrin/followers", + "following_url": "https://api.github.com/users/jacklandrin/following{/other_user}", + "gists_url": "https://api.github.com/users/jacklandrin/gists{/gist_id}", + "starred_url": "https://api.github.com/users/jacklandrin/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/jacklandrin/subscriptions", + "organizations_url": "https://api.github.com/users/jacklandrin/orgs", + "repos_url": "https://api.github.com/users/jacklandrin/repos", + "events_url": "https://api.github.com/users/jacklandrin/events{/privacy}", + "received_events_url": "https://api.github.com/users/jacklandrin/received_events", + "type": "User", + "site_admin": false, + "name": "jack", + "company": "PAYBACK", + "blog": "https://jacklandrin.github.io", + "location": "Munich", + "email": null, + "hireable": null, + "bio": "iOS developer", + "twitter_username": null, + "public_repos": 24, + "public_gists": 0, + "followers": 147, + "following": 97, + "created_at": "2013-03-06T01:36:54Z", + "updated_at": "2023-04-01T15:18:45Z" +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge.xcodeproj/project.pbxproj b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge.xcodeproj/project.pbxproj new file mode 100644 index 0000000..bac5646 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge.xcodeproj/project.pbxproj @@ -0,0 +1,798 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 04F1902B2A81111E00EB27D7 /* WeltCodingChallengeApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1902A2A81111E00EB27D7 /* WeltCodingChallengeApp.swift */; }; + 04F1902D2A81111E00EB27D7 /* SearchListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1902C2A81111E00EB27D7 /* SearchListView.swift */; }; + 04F1902F2A81111F00EB27D7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04F1902E2A81111F00EB27D7 /* Assets.xcassets */; }; + 04F190322A81111F00EB27D7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04F190312A81111F00EB27D7 /* Preview Assets.xcassets */; }; + 04F1903A2A8112E400EB27D7 /* ComposableArchitecture in Frameworks */ = {isa = PBXBuildFile; productRef = 04F190392A8112E400EB27D7 /* ComposableArchitecture */; }; + 04F1903F2A81238E00EB27D7 /* SearchListReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1903E2A81238E00EB27D7 /* SearchListReducer.swift */; }; + 04F190422A8124CE00EB27D7 /* GithubUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190412A8124CE00EB27D7 /* GithubUser.swift */; }; + 04F190452A812D5E00EB27D7 /* SearchListService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190442A812D5E00EB27D7 /* SearchListService.swift */; }; + 04F190472A812E2200EB27D7 /* SearchListService+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190462A812E2200EB27D7 /* SearchListService+Test.swift */; }; + 04F1904B2A81313B00EB27D7 /* SearchListService+Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1904A2A81313B00EB27D7 /* SearchListService+Dependencies.swift */; }; + 04F190532A8133C600EB27D7 /* SearchListTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190522A8133C600EB27D7 /* SearchListTests.swift */; }; + 04F190592A8134D500EB27D7 /* SearchListReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1903E2A81238E00EB27D7 /* SearchListReducer.swift */; }; + 04F1905A2A8134DC00EB27D7 /* SearchListService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190442A812D5E00EB27D7 /* SearchListService.swift */; }; + 04F1905B2A8134DE00EB27D7 /* SearchListService+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190462A812E2200EB27D7 /* SearchListService+Test.swift */; }; + 04F1905C2A8134E200EB27D7 /* SearchListService+Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1904A2A81313B00EB27D7 /* SearchListService+Dependencies.swift */; }; + 04F1905D2A8137A500EB27D7 /* GithubUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190412A8124CE00EB27D7 /* GithubUser.swift */; }; + 04F190602A81386100EB27D7 /* ErrorDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1905F2A81386100EB27D7 /* ErrorDefine.swift */; }; + 04F190612A81386100EB27D7 /* ErrorDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1905F2A81386100EB27D7 /* ErrorDefine.swift */; }; + 04F190632A8138EB00EB27D7 /* ResultPage1.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190492A812F8200EB27D7 /* ResultPage1.json */; }; + 04F190652A813DA600EB27D7 /* ResultPage2.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190642A813DA600EB27D7 /* ResultPage2.json */; }; + 04F190662A813DAF00EB27D7 /* ResultPage1.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190492A812F8200EB27D7 /* ResultPage1.json */; }; + 04F190672A813DB100EB27D7 /* ResultPage2.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190642A813DA600EB27D7 /* ResultPage2.json */; }; + 04F190692A81415400EB27D7 /* SearchedUserModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190682A81415400EB27D7 /* SearchedUserModel.swift */; }; + 04F1906A2A81415400EB27D7 /* SearchedUserModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190682A81415400EB27D7 /* SearchedUserModel.swift */; }; + 04F190702A81550200EB27D7 /* CachableAsyncImage in Frameworks */ = {isa = PBXBuildFile; productRef = 04F1906F2A81550200EB27D7 /* CachableAsyncImage */; }; + 04F190722A81550500EB27D7 /* NetworkingProvider in Frameworks */ = {isa = PBXBuildFile; productRef = 04F190712A81550500EB27D7 /* NetworkingProvider */; }; + 04F190752A8158E200EB27D7 /* CommonNetworkDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190742A8158E200EB27D7 /* CommonNetworkDefine.swift */; }; + 04F190782A81597600EB27D7 /* SearchUserNetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190772A81597600EB27D7 /* SearchUserNetworkService.swift */; }; + 04F1907A2A815CC000EB27D7 /* ServiceClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190792A815CC000EB27D7 /* ServiceClient.swift */; }; + 04F1907C2A8161A300EB27D7 /* SearchListRepoProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1907B2A8161A300EB27D7 /* SearchListRepoProtocol.swift */; }; + 04F1907D2A8161A300EB27D7 /* SearchListRepoProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1907B2A8161A300EB27D7 /* SearchListRepoProtocol.swift */; }; + 04F1907F2A81626600EB27D7 /* SearchListRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1907E2A81626600EB27D7 /* SearchListRepository.swift */; }; + 04F190812A81634000EB27D7 /* SearchListService+Live.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190802A81634000EB27D7 /* SearchListService+Live.swift */; }; + 04F190842A81694700EB27D7 /* SearchResultAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190832A81694700EB27D7 /* SearchResultAdaptor.swift */; }; + 04F190852A81694700EB27D7 /* SearchResultAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190832A81694700EB27D7 /* SearchResultAdaptor.swift */; }; + 04F190882A816D9B00EB27D7 /* HiddenModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190872A816D9B00EB27D7 /* HiddenModifier.swift */; }; + 04F1908A2A81742E00EB27D7 /* SizeDefine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190892A81742D00EB27D7 /* SizeDefine.swift */; }; + 04F1908C2A8175EA00EB27D7 /* ImageName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1908B2A8175EA00EB27D7 /* ImageName.swift */; }; + 04F1908F2A818DEE00EB27D7 /* UserDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1908E2A818DEE00EB27D7 /* UserDetailView.swift */; }; + 04F190912A818E0700EB27D7 /* UserDetailReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190902A818E0700EB27D7 /* UserDetailReducer.swift */; }; + 04F190922A818E0700EB27D7 /* UserDetailReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190902A818E0700EB27D7 /* UserDetailReducer.swift */; }; + 04F190942A818FCE00EB27D7 /* UserDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190932A818FCE00EB27D7 /* UserDetailModel.swift */; }; + 04F190952A818FCE00EB27D7 /* UserDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190932A818FCE00EB27D7 /* UserDetailModel.swift */; }; + 04F190972A81905A00EB27D7 /* UserDetailAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190962A81905A00EB27D7 /* UserDetailAdaptor.swift */; }; + 04F190982A81905A00EB27D7 /* UserDetailAdaptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190962A81905A00EB27D7 /* UserDetailAdaptor.swift */; }; + 04F1909B2A8193B000EB27D7 /* UserDetailService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1909A2A8193B000EB27D7 /* UserDetailService.swift */; }; + 04F1909C2A8193B000EB27D7 /* UserDetailService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1909A2A8193B000EB27D7 /* UserDetailService.swift */; }; + 04F1909E2A81940F00EB27D7 /* UserDetailService+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1909D2A81940F00EB27D7 /* UserDetailService+Test.swift */; }; + 04F1909F2A81940F00EB27D7 /* UserDetailService+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F1909D2A81940F00EB27D7 /* UserDetailService+Test.swift */; }; + 04F190A12A8194B000EB27D7 /* UserDetail.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190A02A8194B000EB27D7 /* UserDetail.json */; }; + 04F190A22A8194B000EB27D7 /* UserDetail.json in Resources */ = {isa = PBXBuildFile; fileRef = 04F190A02A8194B000EB27D7 /* UserDetail.json */; }; + 04F190A42A81953C00EB27D7 /* UserDetailService+Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190A32A81953C00EB27D7 /* UserDetailService+Dependencies.swift */; }; + 04F190A52A81953C00EB27D7 /* UserDetailService+Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190A32A81953C00EB27D7 /* UserDetailService+Dependencies.swift */; }; + 04F190A72A819AC800EB27D7 /* UserDetailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190A62A819AC800EB27D7 /* UserDetailTests.swift */; }; + 04F190AA2A81A11900EB27D7 /* UserDetailNetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190A92A81A11900EB27D7 /* UserDetailNetworkService.swift */; }; + 04F190AC2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190AB2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift */; }; + 04F190AD2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190AB2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift */; }; + 04F190AF2A81A23000EB27D7 /* UserDetailRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190AE2A81A23000EB27D7 /* UserDetailRepository.swift */; }; + 04F190B12A81A29300EB27D7 /* UserDetailService+Live.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190B02A81A29300EB27D7 /* UserDetailService+Live.swift */; }; + 04F190B42A82DA7D00EB27D7 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04F190B32A82DA7D00EB27D7 /* Context.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 04F190542A8133C600EB27D7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 04F1901F2A81111E00EB27D7 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 04F190262A81111E00EB27D7; + remoteInfo = WeltCodingChallenge; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 04F190272A81111E00EB27D7 /* WeltCodingChallenge.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WeltCodingChallenge.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 04F1902A2A81111E00EB27D7 /* WeltCodingChallengeApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeltCodingChallengeApp.swift; sourceTree = ""; }; + 04F1902C2A81111E00EB27D7 /* SearchListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListView.swift; sourceTree = ""; }; + 04F1902E2A81111F00EB27D7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 04F190312A81111F00EB27D7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 04F1903C2A81224000EB27D7 /* NetworkingProvider */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = NetworkingProvider; path = ../NetworkingProvider; sourceTree = ""; }; + 04F1903E2A81238E00EB27D7 /* SearchListReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListReducer.swift; sourceTree = ""; }; + 04F190412A8124CE00EB27D7 /* GithubUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GithubUser.swift; sourceTree = ""; }; + 04F190442A812D5E00EB27D7 /* SearchListService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListService.swift; sourceTree = ""; }; + 04F190462A812E2200EB27D7 /* SearchListService+Test.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchListService+Test.swift"; sourceTree = ""; }; + 04F190492A812F8200EB27D7 /* ResultPage1.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = ResultPage1.json; sourceTree = ""; }; + 04F1904A2A81313B00EB27D7 /* SearchListService+Dependencies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchListService+Dependencies.swift"; sourceTree = ""; }; + 04F190502A8133C600EB27D7 /* WeltCodingChallengeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WeltCodingChallengeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 04F190522A8133C600EB27D7 /* SearchListTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListTests.swift; sourceTree = ""; }; + 04F1905F2A81386100EB27D7 /* ErrorDefine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorDefine.swift; sourceTree = ""; }; + 04F190642A813DA600EB27D7 /* ResultPage2.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = ResultPage2.json; sourceTree = ""; }; + 04F190682A81415400EB27D7 /* SearchedUserModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchedUserModel.swift; sourceTree = ""; }; + 04F1906D2A814EAD00EB27D7 /* CachableAsyncImage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = CachableAsyncImage; path = ../CachableAsyncImage; sourceTree = ""; }; + 04F190742A8158E200EB27D7 /* CommonNetworkDefine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommonNetworkDefine.swift; sourceTree = ""; }; + 04F190772A81597600EB27D7 /* SearchUserNetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchUserNetworkService.swift; sourceTree = ""; }; + 04F190792A815CC000EB27D7 /* ServiceClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServiceClient.swift; sourceTree = ""; }; + 04F1907B2A8161A300EB27D7 /* SearchListRepoProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListRepoProtocol.swift; sourceTree = ""; }; + 04F1907E2A81626600EB27D7 /* SearchListRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchListRepository.swift; sourceTree = ""; }; + 04F190802A81634000EB27D7 /* SearchListService+Live.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchListService+Live.swift"; sourceTree = ""; }; + 04F190832A81694700EB27D7 /* SearchResultAdaptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultAdaptor.swift; sourceTree = ""; }; + 04F190872A816D9B00EB27D7 /* HiddenModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HiddenModifier.swift; sourceTree = ""; }; + 04F190892A81742D00EB27D7 /* SizeDefine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SizeDefine.swift; sourceTree = ""; }; + 04F1908B2A8175EA00EB27D7 /* ImageName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageName.swift; sourceTree = ""; }; + 04F1908E2A818DEE00EB27D7 /* UserDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailView.swift; sourceTree = ""; }; + 04F190902A818E0700EB27D7 /* UserDetailReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailReducer.swift; sourceTree = ""; }; + 04F190932A818FCE00EB27D7 /* UserDetailModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailModel.swift; sourceTree = ""; }; + 04F190962A81905A00EB27D7 /* UserDetailAdaptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailAdaptor.swift; sourceTree = ""; }; + 04F1909A2A8193B000EB27D7 /* UserDetailService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailService.swift; sourceTree = ""; }; + 04F1909D2A81940F00EB27D7 /* UserDetailService+Test.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDetailService+Test.swift"; sourceTree = ""; }; + 04F190A02A8194B000EB27D7 /* UserDetail.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = UserDetail.json; sourceTree = ""; }; + 04F190A32A81953C00EB27D7 /* UserDetailService+Dependencies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDetailService+Dependencies.swift"; sourceTree = ""; }; + 04F190A62A819AC800EB27D7 /* UserDetailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailTests.swift; sourceTree = ""; }; + 04F190A92A81A11900EB27D7 /* UserDetailNetworkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailNetworkService.swift; sourceTree = ""; }; + 04F190AB2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailRepoProtocol.swift; sourceTree = ""; }; + 04F190AE2A81A23000EB27D7 /* UserDetailRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDetailRepository.swift; sourceTree = ""; }; + 04F190B02A81A29300EB27D7 /* UserDetailService+Live.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDetailService+Live.swift"; sourceTree = ""; }; + 04F190B32A82DA7D00EB27D7 /* Context.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 04F190242A81111E00EB27D7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 04F190722A81550500EB27D7 /* NetworkingProvider in Frameworks */, + 04F190702A81550200EB27D7 /* CachableAsyncImage in Frameworks */, + 04F1903A2A8112E400EB27D7 /* ComposableArchitecture in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 04F1904D2A8133C600EB27D7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 04F1901E2A81111E00EB27D7 = { + isa = PBXGroup; + children = ( + 04F190292A81111E00EB27D7 /* WeltCodingChallenge */, + 04F190482A812F5300EB27D7 /* Resource */, + 04F1903B2A81224000EB27D7 /* Packages */, + 04F190512A8133C600EB27D7 /* WeltCodingChallengeTests */, + 04F190282A81111E00EB27D7 /* Products */, + 04F1906E2A81550200EB27D7 /* Frameworks */, + ); + sourceTree = ""; + }; + 04F190282A81111E00EB27D7 /* Products */ = { + isa = PBXGroup; + children = ( + 04F190272A81111E00EB27D7 /* WeltCodingChallenge.app */, + 04F190502A8133C600EB27D7 /* WeltCodingChallengeTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 04F190292A81111E00EB27D7 /* WeltCodingChallenge */ = { + isa = PBXGroup; + children = ( + 04F190B22A81A44600EB27D7 /* Top */, + 04F1903D2A81236700EB27D7 /* SearchList */, + 04F1908D2A818DCF00EB27D7 /* UserDetail */, + 04F190862A816D7900EB27D7 /* Modifiers */, + 04F190402A8124B100EB27D7 /* Models */, + 04F190822A8168B500EB27D7 /* Adaptors */, + 04F190762A81591900EB27D7 /* Repositories */, + 04F1905E2A81384800EB27D7 /* Define */, + 04F1902E2A81111F00EB27D7 /* Assets.xcassets */, + 04F190302A81111F00EB27D7 /* Preview Content */, + ); + path = WeltCodingChallenge; + sourceTree = ""; + }; + 04F190302A81111F00EB27D7 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 04F190312A81111F00EB27D7 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 04F1903B2A81224000EB27D7 /* Packages */ = { + isa = PBXGroup; + children = ( + 04F1903C2A81224000EB27D7 /* NetworkingProvider */, + 04F1906D2A814EAD00EB27D7 /* CachableAsyncImage */, + ); + name = Packages; + sourceTree = ""; + }; + 04F1903D2A81236700EB27D7 /* SearchList */ = { + isa = PBXGroup; + children = ( + 04F190432A812C1C00EB27D7 /* SearchListService */, + 04F1902C2A81111E00EB27D7 /* SearchListView.swift */, + 04F1903E2A81238E00EB27D7 /* SearchListReducer.swift */, + ); + path = SearchList; + sourceTree = ""; + }; + 04F190402A8124B100EB27D7 /* Models */ = { + isa = PBXGroup; + children = ( + 04F190412A8124CE00EB27D7 /* GithubUser.swift */, + 04F190682A81415400EB27D7 /* SearchedUserModel.swift */, + 04F190932A818FCE00EB27D7 /* UserDetailModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 04F190432A812C1C00EB27D7 /* SearchListService */ = { + isa = PBXGroup; + children = ( + 04F190442A812D5E00EB27D7 /* SearchListService.swift */, + 04F190802A81634000EB27D7 /* SearchListService+Live.swift */, + 04F190462A812E2200EB27D7 /* SearchListService+Test.swift */, + 04F1904A2A81313B00EB27D7 /* SearchListService+Dependencies.swift */, + ); + path = SearchListService; + sourceTree = ""; + }; + 04F190482A812F5300EB27D7 /* Resource */ = { + isa = PBXGroup; + children = ( + 04F190492A812F8200EB27D7 /* ResultPage1.json */, + 04F190642A813DA600EB27D7 /* ResultPage2.json */, + 04F190A02A8194B000EB27D7 /* UserDetail.json */, + ); + path = Resource; + sourceTree = ""; + }; + 04F190512A8133C600EB27D7 /* WeltCodingChallengeTests */ = { + isa = PBXGroup; + children = ( + 04F190522A8133C600EB27D7 /* SearchListTests.swift */, + 04F190A62A819AC800EB27D7 /* UserDetailTests.swift */, + ); + path = WeltCodingChallengeTests; + sourceTree = ""; + }; + 04F1905E2A81384800EB27D7 /* Define */ = { + isa = PBXGroup; + children = ( + 04F1905F2A81386100EB27D7 /* ErrorDefine.swift */, + 04F190892A81742D00EB27D7 /* SizeDefine.swift */, + 04F1908B2A8175EA00EB27D7 /* ImageName.swift */, + ); + path = Define; + sourceTree = ""; + }; + 04F1906E2A81550200EB27D7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 04F190732A81589F00EB27D7 /* SearchListRepository */ = { + isa = PBXGroup; + children = ( + 04F190772A81597600EB27D7 /* SearchUserNetworkService.swift */, + 04F1907B2A8161A300EB27D7 /* SearchListRepoProtocol.swift */, + 04F1907E2A81626600EB27D7 /* SearchListRepository.swift */, + ); + path = SearchListRepository; + sourceTree = ""; + }; + 04F190762A81591900EB27D7 /* Repositories */ = { + isa = PBXGroup; + children = ( + 04F190B32A82DA7D00EB27D7 /* Context.swift */, + 04F190742A8158E200EB27D7 /* CommonNetworkDefine.swift */, + 04F190792A815CC000EB27D7 /* ServiceClient.swift */, + 04F190732A81589F00EB27D7 /* SearchListRepository */, + 04F190A82A81A0ED00EB27D7 /* UserDetailRepository */, + ); + path = Repositories; + sourceTree = ""; + }; + 04F190822A8168B500EB27D7 /* Adaptors */ = { + isa = PBXGroup; + children = ( + 04F190832A81694700EB27D7 /* SearchResultAdaptor.swift */, + 04F190962A81905A00EB27D7 /* UserDetailAdaptor.swift */, + ); + path = Adaptors; + sourceTree = ""; + }; + 04F190862A816D7900EB27D7 /* Modifiers */ = { + isa = PBXGroup; + children = ( + 04F190872A816D9B00EB27D7 /* HiddenModifier.swift */, + ); + path = Modifiers; + sourceTree = ""; + }; + 04F1908D2A818DCF00EB27D7 /* UserDetail */ = { + isa = PBXGroup; + children = ( + 04F190992A81938800EB27D7 /* UserDetailService */, + 04F1908E2A818DEE00EB27D7 /* UserDetailView.swift */, + 04F190902A818E0700EB27D7 /* UserDetailReducer.swift */, + ); + path = UserDetail; + sourceTree = ""; + }; + 04F190992A81938800EB27D7 /* UserDetailService */ = { + isa = PBXGroup; + children = ( + 04F1909A2A8193B000EB27D7 /* UserDetailService.swift */, + 04F190B02A81A29300EB27D7 /* UserDetailService+Live.swift */, + 04F1909D2A81940F00EB27D7 /* UserDetailService+Test.swift */, + 04F190A32A81953C00EB27D7 /* UserDetailService+Dependencies.swift */, + ); + path = UserDetailService; + sourceTree = ""; + }; + 04F190A82A81A0ED00EB27D7 /* UserDetailRepository */ = { + isa = PBXGroup; + children = ( + 04F190A92A81A11900EB27D7 /* UserDetailNetworkService.swift */, + 04F190AB2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift */, + 04F190AE2A81A23000EB27D7 /* UserDetailRepository.swift */, + ); + path = UserDetailRepository; + sourceTree = ""; + }; + 04F190B22A81A44600EB27D7 /* Top */ = { + isa = PBXGroup; + children = ( + 04F1902A2A81111E00EB27D7 /* WeltCodingChallengeApp.swift */, + ); + path = Top; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 04F190262A81111E00EB27D7 /* WeltCodingChallenge */ = { + isa = PBXNativeTarget; + buildConfigurationList = 04F190352A81111F00EB27D7 /* Build configuration list for PBXNativeTarget "WeltCodingChallenge" */; + buildPhases = ( + 04F190232A81111E00EB27D7 /* Sources */, + 04F190242A81111E00EB27D7 /* Frameworks */, + 04F190252A81111E00EB27D7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WeltCodingChallenge; + packageProductDependencies = ( + 04F190392A8112E400EB27D7 /* ComposableArchitecture */, + 04F1906F2A81550200EB27D7 /* CachableAsyncImage */, + 04F190712A81550500EB27D7 /* NetworkingProvider */, + ); + productName = WeltCodingChallenge; + productReference = 04F190272A81111E00EB27D7 /* WeltCodingChallenge.app */; + productType = "com.apple.product-type.application"; + }; + 04F1904F2A8133C600EB27D7 /* WeltCodingChallengeTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 04F190562A8133C600EB27D7 /* Build configuration list for PBXNativeTarget "WeltCodingChallengeTests" */; + buildPhases = ( + 04F1904C2A8133C600EB27D7 /* Sources */, + 04F1904D2A8133C600EB27D7 /* Frameworks */, + 04F1904E2A8133C600EB27D7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 04F190552A8133C600EB27D7 /* PBXTargetDependency */, + ); + name = WeltCodingChallengeTests; + productName = WeltCodingChallengeTests; + productReference = 04F190502A8133C600EB27D7 /* WeltCodingChallengeTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 04F1901F2A81111E00EB27D7 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; + TargetAttributes = { + 04F190262A81111E00EB27D7 = { + CreatedOnToolsVersion = 14.3.1; + }; + 04F1904F2A8133C600EB27D7 = { + CreatedOnToolsVersion = 14.3.1; + TestTargetID = 04F190262A81111E00EB27D7; + }; + }; + }; + buildConfigurationList = 04F190222A81111E00EB27D7 /* Build configuration list for PBXProject "WeltCodingChallenge" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 04F1901E2A81111E00EB27D7; + packageReferences = ( + 04F190382A8112E400EB27D7 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */, + ); + productRefGroup = 04F190282A81111E00EB27D7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 04F190262A81111E00EB27D7 /* WeltCodingChallenge */, + 04F1904F2A8133C600EB27D7 /* WeltCodingChallengeTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 04F190252A81111E00EB27D7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 04F190A12A8194B000EB27D7 /* UserDetail.json in Resources */, + 04F190322A81111F00EB27D7 /* Preview Assets.xcassets in Resources */, + 04F190672A813DB100EB27D7 /* ResultPage2.json in Resources */, + 04F190662A813DAF00EB27D7 /* ResultPage1.json in Resources */, + 04F1902F2A81111F00EB27D7 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 04F1904E2A8133C600EB27D7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 04F190632A8138EB00EB27D7 /* ResultPage1.json in Resources */, + 04F190652A813DA600EB27D7 /* ResultPage2.json in Resources */, + 04F190A22A8194B000EB27D7 /* UserDetail.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 04F190232A81111E00EB27D7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 04F1908C2A8175EA00EB27D7 /* ImageName.swift in Sources */, + 04F190AC2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift in Sources */, + 04F1902D2A81111E00EB27D7 /* SearchListView.swift in Sources */, + 04F1909E2A81940F00EB27D7 /* UserDetailService+Test.swift in Sources */, + 04F190602A81386100EB27D7 /* ErrorDefine.swift in Sources */, + 04F190AA2A81A11900EB27D7 /* UserDetailNetworkService.swift in Sources */, + 04F190A42A81953C00EB27D7 /* UserDetailService+Dependencies.swift in Sources */, + 04F190812A81634000EB27D7 /* SearchListService+Live.swift in Sources */, + 04F190B42A82DA7D00EB27D7 /* Context.swift in Sources */, + 04F190422A8124CE00EB27D7 /* GithubUser.swift in Sources */, + 04F1909B2A8193B000EB27D7 /* UserDetailService.swift in Sources */, + 04F190842A81694700EB27D7 /* SearchResultAdaptor.swift in Sources */, + 04F190452A812D5E00EB27D7 /* SearchListService.swift in Sources */, + 04F190AF2A81A23000EB27D7 /* UserDetailRepository.swift in Sources */, + 04F190782A81597600EB27D7 /* SearchUserNetworkService.swift in Sources */, + 04F1908F2A818DEE00EB27D7 /* UserDetailView.swift in Sources */, + 04F190B12A81A29300EB27D7 /* UserDetailService+Live.swift in Sources */, + 04F1907F2A81626600EB27D7 /* SearchListRepository.swift in Sources */, + 04F1904B2A81313B00EB27D7 /* SearchListService+Dependencies.swift in Sources */, + 04F190942A818FCE00EB27D7 /* UserDetailModel.swift in Sources */, + 04F1907C2A8161A300EB27D7 /* SearchListRepoProtocol.swift in Sources */, + 04F1907A2A815CC000EB27D7 /* ServiceClient.swift in Sources */, + 04F190912A818E0700EB27D7 /* UserDetailReducer.swift in Sources */, + 04F190752A8158E200EB27D7 /* CommonNetworkDefine.swift in Sources */, + 04F190882A816D9B00EB27D7 /* HiddenModifier.swift in Sources */, + 04F1903F2A81238E00EB27D7 /* SearchListReducer.swift in Sources */, + 04F1902B2A81111E00EB27D7 /* WeltCodingChallengeApp.swift in Sources */, + 04F190972A81905A00EB27D7 /* UserDetailAdaptor.swift in Sources */, + 04F1908A2A81742E00EB27D7 /* SizeDefine.swift in Sources */, + 04F190472A812E2200EB27D7 /* SearchListService+Test.swift in Sources */, + 04F190692A81415400EB27D7 /* SearchedUserModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 04F1904C2A8133C600EB27D7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 04F190592A8134D500EB27D7 /* SearchListReducer.swift in Sources */, + 04F1905D2A8137A500EB27D7 /* GithubUser.swift in Sources */, + 04F1905B2A8134DE00EB27D7 /* SearchListService+Test.swift in Sources */, + 04F1906A2A81415400EB27D7 /* SearchedUserModel.swift in Sources */, + 04F190A52A81953C00EB27D7 /* UserDetailService+Dependencies.swift in Sources */, + 04F190532A8133C600EB27D7 /* SearchListTests.swift in Sources */, + 04F190612A81386100EB27D7 /* ErrorDefine.swift in Sources */, + 04F1905C2A8134E200EB27D7 /* SearchListService+Dependencies.swift in Sources */, + 04F1909F2A81940F00EB27D7 /* UserDetailService+Test.swift in Sources */, + 04F190952A818FCE00EB27D7 /* UserDetailModel.swift in Sources */, + 04F1905A2A8134DC00EB27D7 /* SearchListService.swift in Sources */, + 04F190852A81694700EB27D7 /* SearchResultAdaptor.swift in Sources */, + 04F190A72A819AC800EB27D7 /* UserDetailTests.swift in Sources */, + 04F190AD2A81A1E800EB27D7 /* UserDetailRepoProtocol.swift in Sources */, + 04F190982A81905A00EB27D7 /* UserDetailAdaptor.swift in Sources */, + 04F190922A818E0700EB27D7 /* UserDetailReducer.swift in Sources */, + 04F1907D2A8161A300EB27D7 /* SearchListRepoProtocol.swift in Sources */, + 04F1909C2A8193B000EB27D7 /* UserDetailService.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 04F190552A8133C600EB27D7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 04F190262A81111E00EB27D7 /* WeltCodingChallenge */; + targetProxy = 04F190542A8133C600EB27D7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 04F190332A81111F00EB27D7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 04F190342A81111F00EB27D7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 04F190362A81111F00EB27D7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"WeltCodingChallenge/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = jacklandrin.WeltCodingChallenge; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 04F190372A81111F00EB27D7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"WeltCodingChallenge/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = jacklandrin.WeltCodingChallenge; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 04F190572A8133C600EB27D7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = jacklandrin.WeltCodingChallengeTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WeltCodingChallenge.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WeltCodingChallenge"; + }; + name = Debug; + }; + 04F190582A8133C600EB27D7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = jacklandrin.WeltCodingChallengeTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WeltCodingChallenge.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WeltCodingChallenge"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 04F190222A81111E00EB27D7 /* Build configuration list for PBXProject "WeltCodingChallenge" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 04F190332A81111F00EB27D7 /* Debug */, + 04F190342A81111F00EB27D7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 04F190352A81111F00EB27D7 /* Build configuration list for PBXNativeTarget "WeltCodingChallenge" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 04F190362A81111F00EB27D7 /* Debug */, + 04F190372A81111F00EB27D7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 04F190562A8133C600EB27D7 /* Build configuration list for PBXNativeTarget "WeltCodingChallengeTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 04F190572A8133C600EB27D7 /* Debug */, + 04F190582A8133C600EB27D7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 04F190382A8112E400EB27D7 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/pointfreeco/swift-composable-architecture"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 04F190392A8112E400EB27D7 /* ComposableArchitecture */ = { + isa = XCSwiftPackageProductDependency; + package = 04F190382A8112E400EB27D7 /* XCRemoteSwiftPackageReference "swift-composable-architecture" */; + productName = ComposableArchitecture; + }; + 04F1906F2A81550200EB27D7 /* CachableAsyncImage */ = { + isa = XCSwiftPackageProductDependency; + productName = CachableAsyncImage; + }; + 04F190712A81550500EB27D7 /* NetworkingProvider */ = { + isa = XCSwiftPackageProductDependency; + productName = NetworkingProvider; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 04F1901F2A81111E00EB27D7 /* Project object */; +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/SearchResultAdaptor.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/SearchResultAdaptor.swift new file mode 100644 index 0000000..784cd65 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/SearchResultAdaptor.swift @@ -0,0 +1,28 @@ +// +// SearchResultAdaptor.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct SearchResultAdaptor { + + static func convertSearchResult(result: SearchedUsersResult) -> SearchedResultModel { + SearchedResultModel( + totalCount: result.total_count, + items: result.items.map { + convertResultUser(user: $0) + } + ) + } + + static func convertResultUser(user: GithubUser) -> ResultUserItemModel { + ResultUserItemModel( + userName: user.login, + avatarURL: user.avatar_url, + userInfoURL: user.url + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/UserDetailAdaptor.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/UserDetailAdaptor.swift new file mode 100644 index 0000000..b1a4539 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Adaptors/UserDetailAdaptor.swift @@ -0,0 +1,21 @@ +// +// UserDetailAdaptor.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct UserDetailAdaptor { + + static func convent(userInfo: UserInfo) -> UserDetailModel { + UserDetailModel( + userName: userInfo.login, + avatarURL: userInfo.avatar_url, + publicRepositoryCount: userInfo.public_repos, + followersCount: userInfo.followers, + followingCount: userInfo.following + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AccentColor.colorset/Contents.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/1024.png b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 0000000..d15ba95 Binary files /dev/null and b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/Contents.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..cff1680 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images" : [ + { + "filename" : "1024.png", + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/Contents.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ErrorDefine.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ErrorDefine.swift new file mode 100644 index 0000000..5097f00 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ErrorDefine.swift @@ -0,0 +1,12 @@ +// +// ErrorDefine.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +enum MockError: Error { + case FailedToLoadJson +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ImageName.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ImageName.swift new file mode 100644 index 0000000..71c9058 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/ImageName.swift @@ -0,0 +1,15 @@ +// +// ImageName.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct ImageName { + static let xMark = "xmark.circle.fill" + static let arrowDown = "arrow.down.square" + static let arrowUp = "arrow.up.square" + static let arrowClockwise = "arrow.clockwise" +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/SizeDefine.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/SizeDefine.swift new file mode 100644 index 0000000..cae1486 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Define/SizeDefine.swift @@ -0,0 +1,24 @@ +// +// SizeDefine.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import UIKit +import Foundation + +struct SizeDefine { + static let screenSize = UIScreen.main.bounds + static let smallCornerRadius = 6.0 + static let strokeLineWidth = 1.0 + static let innerPadding = 10.0 + static let itemAvatarSize = 48.0 + static let userInfoAvatarSize = screenSize.width / 3 + static let sortMenuHeight = 80.0 + static let sortMenuTipHeight = 18.0 + static let smallInnerPadding = 4.0 + static let tinyInnerPadding = 2.0 + static let orderButtonSize = 30.0 + static let detailSpacing = 30.0 +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/GithubUser.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/GithubUser.swift new file mode 100644 index 0000000..625f91e --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/GithubUser.swift @@ -0,0 +1,72 @@ +// +// GithubUser.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +/// Request: by username +struct SearchedUserRequestParameters: Encodable, Equatable { + let q: String + let sort: String? + let order: String? + let per_page: Int + let page: Int +} + +/// Response: searched user item +struct GithubUser: Decodable { + let login: String + let id: Int + let node_id: String + let avatar_url: String + let url: String + let html_url: String + let repos_url: String + + enum CodingKeys: String, CodingKey { + case login + case id + case node_id + case avatar_url + case url + case html_url + case repos_url + } +} + +struct SearchedUsersResult: Decodable { + let total_count: Int + let incomplete_results: Bool + let items: [GithubUser] + + enum CodingKeys: String, CodingKey { + case total_count + case incomplete_results + case items + } +} + +struct UserInfo: Decodable { + let login: String + let id: Int + let node_id: String + let avatar_url: String + let name: String? + let public_repos: Int + let followers: Int + let following: Int + + enum CodingKeys: String, CodingKey { + case login + case id + case node_id + case avatar_url + case name + case public_repos + case followers + case following + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/SearchedUserModel.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/SearchedUserModel.swift new file mode 100644 index 0000000..4e8cc74 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/SearchedUserModel.swift @@ -0,0 +1,33 @@ +// +// SearchedUser.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct SearchedUserModel: Equatable { + var userName: String + var sortType: SortType + var descOrder: Bool + var page: UInt + + enum SortType: String, Equatable, CaseIterable { + case best_mach + case followers + case repositories + case joined + } +} + +struct SearchedResultModel: Equatable { + let totalCount: Int + let items: [ResultUserItemModel] +} + +struct ResultUserItemModel: Equatable, Hashable { + let userName: String + let avatarURL: String + let userInfoURL: String +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/UserDetailModel.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/UserDetailModel.swift new file mode 100644 index 0000000..03f3332 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Models/UserDetailModel.swift @@ -0,0 +1,16 @@ +// +// UserDetailModel.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct UserDetailModel: Equatable { + let userName: String + let avatarURL: String + let publicRepositoryCount: Int + let followersCount: Int + let followingCount: Int +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Modifiers/HiddenModifier.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Modifiers/HiddenModifier.swift new file mode 100644 index 0000000..9f52e29 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Modifiers/HiddenModifier.swift @@ -0,0 +1,35 @@ +// +// HiddenModifier.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import SwiftUI + +extension View { + /// Hide or show the view based on a boolean value. + /// + /// Example for visibility: + /// + /// Text("Label") + /// .isHidden(true) + /// + /// Example for complete removal: + /// + /// Text("Label") + /// .isHidden(true, remove: true) + /// + /// - Parameters: + /// - hidden: Set to `false` to show the view. Set to `true` to hide the view. + /// - remove: Boolean value indicating whether or not to remove the view. + @ViewBuilder func isHidden(_ hidden: Bool, remove: Bool = false) -> some View { + if hidden { + if !remove { + self.hidden() + } + } else { + self + } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Preview Content/Preview Assets.xcassets/Contents.json b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/CommonNetworkDefine.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/CommonNetworkDefine.swift new file mode 100644 index 0000000..82bdd21 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/CommonNetworkDefine.swift @@ -0,0 +1,22 @@ +// +// CommonClient.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +enum CommonNetworkDefine { + static var baseURL: String { + "https://api.github.com" + } + + static var itemAmountPerPage: Int { + 30 + } + + static var defaultTimeOut: TimeInterval { + 30 + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/Context.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/Context.swift new file mode 100644 index 0000000..176178e --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/Context.swift @@ -0,0 +1,44 @@ +// +// Context.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/8. +// + +import Foundation +import SwiftUI + +protocol Repository {} + +final class Context { + + fileprivate var repositories = [String: Repository]() + + func repository(_ type: RepositoryType.Type) -> RepositoryType { + let typeKey = String(describing: type) + guard let repo = repositories[typeKey] as? RepositoryType else { + fatalError() + } + return repo + } + + func register(_ type: RepositoryType.Type, repo: Repository) { + let typeKey = String(describing: type) + repositories[typeKey] = repo + } + + subscript(_ type: RepositoryType.Type) -> RepositoryType { + repository(type) + } +} + +struct ContextKey: EnvironmentKey { + static let defaultValue: Context = Context() +} + +extension EnvironmentValues { + var context: Context { + get { self[ContextKey.self] } + set { self[ContextKey.self] = newValue } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepoProtocol.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepoProtocol.swift new file mode 100644 index 0000000..188fd14 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepoProtocol.swift @@ -0,0 +1,12 @@ +// +// SearchListRepoProtocol.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +protocol SearchListRepoProtocol: Repository { + func searchUsers(by searchedInfo: SearchedUserModel) async throws -> SearchedUsersResult +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepository.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepository.swift new file mode 100644 index 0000000..86affbc --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchListRepository.swift @@ -0,0 +1,15 @@ +// +// SearchListRepository.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct SearchListRepository: SearchListRepoProtocol { + func searchUsers(by searchedInfo: SearchedUserModel) async throws -> SearchedUsersResult { + let client = ServiceClient(clientService: SearchUserNetworkService(searchedUser: searchedInfo)) + return try await client.request(dataType: SearchedUsersResult.self) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchUserNetworkService.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchUserNetworkService.swift new file mode 100644 index 0000000..6bb658a --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/SearchListRepository/SearchUserNetworkService.swift @@ -0,0 +1,57 @@ +// +// SearchUserNetworkService.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation +import NetworkingProvider + +struct SearchUserNetworkService: NetworkService { + + private var searchedUserRequestParameters: SearchedUserRequestParameters + + init(searchedUser: SearchedUserModel) { + self.searchedUserRequestParameters = .init( + q: searchedUser.userName, + sort: searchedUser.sortType.rawValue, + order: searchedUser.descOrder ? "desc" : "asc", + per_page: CommonNetworkDefine.itemAmountPerPage, + page: Int(searchedUser.page)) + } + + var baseURL: String { + CommonNetworkDefine.baseURL + } + + var path: String { + "/search/users" + } + + var method: HttpMethod { + .get + } + + var headers: [String : String]? { + [HttpHeaderKey.accept: MimeType.json.rawValue] + } + + var queryParameters: [URLQueryItem]? { + [ + URLQueryItem(name: "q", value: searchedUserRequestParameters.q), + URLQueryItem(name: "sort", value: searchedUserRequestParameters.sort), + URLQueryItem(name: "order", value: searchedUserRequestParameters.order), + URLQueryItem(name: "per_page", value: "\(searchedUserRequestParameters.per_page)"), + URLQueryItem(name: "page", value: "\(searchedUserRequestParameters.page)") + ] + } + + var httpBody: Encodable? { + nil + } + + var timeout: TimeInterval? { + CommonNetworkDefine.defaultTimeOut + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/ServiceClient.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/ServiceClient.swift new file mode 100644 index 0000000..0f7dffc --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/ServiceClient.swift @@ -0,0 +1,25 @@ +// +// ServiceClient.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation +import NetworkingProvider + +struct ServiceClient: NetworkProviderProtocol { + + var urlSession: NetworkingProvider.SessionProtocol + var service: NetworkingProvider.NetworkService + + init(session: SessionProtocol = Session(), clientService: NetworkService) { + urlSession = session + service = clientService + } + + func request(dataType: T.Type) async throws -> T where T : Decodable { + let (data, _ ) = try await urlSession.dataTask(service.urlRequest, dataType: T.self) + return data + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailNetworkService.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailNetworkService.swift new file mode 100644 index 0000000..1150ebf --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailNetworkService.swift @@ -0,0 +1,46 @@ +// +// UserDetailNetworkService.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/8. +// + +import Foundation +import NetworkingProvider + +struct UserDetailNetworkService: NetworkService { + + private var userName: String + + init(userName: String) { + self.userName = userName + } + + var baseURL: String { + CommonNetworkDefine.baseURL + } + + var path: String { + "/users/\(userName)" + } + + var method: HttpMethod { + .get + } + + var headers: [String : String]? { + [HttpHeaderKey.accept: MimeType.json.rawValue] + } + + var queryParameters: [URLQueryItem]? { + nil + } + + var httpBody: Encodable? { + nil + } + + var timeout: TimeInterval? { + CommonNetworkDefine.defaultTimeOut + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepoProtocol.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepoProtocol.swift new file mode 100644 index 0000000..035782b --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepoProtocol.swift @@ -0,0 +1,12 @@ +// +// UserDetailRepoProtocol.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/8. +// + +import Foundation + +protocol UserDetailRepoProtocol: Repository { + func loadUserDetail(by userName: String) async throws -> UserInfo +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepository.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepository.swift new file mode 100644 index 0000000..ad3e9ad --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Repositories/UserDetailRepository/UserDetailRepository.swift @@ -0,0 +1,16 @@ +// +// UserDetailRepository.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/8. +// + +import Foundation + +struct UserDetailRepository: UserDetailRepoProtocol { + + func loadUserDetail(by userName: String) async throws -> UserInfo { + let client = ServiceClient(clientService: UserDetailNetworkService(userName: userName)) + return try await client.request(dataType: UserInfo.self) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListReducer.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListReducer.swift new file mode 100644 index 0000000..ca37332 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListReducer.swift @@ -0,0 +1,138 @@ +// +// SearchListReducer.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import ComposableArchitecture +import Foundation + +struct SearchListReducer: Reducer { + + struct State: Equatable { + var inputUserName = "" + var searchedUserName = "" + var isLoading = false + var userItems: [ResultUserItemModel] = [] + var isFailed = false + var errorDescription = "" + var page: UInt = 1 + var sortType: SearchedUserModel.SortType = .best_mach + var totalCount = 0 + var showLoadMore = false + var isDesc = true + var showFilterSettings = false + + init( + userItems: [ResultUserItemModel] = [], + page: UInt = 1, + totalCount: Int = 0 + ) { + self.userItems = userItems + self.page = page + self.totalCount = totalCount + } + } + + enum Action: Equatable { + case inputUserName(String) + case pressSearchButton + case clear + case search + case fetchUsers(TaskResult) + case selectSortType(SearchedUserModel.SortType) + case toggleFilterSettingsMenu + case toggleSort + case refresh + case loadMore + } + + @Dependency(\.searchListService) var searchListService + + var body: some ReducerOf { + Reduce { state, action in + switch action { + case .inputUserName(let name): + state.inputUserName = name + return .none + + case .pressSearchButton: + state.searchedUserName = state.inputUserName + return .send(.refresh) + + case .clear: + state.page = 1 + state.totalCount = 0 + state.userItems = [] + state.showLoadMore = false + state.inputUserName = "" + return .none + + case .search: + guard !state.searchedUserName.isEmpty else { + state.showLoadMore = false + return .none + } + + state.isLoading = true + return .run { [state = state] send in + let searchedUser = SearchedUserModel( + userName: state.searchedUserName, + sortType: state.sortType, + descOrder: state.isDesc, + page: state.page + ) + + return await send( + .fetchUsers( + TaskResult { + try await searchListService.searchUserName(searchedUser) + } + ) + ) + } + + case let .fetchUsers(.success(result)): + state.isFailed = false + state.userItems += result.items + state.totalCount = result.totalCount + state.isLoading = false + state.showLoadMore = state.totalCount > state.userItems.count + return .none + + case let .fetchUsers(.failure(error)): + state.isFailed = true + state.errorDescription = error.localizedDescription + state.isLoading = false + return .none + + case .selectSortType(let type): + state.sortType = type + return .send(.clear) + + case .toggleFilterSettingsMenu: + state.showFilterSettings.toggle() + return .none + + case .toggleSort: + state.isDesc.toggle() + return .send(.clear) + + case .refresh: + state.page = 1 + state.totalCount = 0 + state.userItems = [] + return .send(.search) + + case .loadMore: + if state.userItems.count < state.totalCount { + state.page += 1 + return .send(.search) + } + + return .none + } + } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Dependencies.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Dependencies.swift new file mode 100644 index 0000000..e1a4e83 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Dependencies.swift @@ -0,0 +1,16 @@ +// +// SearchListService+Dependencies.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Dependencies + +extension DependencyValues { + + var searchListService: SearchListService { + get { self[SearchListService.self] } + set { self[SearchListService.self] = newValue } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Live.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Live.swift new file mode 100644 index 0000000..a145fa3 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Live.swift @@ -0,0 +1,21 @@ +// +// SearchListService+Live.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +extension SearchListService { + + static func liveValue(context: Context) -> Self { + Self ( + searchUserName: { userInfo in + let repo = context[SearchListRepoProtocol.self] + let result = try await repo.searchUsers(by: userInfo) + return SearchResultAdaptor.convertSearchResult(result: result) + } + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Test.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Test.swift new file mode 100644 index 0000000..1fb073e --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService+Test.swift @@ -0,0 +1,31 @@ +// +// SearchListService+Test.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Dependencies +import Foundation + +extension SearchListService: TestDependencyKey { + + static let testValue = Self( + searchUserName: unimplemented("\(Self.self).searchUserName") + ) +} + +extension SearchListService { + + static let mockValue = Self( + searchUserName: { searchedUser in + guard let url = Bundle.main.url(forResource: "ResultPage\(searchedUser.page)", withExtension: "json") else { + throw MockError.FailedToLoadJson + } + + let data = try Data(contentsOf: url) + let searchedUsersResult = try JSONDecoder().decode(SearchedUsersResult.self, from: data) + return SearchResultAdaptor.convertSearchResult(result: searchedUsersResult) + } + ) +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService.swift new file mode 100644 index 0000000..1e096d4 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListService/SearchListService.swift @@ -0,0 +1,13 @@ +// +// SearchListService.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct SearchListService { + + var searchUserName: @Sendable (SearchedUserModel) async throws -> SearchedResultModel +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListView.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListView.swift new file mode 100644 index 0000000..cf51c37 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/SearchList/SearchListView.swift @@ -0,0 +1,176 @@ +// +// ContentView.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import CachableAsyncImage +import ComposableArchitecture +import SwiftUI + +struct SearchListView: View { + + @Environment(\.imageCache) private var cache: ImageCache + @Environment(\.context) private var context + let store: StoreOf + + var body: some View { + WithViewStore(store, observe: { $0 }) { viewStore in + NavigationStack { + Group { + switch(viewStore.userItems.count == 0, viewStore.isLoading, viewStore.isFailed) { + case (true, true, false): + ProgressView() + .progressViewStyle(.circular) + .controlSize(.large) + + case (true, false, true): + VStack { + Text("Failed: \(viewStore.errorDescription)") + Button("Try Again") { + viewStore.send(.refresh) + } + } + + case (true, false, false): + Text("Search Github Users") + + default: + VStack { + sortingMenu + .frame(height: viewStore.showFilterSettings ? SizeDefine.sortMenuHeight : 0) + .opacity(viewStore.showFilterSettings ? 1 : 0) + .rotation3DEffect( + .degrees(viewStore.showFilterSettings ? 0 : -90), + axis: (1.0, 0.0, 0.0), + anchor: .init(x: 0.5, y: 0), + perspective: 0.3 + ) + .animation(.easeInOut, value: viewStore.showFilterSettings) + + List { + ForEach(viewStore.userItems, id: \.self) { user in + NavigationLink(destination: { + UserDetailView( + store: Store(initialState: UserDetailReducer.State(userName: user.userName)) { + UserDetailReducer() + .dependency(\.userDetailService, .liveValue(context: context)) + } + ) + }) { + HStack { + CAsyncImage( + url: URL(string: user.avatarURL)!, + cache: cache + ) { + $0.resizable() + } + .aspectRatio(contentMode: .fit) + .frame(width: SizeDefine.itemAvatarSize, height: SizeDefine.itemAvatarSize) + + Text(user.userName) + } + } + } + + loadMoreItem + } + .refreshable { + viewStore.send(.refresh) + } + } + .toolbar { + Button("Filter") { + viewStore.send(.toggleFilterSettingsMenu) + } + } + } + } + .navigationTitle("Github Users") + } + .searchable( + text: viewStore.binding( + get: { $0.inputUserName }, + send: { .inputUserName($0) } + ) + ) + .onSubmit(of: .search) { + viewStore.send(.pressSearchButton) + } + } + } + + private var loadMoreItem: some View { + WithViewStore(store, observe: { $0 }) { viewStore in + HStack(spacing: 10) { + Spacer() + Text("Load More...") + .onAppear{ + viewStore.send(.loadMore) + } + ProgressView() + .progressViewStyle(.circular) + .isHidden(!viewStore.isLoading, remove: true) + Spacer() + } + .isHidden(!viewStore.showLoadMore, remove: true) + } + } + + private var sortingMenu: some View { + WithViewStore(store, observe: { $0 }) { viewStore in + VStack { + Text("Sort by:") + .padding(SizeDefine.smallInnerPadding) + .frame(height: SizeDefine.sortMenuTipHeight) + HStack { + ScrollView(.horizontal, showsIndicators: false) { + LazyHStack { + ForEach(SearchedUserModel.SortType.allCases, id:\.self) { type in + + Button(action: { viewStore.send(.selectSortType(type)) }) { + ZStack { + RoundedRectangle(cornerRadius: SizeDefine.smallCornerRadius) + .foregroundColor(viewStore.sortType == type ? .blue : .mint) + + Text(type.rawValue) + .foregroundColor(viewStore.sortType == type ? .mint : .blue) + .fontWeight(.bold) + .padding(.horizontal, SizeDefine.smallInnerPadding) + + } + .padding(SizeDefine.tinyInnerPadding) + } + .padding(.vertical, SizeDefine.smallInnerPadding) + } + } + } + + Button(action: { viewStore.send(.toggleSort) }) { + Image( + systemName: viewStore.isDesc + ? ImageName.arrowDown + : ImageName.arrowUp + ) + .resizable() + .scaledToFit() + .frame(width: SizeDefine.orderButtonSize, height: SizeDefine.orderButtonSize) + } + } + } + .padding(.horizontal, SizeDefine.innerPadding) + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + SearchListView( + store: Store(initialState: SearchListReducer.State()) { + SearchListReducer() + .dependency(\.searchListService, .mockValue) + } + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Top/WeltCodingChallengeApp.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Top/WeltCodingChallengeApp.swift new file mode 100644 index 0000000..614ad77 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/Top/WeltCodingChallengeApp.swift @@ -0,0 +1,35 @@ +// +// WeltCodingChallengeApp.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import ComposableArchitecture +import SwiftUI + +@main +struct WeltCodingChallengeApp: App { + + @Environment(\.context) private var context + + var body: some Scene { + WindowGroup { + SearchListView( + store: Store(initialState: SearchListReducer.State()) { + SearchListReducer() + .dependency(\.searchListService, .liveValue(context: context)) + ._printChanges() + } + ) + .task { + registerRepositories() + } + } + } + + private func registerRepositories() { + context.register(SearchListRepoProtocol.self, repo: SearchListRepository()) + context.register(UserDetailRepoProtocol.self, repo: UserDetailRepository()) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailReducer.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailReducer.swift new file mode 100644 index 0000000..ccf116a --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailReducer.swift @@ -0,0 +1,62 @@ +// +// UserDetailReducer.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import ComposableArchitecture +import Foundation + +struct UserDetailReducer: Reducer { + + struct State: Equatable { + var userName: String + var userDetail: UserDetailModel? + var isLoading = true + var isFailed = false + var errorDescription = "" + + init(userName: String, userDetail: UserDetailModel? = nil) { + self.userName = userName + self.userDetail = userDetail + } + } + + enum Action: Equatable { + case load + case fetchUserDetail(TaskResult) + } + + @Dependency(\.userDetailService) var userDetailService + + var body: some ReducerOf { + Reduce { state, action in + switch action { + case .load: + state.isLoading = true + return .run { [state = state] send in + return await send( + .fetchUserDetail( + TaskResult { + try await userDetailService.loadUserDetail(state.userName) + } + ) + ) + } + + case let .fetchUserDetail(.success(userDetail)): + state.isLoading = false + state.userDetail = userDetail + state.isFailed = false + return .none + + case let .fetchUserDetail(.failure(error)): + state.isLoading = false + state.isFailed = true + state.errorDescription = error.localizedDescription + return .none + } + } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Dependencies.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Dependencies.swift new file mode 100644 index 0000000..9f7328f --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Dependencies.swift @@ -0,0 +1,16 @@ +// +// UserDetailService+Dependencies.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Dependencies + +extension DependencyValues { + + var userDetailService: UserDetailService { + get { self[UserDetailService.self] } + set { self[UserDetailService.self] = newValue } + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Live.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Live.swift new file mode 100644 index 0000000..764ac67 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Live.swift @@ -0,0 +1,21 @@ +// +// UserDetailService+Live.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/8. +// + +import Foundation + +extension UserDetailService { + + static func liveValue(context: Context) -> Self { + Self ( + loadUserDetail: { userName in + let repo = context[UserDetailRepoProtocol.self] + let userInfo = try await repo.loadUserDetail(by: userName) + return UserDetailAdaptor.convent(userInfo: userInfo) + } + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Test.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Test.swift new file mode 100644 index 0000000..9c7eef7 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService+Test.swift @@ -0,0 +1,29 @@ +// +// UserDetailService+Test.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Dependencies +import Foundation + +extension UserDetailService: TestDependencyKey { + static var testValue = Self( + loadUserDetail: unimplemented("\(Self.self).loadUserDetail") + ) +} + +extension UserDetailService { + static var mockValue = Self( + loadUserDetail: { _ in + guard let url = Bundle.main.url(forResource: "UserDetail", withExtension: "json") else { + throw MockError.FailedToLoadJson + } + + let data = try Data(contentsOf: url) + let userInfo = try JSONDecoder().decode(UserInfo.self, from: data) + return UserDetailAdaptor.convent(userInfo: userInfo) + } + ) +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService.swift new file mode 100644 index 0000000..80d4577 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailService/UserDetailService.swift @@ -0,0 +1,12 @@ +// +// UserDetailService.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import Foundation + +struct UserDetailService { + var loadUserDetail: @Sendable (String) async throws -> UserDetailModel +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailView.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailView.swift new file mode 100644 index 0000000..0ce8812 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallenge/UserDetail/UserDetailView.swift @@ -0,0 +1,74 @@ +// +// UserDetailView.swift +// WeltCodingChallenge +// +// Created by Jacklandrin on 2023/8/7. +// + +import CachableAsyncImage +import ComposableArchitecture +import SwiftUI + +struct UserDetailView: View { + + @Environment(\.imageCache) private var cache: ImageCache + let store: StoreOf + + var body: some View { + WithViewStore(store, observe:{ $0 }) { viewStore in + VStack(alignment: .leading) { + if viewStore.isFailed { + Text("Failed: \(viewStore.errorDescription)") + } else { + HStack { + if let userDetail = viewStore.userDetail { + CAsyncImage( + url: URL(string: userDetail.avatarURL)!, + cache: cache + ) { + $0.resizable() + } + .aspectRatio(contentMode: .fit) + .frame(width: SizeDefine.userInfoAvatarSize, height: SizeDefine.userInfoAvatarSize) + + VStack(alignment: .leading) { + Text("Public Repos: \(userDetail.publicRepositoryCount)") + Text("Followers: \(userDetail.followersCount)") + Text("Following: \(userDetail.followingCount)") + } + .padding(.leading, SizeDefine.detailSpacing) + } else { + ProgressView() + .progressViewStyle(.circular) + .controlSize(.large) + } + } + } + + Spacer() + } + .toolbar { + Button(action: { + viewStore.send(.load) + }) { + Image(systemName: ImageName.arrowClockwise) + } + } + .navigationTitle(viewStore.userName) + .task { + viewStore.send(.load) + } + } + } +} + +struct UserDetailView_Previews: PreviewProvider { + static var previews: some View { + UserDetailView( + store: Store(initialState: UserDetailReducer.State(userName: "jack")) { + UserDetailReducer() + .dependency(\.userDetailService, .mockValue) + } + ) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/SearchListTests.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/SearchListTests.swift new file mode 100644 index 0000000..fdb0fa4 --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/SearchListTests.swift @@ -0,0 +1,86 @@ +// +// SearchListTests.swift +// SearchListTests +// +// Created by Jacklandrin on 2023/8/7. +// + +import ComposableArchitecture +import XCTest + +@MainActor +final class SearchListTests: XCTestCase { + + func testLoadingFirstPage() async throws { + let store = TestStore(initialState: SearchListReducer.State()) { + SearchListReducer() + .dependency(\.searchListService, .mockValue) + } + + store.exhaustivity = .off + + let result = SearchResultAdaptor.convertSearchResult(result: try userResult(in: store.state.page)) + + let userName = "jack" + + await store.send(.inputUserName(userName)) { + $0.inputUserName = userName + } + + await store.send(.pressSearchButton) { + $0.searchedUserName = userName + } + + await store.receive(.fetchUsers(.success(result))) { + $0.isLoading = false + $0.userItems = result.items + $0.totalCount = 160136 + } + } + + func testLoadMore() async throws { + let firstPageResult = SearchResultAdaptor.convertSearchResult(result: try userResult(in: 1)) + let store = TestStore( + initialState: SearchListReducer.State( + userItems: firstPageResult.items, + totalCount: 160136 + ) + ) { + SearchListReducer() + .dependency(\.searchListService, .mockValue) + } + + store.exhaustivity = .off + + let userName = "jack" + + await store.send(.inputUserName(userName)) { + $0.inputUserName = userName + } + + await store.send(.pressSearchButton) { + $0.searchedUserName = userName + } + + await store.send(.loadMore) { + $0.page = 2 + } + + let secondPageResult = SearchResultAdaptor.convertSearchResult(result: try userResult(in: 2)) + + await store.receive(.fetchUsers(.success(secondPageResult))) { + $0.isLoading = false + $0.userItems = firstPageResult.items + secondPageResult.items + $0.totalCount = 160143 + } + } + + private func userResult(in page: UInt) throws -> SearchedUsersResult { + guard let url = Bundle.main.url(forResource: "ResultPage\(page)", withExtension: "json") else { + throw MockError.FailedToLoadJson + } + + let data = try Data(contentsOf: url) + return try JSONDecoder().decode(SearchedUsersResult.self, from: data) + } +} diff --git a/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/UserDetailTests.swift b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/UserDetailTests.swift new file mode 100644 index 0000000..118a65e --- /dev/null +++ b/Swift/Other/CodingChallenge/WeltCodingChallenge/WeltCodingChallengeTests/UserDetailTests.swift @@ -0,0 +1,41 @@ +// +// UserDetailTests.swift +// WeltCodingChallengeTests +// +// Created by Jacklandrin on 2023/8/7. +// + +import ComposableArchitecture +import XCTest + +@MainActor +final class UserDetailTests: XCTestCase { + + func testLoadUserDetail() async throws { + let store = TestStore(initialState: UserDetailReducer.State(userName: "jack")) { + UserDetailReducer() + .dependency(\.userDetailService, .mockValue) + } + + store.exhaustivity = .off + + let userDetail = UserDetailAdaptor.convent(userInfo: try userInfo()) + + await store.send(.load) { + $0.isLoading = true + } + + await store.receive(.fetchUserDetail(.success(userDetail))) { + $0.userDetail = userDetail + } + } + + private func userInfo() throws -> UserInfo { + guard let url = Bundle.main.url(forResource: "UserDetail", withExtension: "json") else { + throw MockError.FailedToLoadJson + } + + let data = try Data(contentsOf: url) + return try JSONDecoder().decode(UserInfo.self, from: data) + } +} diff --git a/Swift/Other/CodingChallenge/iOS_CodingChallenge.pdf b/Swift/Other/CodingChallenge/iOS_CodingChallenge.pdf new file mode 100644 index 0000000..884ae1b Binary files /dev/null and b/Swift/Other/CodingChallenge/iOS_CodingChallenge.pdf differ diff --git a/Swift/Swift101/Swift101.xcodeproj/project.pbxproj b/Swift/Swift101/Swift101.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c1fa5d8 --- /dev/null +++ b/Swift/Swift101/Swift101.xcodeproj/project.pbxproj @@ -0,0 +1,619 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 9AD289B02A7307C300A24D55 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289AF2A7307C300A24D55 /* AppDelegate.swift */; }; + 9AD289B22A7307C300A24D55 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289B12A7307C300A24D55 /* SceneDelegate.swift */; }; + 9AD289B42A7307C300A24D55 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289B32A7307C300A24D55 /* ViewController.swift */; }; + 9AD289B72A7307C300A24D55 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AD289B52A7307C300A24D55 /* Main.storyboard */; }; + 9AD289B92A7307C700A24D55 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9AD289B82A7307C700A24D55 /* Assets.xcassets */; }; + 9AD289BC2A7307C700A24D55 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9AD289BA2A7307C700A24D55 /* LaunchScreen.storyboard */; }; + 9AD289C72A7307C800A24D55 /* Swift101Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289C62A7307C800A24D55 /* Swift101Tests.swift */; }; + 9AD289D12A7307C800A24D55 /* Swift101UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289D02A7307C800A24D55 /* Swift101UITests.swift */; }; + 9AD289D32A7307C800A24D55 /* Swift101UITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289D22A7307C800A24D55 /* Swift101UITestsLaunchTests.swift */; }; + 9AD289E12A73083C00A24D55 /* BaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289DF2A73083B00A24D55 /* BaseCell.swift */; }; + 9AD289E22A73083C00A24D55 /* ClassIdenfifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AD289E02A73083B00A24D55 /* ClassIdenfifiable.swift */; }; + 9AE13BAB2B8ABA6200DEE46D /* SwiftPlaygroundTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AE13BAA2B8ABA6200DEE46D /* SwiftPlaygroundTest.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9AD289C32A7307C800A24D55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AD289A42A7307C200A24D55 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AD289AB2A7307C200A24D55; + remoteInfo = Swift101; + }; + 9AD289CD2A7307C800A24D55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9AD289A42A7307C200A24D55 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9AD289AB2A7307C200A24D55; + remoteInfo = Swift101; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9AD289AC2A7307C200A24D55 /* Swift101.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Swift101.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD289AF2A7307C300A24D55 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 9AD289B12A7307C300A24D55 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 9AD289B32A7307C300A24D55 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 9AD289B62A7307C300A24D55 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 9AD289B82A7307C700A24D55 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9AD289BB2A7307C700A24D55 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 9AD289BD2A7307C700A24D55 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9AD289C22A7307C800A24D55 /* Swift101Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Swift101Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD289C62A7307C800A24D55 /* Swift101Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Swift101Tests.swift; sourceTree = ""; }; + 9AD289CC2A7307C800A24D55 /* Swift101UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Swift101UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9AD289D02A7307C800A24D55 /* Swift101UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Swift101UITests.swift; sourceTree = ""; }; + 9AD289D22A7307C800A24D55 /* Swift101UITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Swift101UITestsLaunchTests.swift; sourceTree = ""; }; + 9AD289DF2A73083B00A24D55 /* BaseCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseCell.swift; sourceTree = ""; }; + 9AD289E02A73083B00A24D55 /* ClassIdenfifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClassIdenfifiable.swift; sourceTree = ""; }; + 9AE13BAA2B8ABA6200DEE46D /* SwiftPlaygroundTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftPlaygroundTest.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9AD289A92A7307C200A24D55 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289BF2A7307C800A24D55 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289C92A7307C800A24D55 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9AD289A32A7307C200A24D55 = { + isa = PBXGroup; + children = ( + 9AD289AE2A7307C200A24D55 /* Swift101 */, + 9AD289C52A7307C800A24D55 /* Swift101Tests */, + 9AD289CF2A7307C800A24D55 /* Swift101UITests */, + 9AD289AD2A7307C200A24D55 /* Products */, + ); + sourceTree = ""; + }; + 9AD289AD2A7307C200A24D55 /* Products */ = { + isa = PBXGroup; + children = ( + 9AD289AC2A7307C200A24D55 /* Swift101.app */, + 9AD289C22A7307C800A24D55 /* Swift101Tests.xctest */, + 9AD289CC2A7307C800A24D55 /* Swift101UITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9AD289AE2A7307C200A24D55 /* Swift101 */ = { + isa = PBXGroup; + children = ( + 9AD289AF2A7307C300A24D55 /* AppDelegate.swift */, + 9AD289B12A7307C300A24D55 /* SceneDelegate.swift */, + 9AD289B32A7307C300A24D55 /* ViewController.swift */, + 9AD289DF2A73083B00A24D55 /* BaseCell.swift */, + 9AD289E02A73083B00A24D55 /* ClassIdenfifiable.swift */, + 9AD289B52A7307C300A24D55 /* Main.storyboard */, + 9AD289B82A7307C700A24D55 /* Assets.xcassets */, + 9AD289BA2A7307C700A24D55 /* LaunchScreen.storyboard */, + 9AD289BD2A7307C700A24D55 /* Info.plist */, + ); + path = Swift101; + sourceTree = ""; + }; + 9AD289C52A7307C800A24D55 /* Swift101Tests */ = { + isa = PBXGroup; + children = ( + 9AD289C62A7307C800A24D55 /* Swift101Tests.swift */, + 9AE13BAA2B8ABA6200DEE46D /* SwiftPlaygroundTest.swift */, + ); + path = Swift101Tests; + sourceTree = ""; + }; + 9AD289CF2A7307C800A24D55 /* Swift101UITests */ = { + isa = PBXGroup; + children = ( + 9AD289D02A7307C800A24D55 /* Swift101UITests.swift */, + 9AD289D22A7307C800A24D55 /* Swift101UITestsLaunchTests.swift */, + ); + path = Swift101UITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9AD289AB2A7307C200A24D55 /* Swift101 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD289D62A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101" */; + buildPhases = ( + 9AD289A82A7307C200A24D55 /* Sources */, + 9AD289A92A7307C200A24D55 /* Frameworks */, + 9AD289AA2A7307C200A24D55 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Swift101; + productName = Swift101; + productReference = 9AD289AC2A7307C200A24D55 /* Swift101.app */; + productType = "com.apple.product-type.application"; + }; + 9AD289C12A7307C800A24D55 /* Swift101Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD289D92A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101Tests" */; + buildPhases = ( + 9AD289BE2A7307C800A24D55 /* Sources */, + 9AD289BF2A7307C800A24D55 /* Frameworks */, + 9AD289C02A7307C800A24D55 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AD289C42A7307C800A24D55 /* PBXTargetDependency */, + ); + name = Swift101Tests; + productName = Swift101Tests; + productReference = 9AD289C22A7307C800A24D55 /* Swift101Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9AD289CB2A7307C800A24D55 /* Swift101UITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9AD289DC2A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101UITests" */; + buildPhases = ( + 9AD289C82A7307C800A24D55 /* Sources */, + 9AD289C92A7307C800A24D55 /* Frameworks */, + 9AD289CA2A7307C800A24D55 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9AD289CE2A7307C800A24D55 /* PBXTargetDependency */, + ); + name = Swift101UITests; + productName = Swift101UITests; + productReference = 9AD289CC2A7307C800A24D55 /* Swift101UITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9AD289A42A7307C200A24D55 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 9AD289AB2A7307C200A24D55 = { + CreatedOnToolsVersion = 14.2; + }; + 9AD289C12A7307C800A24D55 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9AD289AB2A7307C200A24D55; + }; + 9AD289CB2A7307C800A24D55 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9AD289AB2A7307C200A24D55; + }; + }; + }; + buildConfigurationList = 9AD289A72A7307C200A24D55 /* Build configuration list for PBXProject "Swift101" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9AD289A32A7307C200A24D55; + productRefGroup = 9AD289AD2A7307C200A24D55 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9AD289AB2A7307C200A24D55 /* Swift101 */, + 9AD289C12A7307C800A24D55 /* Swift101Tests */, + 9AD289CB2A7307C800A24D55 /* Swift101UITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9AD289AA2A7307C200A24D55 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD289BC2A7307C700A24D55 /* LaunchScreen.storyboard in Resources */, + 9AD289B92A7307C700A24D55 /* Assets.xcassets in Resources */, + 9AD289B72A7307C300A24D55 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289C02A7307C800A24D55 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289CA2A7307C800A24D55 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9AD289A82A7307C200A24D55 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD289E12A73083C00A24D55 /* BaseCell.swift in Sources */, + 9AD289B42A7307C300A24D55 /* ViewController.swift in Sources */, + 9AD289B02A7307C300A24D55 /* AppDelegate.swift in Sources */, + 9AD289B22A7307C300A24D55 /* SceneDelegate.swift in Sources */, + 9AD289E22A73083C00A24D55 /* ClassIdenfifiable.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289BE2A7307C800A24D55 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AE13BAB2B8ABA6200DEE46D /* SwiftPlaygroundTest.swift in Sources */, + 9AD289C72A7307C800A24D55 /* Swift101Tests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9AD289C82A7307C800A24D55 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AD289D32A7307C800A24D55 /* Swift101UITestsLaunchTests.swift in Sources */, + 9AD289D12A7307C800A24D55 /* Swift101UITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9AD289C42A7307C800A24D55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AD289AB2A7307C200A24D55 /* Swift101 */; + targetProxy = 9AD289C32A7307C800A24D55 /* PBXContainerItemProxy */; + }; + 9AD289CE2A7307C800A24D55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9AD289AB2A7307C200A24D55 /* Swift101 */; + targetProxy = 9AD289CD2A7307C800A24D55 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9AD289B52A7307C300A24D55 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AD289B62A7307C300A24D55 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 9AD289BA2A7307C700A24D55 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 9AD289BB2A7307C700A24D55 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 9AD289D42A7307C800A24D55 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9AD289D52A7307C800A24D55 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9AD289D72A7307C800A24D55 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Swift101/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9AD289D82A7307C800A24D55 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Swift101/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9AD289DA2A7307C800A24D55 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swift101.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Swift101"; + }; + name = Debug; + }; + 9AD289DB2A7307C800A24D55 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swift101.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Swift101"; + }; + name = Release; + }; + 9AD289DD2A7307C800A24D55 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101UITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Swift101; + }; + name = Debug; + }; + 9AD289DE2A7307C800A24D55 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.Swift101UITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Swift101; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9AD289A72A7307C200A24D55 /* Build configuration list for PBXProject "Swift101" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD289D42A7307C800A24D55 /* Debug */, + 9AD289D52A7307C800A24D55 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD289D62A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD289D72A7307C800A24D55 /* Debug */, + 9AD289D82A7307C800A24D55 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD289D92A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD289DA2A7307C800A24D55 /* Debug */, + 9AD289DB2A7307C800A24D55 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9AD289DC2A7307C800A24D55 /* Build configuration list for PBXNativeTarget "Swift101UITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9AD289DD2A7307C800A24D55 /* Debug */, + 9AD289DE2A7307C800A24D55 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9AD289A42A7307C200A24D55 /* Project object */; +} diff --git a/Swift/Swift101/Swift101/AppDelegate.swift b/Swift/Swift101/Swift101/AppDelegate.swift new file mode 100644 index 0000000..e652899 --- /dev/null +++ b/Swift/Swift101/Swift101/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// Swift101 +// +// Created by chenyilong on 2023/7/28. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Swift/Swift101/Swift101/Assets.xcassets/AccentColor.colorset/Contents.json b/Swift/Swift101/Swift101/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Swift/Swift101/Swift101/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Swift101/Swift101/Assets.xcassets/AppIcon.appiconset/Contents.json b/Swift/Swift101/Swift101/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/Swift/Swift101/Swift101/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Swift101/Swift101/Assets.xcassets/Contents.json b/Swift/Swift101/Swift101/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Swift/Swift101/Swift101/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Swift/Swift101/Swift101/Base.lproj/LaunchScreen.storyboard b/Swift/Swift101/Swift101/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Swift/Swift101/Swift101/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/Swift101/Swift101/Base.lproj/Main.storyboard b/Swift/Swift101/Swift101/Base.lproj/Main.storyboard new file mode 100644 index 0000000..25a7638 --- /dev/null +++ b/Swift/Swift101/Swift101/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Swift/Swift101/Swift101/BaseCell.swift b/Swift/Swift101/Swift101/BaseCell.swift new file mode 100644 index 0000000..9eb6946 --- /dev/null +++ b/Swift/Swift101/Swift101/BaseCell.swift @@ -0,0 +1,29 @@ +// +// BaseCell.swift +// iOSTest +// +// Created by chenyilong on 2023/7/25. +// + +import Foundation +import UIKit + +class BaseCell: UITableViewCell { + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension BaseCell: ClassIdenfifiable { + static var reuseIdentifier: String { + return "default" + } + + static var reuseIdentifier2: String { + return "B" + } +} diff --git a/Swift/Swift101/Swift101/ClassIdenfifiable.swift b/Swift/Swift101/Swift101/ClassIdenfifiable.swift new file mode 100644 index 0000000..00a837a --- /dev/null +++ b/Swift/Swift101/Swift101/ClassIdenfifiable.swift @@ -0,0 +1,23 @@ +// +// ClassIdenfifiable.swift +// iOSTest +// +// Created by chenyilong on 2023/7/25. +// + +import Foundation + +protocol ClassIdenfifiable { + static var reuseIdentifier: String { get } +} + +extension ClassIdenfifiable { + static var reuseIdentifier: String { + return String(describing: self) + } + //不在 Protocol requirements 中声明 + static var reuseIdentifier2: String { + return "A" + } +} + diff --git a/Swift/Swift101/Swift101/Info.plist b/Swift/Swift101/Swift101/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/Swift/Swift101/Swift101/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/Swift/Swift101/Swift101/SceneDelegate.swift b/Swift/Swift101/Swift101/SceneDelegate.swift new file mode 100644 index 0000000..bca37c3 --- /dev/null +++ b/Swift/Swift101/Swift101/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// Swift101 +// +// Created by chenyilong on 2023/7/28. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Swift/Swift101/Swift101/ViewController.swift b/Swift/Swift101/Swift101/ViewController.swift new file mode 100644 index 0000000..2d4df4f --- /dev/null +++ b/Swift/Swift101/Swift101/ViewController.swift @@ -0,0 +1,46 @@ +// +// ViewController.swift +// Swift101 +// +// Created by chenyilong on 2023/7/28. +// + +import UIKit + +class ViewController: UIViewController { + override func viewDidLoad() { + super.viewDidLoad() + testProtocolExtension() + arrayFilter() + } + + fileprivate func testProtocolExtension() { + // Do any additional setup after loading the view. + let aType: ClassIdenfifiable.Type = BaseCell.self + print("aType.reuseIdentifier is ", aType.reuseIdentifier) + print("aType.reuseIdentifier2 is ", aType.reuseIdentifier2) + + // ClassIdenfifiable is Existential type + // + let cell: ClassIdenfifiable = BaseCell() + print("BaseCell.reuseIdentifier is ", BaseCell.reuseIdentifier) + print("BaseCell.reuseIdentifier2 is ", BaseCell.reuseIdentifier2) + } + + func arrayFilter() { + let nestedArray = [[1, 2, 3], [4, 5, 6]] + let flattenedArray = nestedArray.flatMap { $0 } + print("flatMap ", flattenedArray) // Output: [1, 2, 3, 4, 5, 6] + + + let stringNumbers = ["1", "2", "three", "4"] + let mappedNumbers = stringNumbers.compactMap { Int($0) } + print("compactMap ", mappedNumbers) // Output: [1, 2, 4] + + let sampleNumbers = [1, 2, 3, 4] + let squaredNumbers = sampleNumbers.map { $0 * $0 } + print("compactMap ", squaredNumbers) // Output: [1, 4, 9, 16] + + } +} + diff --git a/Swift/Swift101/Swift101Tests/Swift101Tests.swift b/Swift/Swift101/Swift101Tests/Swift101Tests.swift new file mode 100644 index 0000000..6a8ec33 --- /dev/null +++ b/Swift/Swift101/Swift101Tests/Swift101Tests.swift @@ -0,0 +1,254 @@ +// +// Swift101Tests.swift +// Swift101Tests +// +// Created by chenyilong on 2023/7/28. +// + +import XCTest +@testable import Swift101 +class MyOperation: Operation { + private var _executing = false { + willSet { + willChangeValue(forKey: "isExecuting") + } + didSet { + didChangeValue(forKey: "isExecuting") + } + } + + override var isExecuting: Bool { + return _executing + } + + private var _finished = false { + willSet { + willChangeValue(forKey: "isFinished") + } + didSet { + didChangeValue(forKey: "isFinished") + } + } + + override var isFinished: Bool { + return _finished + } + + override func start() { + if isCancelled { + _finished = true + return + } + _executing = true + main() + } + + override func main() { + DispatchQueue.global().asyncAfter(deadline: .now() + 2) { + print("MyOperation async done") + + self._executing = false + self._finished = true + } + } +} + + + +final class Swift101Tests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + fileprivate func testProtocolExtension() { + // Do any additional setup after loading the view. + let aType: ClassIdenfifiable.Type = BaseCell.self + print("aType.reuseIdentifier is ", aType.reuseIdentifier) + print("aType.reuseIdentifier2 is ", aType.reuseIdentifier2) + + // ClassIdenfifiable is Existential type + // + let cell: ClassIdenfifiable = BaseCell() + print("BaseCell.reuseIdentifier is ", BaseCell.reuseIdentifier) + print("BaseCell.reuseIdentifier2 is ", BaseCell.reuseIdentifier2) + } + + func testArrayFilter() { + let nestedArray = [[1, 2, 3], [4, 5, 6]] + let flattenedArray = nestedArray.flatMap { $0 } + print("flatMap ", flattenedArray) // Output: [1, 2, 3, 4, 5, 6] + + + let stringNumbers = ["1", "2", "three", "4"] + let mappedNumbers = stringNumbers.compactMap { Int($0) } + print("compactMap ", mappedNumbers) // Output: [1, 2, 4] + + let sampleNumbers = [1, 2, 3, 4] + let squaredNumbers = sampleNumbers.map { $0 * $0 } + print("compactMap ", squaredNumbers) // Output: [1, 4, 9, 16] + + } + + func testQueue() { + let op0 = MyOperation() + let op1 = MyOperation() + + op0.addDependency(op1) + + let queue = OperationQueue() + queue.addOperation(op0) + queue.addOperation(op1) + + queue.waitUntilAllOperationsAreFinished() + + print("after waitUntilAllOperationsAreFinished") + + queue.addBarrierBlock { + print("barrier block") + } + } + + func testTypealiasWithInit() { + typealias Thing = [String: Any] + var stuff: Thing = [:] // Initialize with an empty dictionary + print("testTypealiasWithInit", type(of: stuff)) + + } + + + func testTypealiasNoInit() { + typealias Thing = [String: Any] + var stuff: Thing + print("testTypealiasNoInit", type(of: stuff)) + + } + + func testLazyFilter() { + let numbers = [1, 2, 3, 4, 5] + let modifiedNumbers = numbers + .lazy + .filter { $0 % 2 == 0} + .map { $0 * 2 } + print(modifiedNumbers[0]) + } + + func testLazyFilter2() { + let numbers = [1, 2, 3, 4, 5] + let modifiedNumbers = numbers + .lazy + .map { $0 * 2 } + .filter { $0 % 2 == 0} + print(modifiedNumbers.first ?? -1) + } + + func testLazyFilter4() { + let numbers = [1, 2, 3, 4, 5] + let modifiedNumbers = numbers + .lazy + .filter { $0 % 2 == 0} + .map { $0 * 2 } + + if let firstNumber = modifiedNumbers.first { + print(firstNumber) + } else { + print("No even numbers found") + } + } + + struct Person { + var name: String + var age: Int + } + + func testLazyFilter3() { + let persons = [ + Person(name: "Alice", age: 17), + Person(name: "Bob", age: 18), + Person(name: "Charlie", age: 20), + ] + let result = persons.lazy.filter { $0.age >= 18 }.map { $0.name } + print(Array(result)) + } + + + struct CYLSequence: Sequence { + struct Iterator: IteratorProtocol { + let _next: () -> Element? + + func next() -> Element? { + return _next() + } + } + + let _makeIterator: () -> Iterator + + func makeIterator() -> Iterator { + return _makeIterator() + } + + init(_ seq: Seq) where Seq.Element == Element { + var iterator = seq.makeIterator() + _makeIterator = { + return Iterator(_next: { iterator.next() }) + } + } + + + } + + func printList(_ seq: CYLSequence) { + seq.forEach({ print("\($0)") }) + } + + func testTypeErasure() { + let array = [1, 2, 3, 4, 5, 6] + // 1, 2, 3, 5, 5 + printList(CYLSequence(array)) + // 2, 3, 4 + printList(CYLSequence(array[1..<4])) + + } + + func testLazyCapture() { + var capturedValue: Int = 0 + + let valueCaptureListClosure = { + print(capturedValue) + } + + capturedValue = 1 + + valueCaptureListClosure() // 打印1 说明闭包看到的是当前的 capturedValue 的值 + } + + func testEagerCaptureAndCaptureListValueType() { + var capturedValue: Int = 0 + + let valueCaptureListClosure = { [capturedValue] in + print(capturedValue) + } + + capturedValue = 1 + + valueCaptureListClosure() // 打印0,说明闭包看到的是捕获时的 capturedValue 的值,而不是当前的值 + } +} diff --git a/Swift/Swift101/Swift101Tests/SwiftPlaygroundTest.swift b/Swift/Swift101/Swift101Tests/SwiftPlaygroundTest.swift new file mode 100644 index 0000000..d0a5fd9 --- /dev/null +++ b/Swift/Swift101/Swift101Tests/SwiftPlaygroundTest.swift @@ -0,0 +1,518 @@ +// +// SwiftPlaygroundTest.swift +// Swift101Tests +// +// Created by chenyilong on 2024/2/25. +// + +import Foundation +import XCTest +import UIKit + +import XCTest +@testable import Swift101 + +final class SwiftPlaygroundTest: XCTestCase { + + override func setUpWithError() throws { + print("SwiftPlaygroundTest") + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + // func testPerformanceExample() throws { + // // This is an example of a performance test case. + // self.measure { + // // Put the code you want to measure the time of here. + // } + // } + func welcome() -> String { + return "welcome!" + } + + func testWelcome() { + let myWelcome = welcome() + + print(myWelcome + "Elon!!") + + let customWelcome = welcome(name: "Elon!!!") + print(customWelcome) + } + + func welcome(name: String) -> String { + return "Welcome, \(name)" + } + + func error() -> (code: Int, description: String) { + return (404, "Not found") + } + + func testError() { + let myError = error() + print("Error code \(myError.code): \(myError.description)") + } + func subtractOne(from number: Int) -> Int { + return number - 1 + } + + func subtractOne(_ number: Int) -> Int { + return number - 1 + } + func subtractOne(number: Int) -> Int { + return number - 1 + } + + func testSubtract() { + print(subtractOne(from: 5)) + print(subtractOne(5)) + print(subtractOne(number: 5)) + } + + func addOne(to number: Int = 0) -> Int { + return number + 1 + } + + func testAddone() { + print(addOne()) + print(addOne(to: 5)) + } + + + enum Product: CaseIterable { + case laptop + case desktop + case phone + case watch + } + enum Suit: String { + case spades = "♠️" + case hearts = "♥️" + case diamonds = "♦️" + case clubs = "♣️" + } + + enum Card { + case regular(Int, Suit) + case joker + } + + func testEnum() { + let product = Product.laptop + var result: String + switch product { + case .laptop: + result = "laptop" + case .desktop: + result = "desktop" + case .phone: + result = "phone" + case .watch: + result = "watch" + } + + print(result) + print(Product.allCases) + + print(Suit.spades.rawValue) + + let card = Card.regular(7, .hearts) + switch card { + case .regular(let number, let suit): + result = "The \(number) of \(suit.rawValue)" + case .joker: + result = "Joker" + } + + print(result) + } + + func testBasicDataTypes() { + let a: UInt8 = 240 + print("uint8 min \(UInt8.min), UInt8 max \(UInt8.max), this Unit8 is \(a)") + + typealias AudioSample = UInt16 + let sample: AudioSample = 8 + print("AudioSample min \(AudioSample.min), AudioSample max \(AudioSample.max), this AudioSample is \(sample)") + } + + + + struct Point { + var x = 0 + var y = 0 + } + + class Student { + var name = "name" + var grade = 1 + } + + func testStruct() { + var p1 = Point() + var p2 = p1 + p2.x = 4 + p2.y = 5 + + print("p1 is at (\(p1.x), \(p1.y))") + print("p2 is at (\(p2.x), \(p2.y))") + } + + func testClass() { + var s1 = Student() + var s2 = s1 + s2.name = "Elon" + s2.grade = 2 + + print("s1 is \(s1.name) in grade \(s1.grade)") + print("s2 is \(s2.name) in grade \(s2.grade)") + } + + + class Person { + var name: String + + init(name: String) { + self.name = name + } + } + + struct Company { + var size: Int + var manager: Person + + mutating func increaseSize() { + self = Company(size: size + 1, manager: manager) + } + + mutating func increaseSizeV2() { + size += 1 + } + } + + func testStructAndClass() { + var companyA = Company(size: 100, manager: Person(name: "Peter")) + + var companyB = companyA + companyA.size = 150 // if a struct is an immutable value type, why we can mutate the size property? + print(companyA.size) // ? question1 + print(companyB.size) // ? question2 + + companyA.manager.name = "Bob" + print(companyA.manager.name) // ? question3 + print(companyB.manager.name) // ? question4 + + companyA.increaseSize() + print(companyA.size) // ? question5 + companyA.increaseSizeV2() + print(companyA.size) // ? question6 + } + + struct Cube { + var sideLength: Double = 1.0 { + willSet { + print("will set sideLength to \(newValue) with current sideLength \(sideLength)") + } + didSet { + print("did set sideLength to \(sideLength) from oldValue \(oldValue)") + } + } + var volume: Double { + return sideLength * sideLength * sideLength + } + } + + func testStructPropertyObserver() { + var cube = Cube() + print("cube volume is \(cube.volume)") + cube.sideLength = 2.0 + print("cube volume is \(cube.volume)") + } + + func testTuple() { + let error = (1, "No Autherity") + print("error is \(error)") + print("error code is \(error.0)") + print("error msg is \(error.1)") + + let notExistError = (errorCode: 1, errorMessage: "not exist") + print("error is \(notExistError)") + print("error code is \(notExistError.errorCode)") + print("error msg is \(notExistError.errorMessage)") + + var codeEditableError = (errorCode: 2, errorMessage: "not exist") + codeEditableError.errorCode = 404 + print("error is \(codeEditableError)") + print("error code is \(codeEditableError.errorCode)") + print("error msg is \(codeEditableError.errorMessage)") + + + var msgEditableError: (errorCode: Int, errorMessage: Any) = (errorCode: 2, errorMessage: "not exist") + msgEditableError.errorMessage = 404 + print("error is \(msgEditableError)") + print("error code is \(msgEditableError.errorCode)") + print("error msg is \(msgEditableError.errorMessage)") + + func writeFile(content: String) -> (errorCode: Int, errorMsg: String) { + return (1, "not exist") + } + + let funcReturnError = writeFile(content: "onlyForTest") + + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the funcReturnError is? A:\(funcReturnError)") + } + + func testOptional() { + let str: String? = "123" + // let count = str.count //🔴 error: Value of optional type 'String?' must be unwrapped to refer to member 'count' of wrapped base type 'String' + let count = str!.count + print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the count is? A:\(count)") + + if str != nil { + let count = str!.count + print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the count is? A:\(count)") + + } + + if let actual = str { + let count = actual.count + print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the count is? A:\(count)") + } + + let strSecond: String? = nil + // let countSecond = strSecond!.count // 🔴Crash: Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value + // print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the countSecond is? A:\(countSecond)") + + //try to use optional instead of ? + + let strOptionalWrapped: Optional = "123" + //unsafelyUnwrapped is used to force unwrapping of an optional value, assuming that the optional value is not nil. if it is nil, then the program will crash. like: 🔴 crash when ```let strOptionalWrapped: Optional = nil``` + let countForStrOptionalWrapped = strOptionalWrapped.unsafelyUnwrapped.count + print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the countForStrOptionalWrapped is? A:\(countForStrOptionalWrapped)") + + if let actualStrOptionalWrapped = strOptionalWrapped { + let count = actualStrOptionalWrapped.count + print(" Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the count is? A:\(count)") + } + } + + func testStr() { + var emptyStr = "" + if emptyStr.isEmpty { + print("emptyStr is empty") + } + + emptyStr = "123" + emptyStr = String() + if emptyStr.isEmpty { + print("emptyStr is empty") + } + + var numbers = """ +1 +2 +3 +4 +5 +""" + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the numbers is? A:\(numbers)") + + numbers = """ + +1 +2 +3 +4 +5 +""" + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the numbers is? A:\(numbers)") + + + numbers = """ + +1\ +2\ +3 +4 +5 +""" + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the numbers is? A:\(numbers)") + + numbers = """ + 1 + 2 + 3 + 4 + 5 + """ + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the numbers is? A:\(numbers)") + + + var strMutiLine = "\n1\n2\n3" + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the strMutiLine is? A:\(strMutiLine)") + + strMutiLine = #"\n1\n2\n3"# + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the strMutiLine is? A:\(strMutiLine)") + strMutiLine = ##"\n1\"#n2\n3"## + + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the strMutiLine is? A:\(strMutiLine)") + strMutiLine = ##"\n1\"#n2\##n3"## + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the strMutiLine is? A:\(strMutiLine)") + strMutiLine = ##"\n1\"#n2\#n3"## + print("🔴 Swift Class Name:\((#file as NSString).lastPathComponent) func Name:\(#function)(at \(#line) line), Q: what the strMutiLine is? A:\(strMutiLine)") + } + + + struct BankAccount { + var balance: Double + init(balance: Double) { + self.balance = balance + } + + mutating func deposit(amount: Double) { + balance += amount + } + + mutating func withdraw(amount: Double) -> Double { + let amount = min(balance, amount) + balance -= amount + return amount + } + } + + func testStructMutatingWithBankAccount() { + var account = BankAccount(balance: 100) + account.deposit(amount: 50) + print("account balance is \(account.balance)") + print("account balance is \(account.withdraw(amount: 100))") + print("account balance is \(account.withdraw(amount: 1000))") + } + + enum LightSwitch { + case red, green, yellow + + mutating func next() { + switch self { + case .red: + self = .green + case .green: + self = .yellow + case .yellow: + self = .red + } + } + } + func testMethodWithLightSwitch() { + var lightSwitch = LightSwitch.red + lightSwitch.next() + print("lightSwitch is \(lightSwitch)") + lightSwitch.next() + print("lightSwitch is \(lightSwitch)") + lightSwitch.next() + print("lightSwitch is \(lightSwitch)") + lightSwitch.next() + print("lightSwitch is \(lightSwitch)") + } + + + class Enemy { + var health = 100 + var speed = 1 + func makeAttackNoise() { + print("Enemy attack") + } + + var desription: String { + return "Enemy with health \(health) and speed \(speed)" + } + } + + class Lion: Enemy { + func scratch() { + print("Lion scratch") + } + + override func makeAttackNoise() { + print("Lion attack") + super.makeAttackNoise() + } + override var desription: String { + return "Lion with health \(health) and speed \(speed)" + } + } + + + func testInheritance() { + let lion = Lion() + print(lion.desription) + lion.makeAttackNoise() + lion.scratch() + print(lion.desription) + } + + struct Shoe { + let brand: String + let size: Int + let color: String + init(brand: String) { + self.brand = brand + size = 10 + color = "Red" + } +// init(brand: String, size: Int, color: String) { +// self.brand = brand +// self.size = size +// self.color = color +// } + } + + func testInitializeWithShoe() { +// let shoe = Shoe(brand: "Nike", size: 10, color: "Red") +// print("shoe is \(shoe)") + + let shoe = Shoe(brand: "Nike") + print("shoe is \(shoe)") + + } + + class Products { + let name: String + init(name: String) { + self.name = name + } + } + + class Bottle: Products { + let size: Double + + init(name: String, size: Double) { + self.size = size + super.init(name: name) + } + + convenience override init(name: String) { + self.init(name: name, size: 500) + } + } + + func testInitializeWithProduct() { + + let product = Products(name: "Water") + print("product is \(product)") + let bottle = Bottle(name: "Water", size: 500) + print("bottle is \(bottle)") + + let bottle2 = Bottle(name: "Water") + print("bottle2 is \(bottle2)") + } +} diff --git a/Swift/Swift101/Swift101UITests/Swift101UITests.swift b/Swift/Swift101/Swift101UITests/Swift101UITests.swift new file mode 100644 index 0000000..f6a40d6 --- /dev/null +++ b/Swift/Swift101/Swift101UITests/Swift101UITests.swift @@ -0,0 +1,41 @@ +// +// Swift101UITests.swift +// Swift101UITests +// +// Created by chenyilong on 2023/7/28. +// + +import XCTest + +final class Swift101UITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/Swift/Swift101/Swift101UITests/Swift101UITestsLaunchTests.swift b/Swift/Swift101/Swift101UITests/Swift101UITestsLaunchTests.swift new file mode 100644 index 0000000..25e2210 --- /dev/null +++ b/Swift/Swift101/Swift101UITests/Swift101UITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// Swift101UITestsLaunchTests.swift +// Swift101UITests +// +// Created by chenyilong on 2023/7/28. +// + +import XCTest + +final class Swift101UITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/SwiftUI/SwiftUI101/README.md b/SwiftUI/SwiftUI101/README.md new file mode 100644 index 0000000..4ab1bd3 --- /dev/null +++ b/SwiftUI/SwiftUI101/README.md @@ -0,0 +1,6 @@ +## iOS Programming Challenge: SwiftUI 101 + + +## Result from Yilong Chen +![https://github.com/ChenYilong](preview.gif) + diff --git a/SwiftUI/SwiftUI101/SwiftUI101.xcodeproj/project.pbxproj b/SwiftUI/SwiftUI101/SwiftUI101.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7ca8361 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101.xcodeproj/project.pbxproj @@ -0,0 +1,592 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 9A28A72A2A788C5600478870 /* SwiftUI101App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A28A7292A788C5600478870 /* SwiftUI101App.swift */; }; + 9A28A72C2A788C5700478870 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A28A72B2A788C5700478870 /* ContentView.swift */; }; + 9A28A72E2A788C5A00478870 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A28A72D2A788C5A00478870 /* Assets.xcassets */; }; + 9A28A7312A788C5A00478870 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A28A7302A788C5A00478870 /* Preview Assets.xcassets */; }; + 9A28A73B2A788C5B00478870 /* SwiftUI101Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A28A73A2A788C5B00478870 /* SwiftUI101Tests.swift */; }; + 9A28A7452A788C5B00478870 /* SwiftUI101UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A28A7442A788C5B00478870 /* SwiftUI101UITests.swift */; }; + 9A28A7472A788C5B00478870 /* SwiftUI101UITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A28A7462A788C5B00478870 /* SwiftUI101UITestsLaunchTests.swift */; }; + 9AE4EB752A78C8100071A7C7 /* MyCustomCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AE4EB742A78C8100071A7C7 /* MyCustomCell.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A28A7372A788C5B00478870 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A28A71E2A788C5600478870 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A28A7252A788C5600478870; + remoteInfo = SwiftUI101; + }; + 9A28A7412A788C5B00478870 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A28A71E2A788C5600478870 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A28A7252A788C5600478870; + remoteInfo = SwiftUI101; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A28A7262A788C5600478870 /* SwiftUI101.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUI101.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A28A7292A788C5600478870 /* SwiftUI101App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUI101App.swift; sourceTree = ""; }; + 9A28A72B2A788C5700478870 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 9A28A72D2A788C5A00478870 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A28A7302A788C5A00478870 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 9A28A7362A788C5B00478870 /* SwiftUI101Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUI101Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A28A73A2A788C5B00478870 /* SwiftUI101Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUI101Tests.swift; sourceTree = ""; }; + 9A28A7402A788C5B00478870 /* SwiftUI101UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUI101UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A28A7442A788C5B00478870 /* SwiftUI101UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUI101UITests.swift; sourceTree = ""; }; + 9A28A7462A788C5B00478870 /* SwiftUI101UITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUI101UITestsLaunchTests.swift; sourceTree = ""; }; + 9AE4EB742A78C8100071A7C7 /* MyCustomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyCustomCell.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A28A7232A788C5600478870 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A7332A788C5B00478870 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A73D2A788C5B00478870 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A28A71D2A788C5600478870 = { + isa = PBXGroup; + children = ( + 9A28A7282A788C5600478870 /* SwiftUI101 */, + 9A28A7392A788C5B00478870 /* SwiftUI101Tests */, + 9A28A7432A788C5B00478870 /* SwiftUI101UITests */, + 9A28A7272A788C5600478870 /* Products */, + ); + sourceTree = ""; + }; + 9A28A7272A788C5600478870 /* Products */ = { + isa = PBXGroup; + children = ( + 9A28A7262A788C5600478870 /* SwiftUI101.app */, + 9A28A7362A788C5B00478870 /* SwiftUI101Tests.xctest */, + 9A28A7402A788C5B00478870 /* SwiftUI101UITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9A28A7282A788C5600478870 /* SwiftUI101 */ = { + isa = PBXGroup; + children = ( + 9A28A7292A788C5600478870 /* SwiftUI101App.swift */, + 9A28A72B2A788C5700478870 /* ContentView.swift */, + 9AE4EB742A78C8100071A7C7 /* MyCustomCell.swift */, + 9A28A72D2A788C5A00478870 /* Assets.xcassets */, + 9A28A72F2A788C5A00478870 /* Preview Content */, + ); + path = SwiftUI101; + sourceTree = ""; + }; + 9A28A72F2A788C5A00478870 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 9A28A7302A788C5A00478870 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 9A28A7392A788C5B00478870 /* SwiftUI101Tests */ = { + isa = PBXGroup; + children = ( + 9A28A73A2A788C5B00478870 /* SwiftUI101Tests.swift */, + ); + path = SwiftUI101Tests; + sourceTree = ""; + }; + 9A28A7432A788C5B00478870 /* SwiftUI101UITests */ = { + isa = PBXGroup; + children = ( + 9A28A7442A788C5B00478870 /* SwiftUI101UITests.swift */, + 9A28A7462A788C5B00478870 /* SwiftUI101UITestsLaunchTests.swift */, + ); + path = SwiftUI101UITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A28A7252A788C5600478870 /* SwiftUI101 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A28A74A2A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101" */; + buildPhases = ( + 9A28A7222A788C5600478870 /* Sources */, + 9A28A7232A788C5600478870 /* Frameworks */, + 9A28A7242A788C5600478870 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwiftUI101; + productName = SwiftUI101; + productReference = 9A28A7262A788C5600478870 /* SwiftUI101.app */; + productType = "com.apple.product-type.application"; + }; + 9A28A7352A788C5B00478870 /* SwiftUI101Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A28A74D2A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101Tests" */; + buildPhases = ( + 9A28A7322A788C5B00478870 /* Sources */, + 9A28A7332A788C5B00478870 /* Frameworks */, + 9A28A7342A788C5B00478870 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A28A7382A788C5B00478870 /* PBXTargetDependency */, + ); + name = SwiftUI101Tests; + productName = SwiftUI101Tests; + productReference = 9A28A7362A788C5B00478870 /* SwiftUI101Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9A28A73F2A788C5B00478870 /* SwiftUI101UITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A28A7502A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101UITests" */; + buildPhases = ( + 9A28A73C2A788C5B00478870 /* Sources */, + 9A28A73D2A788C5B00478870 /* Frameworks */, + 9A28A73E2A788C5B00478870 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A28A7422A788C5B00478870 /* PBXTargetDependency */, + ); + name = SwiftUI101UITests; + productName = SwiftUI101UITests; + productReference = 9A28A7402A788C5B00478870 /* SwiftUI101UITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A28A71E2A788C5600478870 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 9A28A7252A788C5600478870 = { + CreatedOnToolsVersion = 14.2; + }; + 9A28A7352A788C5B00478870 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A28A7252A788C5600478870; + }; + 9A28A73F2A788C5B00478870 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A28A7252A788C5600478870; + }; + }; + }; + buildConfigurationList = 9A28A7212A788C5600478870 /* Build configuration list for PBXProject "SwiftUI101" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A28A71D2A788C5600478870; + productRefGroup = 9A28A7272A788C5600478870 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A28A7252A788C5600478870 /* SwiftUI101 */, + 9A28A7352A788C5B00478870 /* SwiftUI101Tests */, + 9A28A73F2A788C5B00478870 /* SwiftUI101UITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A28A7242A788C5600478870 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A28A7312A788C5A00478870 /* Preview Assets.xcassets in Resources */, + 9A28A72E2A788C5A00478870 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A7342A788C5B00478870 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A73E2A788C5B00478870 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A28A7222A788C5600478870 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9AE4EB752A78C8100071A7C7 /* MyCustomCell.swift in Sources */, + 9A28A72C2A788C5700478870 /* ContentView.swift in Sources */, + 9A28A72A2A788C5600478870 /* SwiftUI101App.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A7322A788C5B00478870 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A28A73B2A788C5B00478870 /* SwiftUI101Tests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A28A73C2A788C5B00478870 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A28A7452A788C5B00478870 /* SwiftUI101UITests.swift in Sources */, + 9A28A7472A788C5B00478870 /* SwiftUI101UITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A28A7382A788C5B00478870 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A28A7252A788C5600478870 /* SwiftUI101 */; + targetProxy = 9A28A7372A788C5B00478870 /* PBXContainerItemProxy */; + }; + 9A28A7422A788C5B00478870 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A28A7252A788C5600478870 /* SwiftUI101 */; + targetProxy = 9A28A7412A788C5B00478870 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 9A28A7482A788C5B00478870 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9A28A7492A788C5B00478870 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A28A74B2A788C5B00478870 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUI101/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A28A74C2A788C5B00478870 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUI101/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9A28A74E2A788C5B00478870 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUI101.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUI101"; + }; + name = Debug; + }; + 9A28A74F2A788C5B00478870 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUI101.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUI101"; + }; + name = Release; + }; + 9A28A7512A788C5B00478870 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101UITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUI101; + }; + name = Debug; + }; + 9A28A7522A788C5B00478870 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUI101UITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUI101; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A28A7212A788C5600478870 /* Build configuration list for PBXProject "SwiftUI101" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A28A7482A788C5B00478870 /* Debug */, + 9A28A7492A788C5B00478870 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A28A74A2A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A28A74B2A788C5B00478870 /* Debug */, + 9A28A74C2A788C5B00478870 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A28A74D2A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A28A74E2A788C5B00478870 /* Debug */, + 9A28A74F2A788C5B00478870 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A28A7502A788C5B00478870 /* Build configuration list for PBXNativeTarget "SwiftUI101UITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A28A7512A788C5B00478870 /* Debug */, + 9A28A7522A788C5B00478870 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A28A71E2A788C5600478870 /* Project object */; +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/Contents.json b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/ContentView.swift b/SwiftUI/SwiftUI101/SwiftUI101/ContentView.swift new file mode 100644 index 0000000..0c1d779 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/ContentView.swift @@ -0,0 +1,82 @@ +// +// ContentView.swift +// SwiftUI101 +// +// Created by chenyilong on 2023/8/1. +// + +import SwiftUI + +// Observable object to be used +class UserSettings: ObservableObject { + @Published var score = 0 +} + +struct ContentView: View { + @State private var name = "[@State]Anonymous" + @StateObject private var settings = UserSettings() + + var body: some View { + NavigationView { + VStack { + // State usage + TextField("[@State]Enter your name", text: $name).background(Color.red) + + Text("Your name is \(name)") + + // StateObject usage + Text("[@StateObject]Your score is \(settings.score)") + + Button("[@State&@StateObject]Touch to Increase Score") { + settings.score += 1 + name = "[@State]chenyilong" + String(settings.score) + } + // Navigate to ChildView, passing the settings + NavigationLink(destination: ChildView(settings: settings, name: $name)) { + Text("[@Binding]Go to ChildView View") + } + + // Display the ScoreView using @EnvironmentObject + ScoreView().background(Color.green) + + List { + //In SwiftUI, you can use a ForEach loop directly in your List. + //This is equivalent to numberOfRowsInSection and cellForRowAt indexPath in UIKit. + ForEach(0..<5) { index in + MyCustomCell(title: "Title \(index)", subtitle: "Subtitle \(index)", index: index) + } + } + } + } + .environmentObject(settings) // Provide UserSettings as an environment object to the other views + } +} + +struct ChildView: View { + @ObservedObject var settings: UserSettings + @Binding var name: String + @Environment(\.presentationMode) private var presentationMode + + var body: some View { + VStack { + Text("[@Binding]Score: \(settings.score)") + TextField("[@Binding]Change name", text: $name).background(Color.red) + Button("[@Binding]Increase Score") { + settings.score += 1 + name = "[@Binding]chenyilong" + String(settings.score) + } + Button("Dismiss") { + self.presentationMode.wrappedValue.dismiss() + } + } + } +} + +struct ScoreView: View { + // Access UserSettings using @EnvironmentObject + @EnvironmentObject var settings: UserSettings + + var body: some View { + Text("[@EnvironmentObject]Your Score in ScoreView: \(settings.score)") + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/MyCustomCell.swift b/SwiftUI/SwiftUI101/SwiftUI101/MyCustomCell.swift new file mode 100644 index 0000000..78fad63 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/MyCustomCell.swift @@ -0,0 +1,40 @@ +// +// MyCustomCell.swift +// SwiftUI101 +// +// Created by chenyilong on 2023/8/1. +// + +import Foundation +import SwiftUI + +struct MyCustomCell: View { + var title: String + var subtitle: String + var index: Int + + var body: some View { + NavigationLink(destination: DetailView(index: index)) { + HStack { + VStack(alignment: .leading) { + Text(title) + .font(.headline) + Text(subtitle) + .font(.subheadline) + .foregroundColor(.secondary) + } + Spacer() + } + .padding(.vertical, 8) + } + } +} + +struct DetailView: View { + var index: Int + + var body: some View { + Text("Detail view for row \(index)") + } +} + diff --git a/SwiftUI/SwiftUI101/SwiftUI101/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUI101/SwiftUI101/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101/SwiftUI101App.swift b/SwiftUI/SwiftUI101/SwiftUI101/SwiftUI101App.swift new file mode 100644 index 0000000..c9bcd10 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101/SwiftUI101App.swift @@ -0,0 +1,18 @@ +// +// SwiftUI101App.swift +// SwiftUI101 +// +// Created by chenyilong on 2023/8/1. +// + +import SwiftUI + +@main +struct MyApp: App { + + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101Tests/SwiftUI101Tests.swift b/SwiftUI/SwiftUI101/SwiftUI101Tests/SwiftUI101Tests.swift new file mode 100644 index 0000000..1284d38 --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101Tests/SwiftUI101Tests.swift @@ -0,0 +1,36 @@ +// +// SwiftUI101Tests.swift +// SwiftUI101Tests +// +// Created by chenyilong on 2023/8/1. +// + +import XCTest +@testable import SwiftUI101 + +final class SwiftUI101Tests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITests.swift b/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITests.swift new file mode 100644 index 0000000..f38c91d --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITests.swift @@ -0,0 +1,41 @@ +// +// SwiftUI101UITests.swift +// SwiftUI101UITests +// +// Created by chenyilong on 2023/8/1. +// + +import XCTest + +final class SwiftUI101UITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITestsLaunchTests.swift b/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITestsLaunchTests.swift new file mode 100644 index 0000000..1e16e7a --- /dev/null +++ b/SwiftUI/SwiftUI101/SwiftUI101UITests/SwiftUI101UITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// SwiftUI101UITestsLaunchTests.swift +// SwiftUI101UITests +// +// Created by chenyilong on 2023/8/1. +// + +import XCTest + +final class SwiftUI101UITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/SwiftUI/SwiftUI101/preview.gif b/SwiftUI/SwiftUI101/preview.gif new file mode 100644 index 0000000..9ca5cd5 Binary files /dev/null and b/SwiftUI/SwiftUI101/preview.gif differ diff --git a/SwiftUI/SwiftUIDemo/README.md b/SwiftUI/SwiftUIDemo/README.md new file mode 100644 index 0000000..6a8a0cb --- /dev/null +++ b/SwiftUI/SwiftUIDemo/README.md @@ -0,0 +1,66 @@ +## iOS Programming Challenge: Interactive Post Viewer + +Source Code: [SwiftUI Demo]( https://github.com/ChenYilong/iOSInterviewQuestions/blob/master/SwiftUI/SwiftUIDemo "") + +

+ + +**Description:** + +Your task is to create a native iOS application using Swift, SwiftUI, UIKit, WebKit, and Combine. The application should provide an interactive interface for browsing and viewing posts, comments, and associated user details from a JSONPlaceholder API. + +**Requirements:** + +1. Use the REST API available at `https://jsonplaceholder.typicode.com`. The API contains a `/posts`, `/comments`, and `/users` endpoints that return a list of posts, comments, and user information, respectively. + +2. The application should display the list of posts on the initial screen. Each item on the list should display the post's title and a snippet of the body. + +3. When a post is selected from the list, navigate to a detail screen. This screen should display the post's full body, fetch and display the associated comments from the `/comments` endpoint using the post's id. Display each comment's name, email, and body. + +4. On the post detail screen, fetch the user's information from the `/users` endpoint using the post's `userId`. The user data can be fetched using the API pattern: `https://jsonplaceholder.typicode.com/users?id={userId}`. Display user's name, email, a MapKit view showing the user's location based on the `address.geo` data, and a WebView/WebKit view displaying the user's website. + +5. Implement local data storage using Core Data or Realm to cache the fetched data for offline use. + +6. Add an option for the user to mark a post as a favorite. The favorited posts should be stored locally using Core Data or Realm and should be easily distinguishable in the posts list. + +7. Use Combine for data binding and data observing in your app. + +8. Include unit tests to ensure the critical aspects of your application are working as expected. + +**Bonus Points:** + +1. Add a search functionality to the posts list that allows users to search for posts by title. + +2. Implement pull-to-refresh functionality on the posts list screen to refresh the data. + +3. Ensure the application works well on different devices and screen sizes, including iPads. + +4. Use SwiftUI’s new async/await features to manage the API calls. + +**Evaluation:** + +You will be evaluated based on: + +1. Code quality, architecture, and organization. +2. Correct and efficient use of Swift, SwiftUI, UIKit, MapKit, WebKit, Combine, and other iOS frameworks. +3. Implementation of the requirements and bonus points. +4. Handling of edge cases and application stability. +5. UI/UX design and responsiveness. +6. Adequate and meaningful unit tests. + +Please submit your code as a Git repository (GitHub, BitBucket, GitLab, etc.), ensuring that your repository includes all your source code and any instructions needed to build and run your application. + + + +### Nice to have: + +Search functionality on the posts list and comments list. + + +## Result from Yilong Chen +![https://github.com/ChenYilong](preview.gif) + +## SwiftUI + +

+ diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIDemo/SwiftUIDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..6ba6d3f --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo.xcodeproj/project.pbxproj @@ -0,0 +1,676 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 9A04F6522A64D063000F8B74 /* SwiftUIDemoApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6512A64D063000F8B74 /* SwiftUIDemoApp.swift */; }; + 9A04F6542A64D063000F8B74 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6532A64D063000F8B74 /* ContentView.swift */; }; + 9A04F6562A64D065000F8B74 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A04F6552A64D065000F8B74 /* Assets.xcassets */; }; + 9A04F6592A64D065000F8B74 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A04F6582A64D065000F8B74 /* Preview Assets.xcassets */; }; + 9A04F6632A64D066000F8B74 /* SwiftUIDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6622A64D066000F8B74 /* SwiftUIDemoTests.swift */; }; + 9A04F66D2A64D066000F8B74 /* SwiftUIDemoUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F66C2A64D066000F8B74 /* SwiftUIDemoUITests.swift */; }; + 9A04F66F2A64D066000F8B74 /* SwiftUIDemoUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F66E2A64D066000F8B74 /* SwiftUIDemoUITestsLaunchTests.swift */; }; + 9A04F6802A6A056E000F8B74 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 9A04F67F2A6A056B000F8B74 /* README.md */; }; + 9A04F6922A6A0C06000F8B74 /* ContentCellViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6822A6A0C05000F8B74 /* ContentCellViewModelProtocol.swift */; }; + 9A04F6932A6A0C06000F8B74 /* CommentCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6832A6A0C05000F8B74 /* CommentCellViewModel.swift */; }; + 9A04F6942A6A0C06000F8B74 /* PostListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6842A6A0C05000F8B74 /* PostListViewModel.swift */; }; + 9A04F6952A6A0C06000F8B74 /* CommentListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6852A6A0C05000F8B74 /* CommentListViewModel.swift */; }; + 9A04F6962A6A0C06000F8B74 /* PostCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6862A6A0C05000F8B74 /* PostCellViewModel.swift */; }; + 9A04F6972A6A0C06000F8B74 /* ContentListViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6872A6A0C05000F8B74 /* ContentListViewModelProtocol.swift */; }; + 9A04F6982A6A0C06000F8B74 /* RowViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6882A6A0C05000F8B74 /* RowViewModel.swift */; }; + 9A04F6992A6A0C06000F8B74 /* Comment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F68A2A6A0C05000F8B74 /* Comment.swift */; }; + 9A04F69A2A6A0C06000F8B74 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F68B2A6A0C05000F8B74 /* Post.swift */; }; + 9A04F69B2A6A0C06000F8B74 /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F68D2A6A0C05000F8B74 /* Repository.swift */; }; + 9A04F69C2A6A0C06000F8B74 /* ContentModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F68E2A6A0C05000F8B74 /* ContentModel.swift */; }; + 9A04F69D2A6A0C06000F8B74 /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6902A6A0C06000F8B74 /* UIColor+Extension.swift */; }; + 9A04F69E2A6A0C06000F8B74 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A04F6912A6A0C06000F8B74 /* Observable.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A04F65F2A64D066000F8B74 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A04F6462A64D063000F8B74 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A04F64D2A64D063000F8B74; + remoteInfo = SwiftUIDemo; + }; + 9A04F6692A64D066000F8B74 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A04F6462A64D063000F8B74 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A04F64D2A64D063000F8B74; + remoteInfo = SwiftUIDemo; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A04F64E2A64D063000F8B74 /* SwiftUIDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUIDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A04F6512A64D063000F8B74 /* SwiftUIDemoApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIDemoApp.swift; sourceTree = ""; }; + 9A04F6532A64D063000F8B74 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 9A04F6552A64D065000F8B74 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A04F6582A64D065000F8B74 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 9A04F65E2A64D066000F8B74 /* SwiftUIDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUIDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A04F6622A64D066000F8B74 /* SwiftUIDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIDemoTests.swift; sourceTree = ""; }; + 9A04F6682A64D066000F8B74 /* SwiftUIDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUIDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A04F66C2A64D066000F8B74 /* SwiftUIDemoUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIDemoUITests.swift; sourceTree = ""; }; + 9A04F66E2A64D066000F8B74 /* SwiftUIDemoUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIDemoUITestsLaunchTests.swift; sourceTree = ""; }; + 9A04F67F2A6A056B000F8B74 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 9A04F6822A6A0C05000F8B74 /* ContentCellViewModelProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentCellViewModelProtocol.swift; sourceTree = ""; }; + 9A04F6832A6A0C05000F8B74 /* CommentCellViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentCellViewModel.swift; sourceTree = ""; }; + 9A04F6842A6A0C05000F8B74 /* PostListViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostListViewModel.swift; sourceTree = ""; }; + 9A04F6852A6A0C05000F8B74 /* CommentListViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommentListViewModel.swift; sourceTree = ""; }; + 9A04F6862A6A0C05000F8B74 /* PostCellViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PostCellViewModel.swift; sourceTree = ""; }; + 9A04F6872A6A0C05000F8B74 /* ContentListViewModelProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentListViewModelProtocol.swift; sourceTree = ""; }; + 9A04F6882A6A0C05000F8B74 /* RowViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RowViewModel.swift; sourceTree = ""; }; + 9A04F68A2A6A0C05000F8B74 /* Comment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Comment.swift; sourceTree = ""; }; + 9A04F68B2A6A0C05000F8B74 /* Post.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; + 9A04F68D2A6A0C05000F8B74 /* Repository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repository.swift; sourceTree = ""; }; + 9A04F68E2A6A0C05000F8B74 /* ContentModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentModel.swift; sourceTree = ""; }; + 9A04F6902A6A0C06000F8B74 /* UIColor+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Extension.swift"; sourceTree = ""; }; + 9A04F6912A6A0C06000F8B74 /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A04F64B2A64D063000F8B74 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F65B2A64D066000F8B74 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F6652A64D066000F8B74 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A04F6452A64D063000F8B74 = { + isa = PBXGroup; + children = ( + 9A04F67F2A6A056B000F8B74 /* README.md */, + 9A04F6502A64D063000F8B74 /* SwiftUIDemo */, + 9A04F6612A64D066000F8B74 /* SwiftUIDemoTests */, + 9A04F66B2A64D066000F8B74 /* SwiftUIDemoUITests */, + 9A04F64F2A64D063000F8B74 /* Products */, + ); + sourceTree = ""; + }; + 9A04F64F2A64D063000F8B74 /* Products */ = { + isa = PBXGroup; + children = ( + 9A04F64E2A64D063000F8B74 /* SwiftUIDemo.app */, + 9A04F65E2A64D066000F8B74 /* SwiftUIDemoTests.xctest */, + 9A04F6682A64D066000F8B74 /* SwiftUIDemoUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9A04F6502A64D063000F8B74 /* SwiftUIDemo */ = { + isa = PBXGroup; + children = ( + 9A04F68F2A6A0C06000F8B74 /* Helpers */, + 9A04F6892A6A0C05000F8B74 /* Model */, + 9A04F6812A6A0C05000F8B74 /* ViewModel */, + 9A04F6512A64D063000F8B74 /* SwiftUIDemoApp.swift */, + 9A04F6532A64D063000F8B74 /* ContentView.swift */, + 9A04F6552A64D065000F8B74 /* Assets.xcassets */, + 9A04F6572A64D065000F8B74 /* Preview Content */, + ); + path = SwiftUIDemo; + sourceTree = ""; + }; + 9A04F6572A64D065000F8B74 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 9A04F6582A64D065000F8B74 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 9A04F6612A64D066000F8B74 /* SwiftUIDemoTests */ = { + isa = PBXGroup; + children = ( + 9A04F6622A64D066000F8B74 /* SwiftUIDemoTests.swift */, + ); + path = SwiftUIDemoTests; + sourceTree = ""; + }; + 9A04F66B2A64D066000F8B74 /* SwiftUIDemoUITests */ = { + isa = PBXGroup; + children = ( + 9A04F66C2A64D066000F8B74 /* SwiftUIDemoUITests.swift */, + 9A04F66E2A64D066000F8B74 /* SwiftUIDemoUITestsLaunchTests.swift */, + ); + path = SwiftUIDemoUITests; + sourceTree = ""; + }; + 9A04F6812A6A0C05000F8B74 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 9A04F6822A6A0C05000F8B74 /* ContentCellViewModelProtocol.swift */, + 9A04F6832A6A0C05000F8B74 /* CommentCellViewModel.swift */, + 9A04F6842A6A0C05000F8B74 /* PostListViewModel.swift */, + 9A04F6852A6A0C05000F8B74 /* CommentListViewModel.swift */, + 9A04F6862A6A0C05000F8B74 /* PostCellViewModel.swift */, + 9A04F6872A6A0C05000F8B74 /* ContentListViewModelProtocol.swift */, + 9A04F6882A6A0C05000F8B74 /* RowViewModel.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; + 9A04F6892A6A0C05000F8B74 /* Model */ = { + isa = PBXGroup; + children = ( + 9A04F68A2A6A0C05000F8B74 /* Comment.swift */, + 9A04F68B2A6A0C05000F8B74 /* Post.swift */, + 9A04F68C2A6A0C05000F8B74 /* API */, + 9A04F68E2A6A0C05000F8B74 /* ContentModel.swift */, + ); + path = Model; + sourceTree = ""; + }; + 9A04F68C2A6A0C05000F8B74 /* API */ = { + isa = PBXGroup; + children = ( + 9A04F68D2A6A0C05000F8B74 /* Repository.swift */, + ); + path = API; + sourceTree = ""; + }; + 9A04F68F2A6A0C06000F8B74 /* Helpers */ = { + isa = PBXGroup; + children = ( + 9A04F6902A6A0C06000F8B74 /* UIColor+Extension.swift */, + 9A04F6912A6A0C06000F8B74 /* Observable.swift */, + ); + path = Helpers; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A04F64D2A64D063000F8B74 /* SwiftUIDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A04F6722A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemo" */; + buildPhases = ( + 9A04F64A2A64D063000F8B74 /* Sources */, + 9A04F64B2A64D063000F8B74 /* Frameworks */, + 9A04F64C2A64D063000F8B74 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwiftUIDemo; + productName = SwiftUIDemo; + productReference = 9A04F64E2A64D063000F8B74 /* SwiftUIDemo.app */; + productType = "com.apple.product-type.application"; + }; + 9A04F65D2A64D066000F8B74 /* SwiftUIDemoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A04F6752A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemoTests" */; + buildPhases = ( + 9A04F65A2A64D066000F8B74 /* Sources */, + 9A04F65B2A64D066000F8B74 /* Frameworks */, + 9A04F65C2A64D066000F8B74 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A04F6602A64D066000F8B74 /* PBXTargetDependency */, + ); + name = SwiftUIDemoTests; + productName = SwiftUIDemoTests; + productReference = 9A04F65E2A64D066000F8B74 /* SwiftUIDemoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9A04F6672A64D066000F8B74 /* SwiftUIDemoUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A04F6782A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemoUITests" */; + buildPhases = ( + 9A04F6642A64D066000F8B74 /* Sources */, + 9A04F6652A64D066000F8B74 /* Frameworks */, + 9A04F6662A64D066000F8B74 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A04F66A2A64D066000F8B74 /* PBXTargetDependency */, + ); + name = SwiftUIDemoUITests; + productName = SwiftUIDemoUITests; + productReference = 9A04F6682A64D066000F8B74 /* SwiftUIDemoUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A04F6462A64D063000F8B74 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 9A04F64D2A64D063000F8B74 = { + CreatedOnToolsVersion = 14.2; + }; + 9A04F65D2A64D066000F8B74 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A04F64D2A64D063000F8B74; + }; + 9A04F6672A64D066000F8B74 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A04F64D2A64D063000F8B74; + }; + }; + }; + buildConfigurationList = 9A04F6492A64D063000F8B74 /* Build configuration list for PBXProject "SwiftUIDemo" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A04F6452A64D063000F8B74; + productRefGroup = 9A04F64F2A64D063000F8B74 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A04F64D2A64D063000F8B74 /* SwiftUIDemo */, + 9A04F65D2A64D066000F8B74 /* SwiftUIDemoTests */, + 9A04F6672A64D066000F8B74 /* SwiftUIDemoUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A04F64C2A64D063000F8B74 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A04F6802A6A056E000F8B74 /* README.md in Resources */, + 9A04F6592A64D065000F8B74 /* Preview Assets.xcassets in Resources */, + 9A04F6562A64D065000F8B74 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F65C2A64D066000F8B74 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F6662A64D066000F8B74 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A04F64A2A64D063000F8B74 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A04F6932A6A0C06000F8B74 /* CommentCellViewModel.swift in Sources */, + 9A04F69E2A6A0C06000F8B74 /* Observable.swift in Sources */, + 9A04F69A2A6A0C06000F8B74 /* Post.swift in Sources */, + 9A04F6922A6A0C06000F8B74 /* ContentCellViewModelProtocol.swift in Sources */, + 9A04F6982A6A0C06000F8B74 /* RowViewModel.swift in Sources */, + 9A04F69C2A6A0C06000F8B74 /* ContentModel.swift in Sources */, + 9A04F6972A6A0C06000F8B74 /* ContentListViewModelProtocol.swift in Sources */, + 9A04F6952A6A0C06000F8B74 /* CommentListViewModel.swift in Sources */, + 9A04F69D2A6A0C06000F8B74 /* UIColor+Extension.swift in Sources */, + 9A04F6992A6A0C06000F8B74 /* Comment.swift in Sources */, + 9A04F6942A6A0C06000F8B74 /* PostListViewModel.swift in Sources */, + 9A04F6542A64D063000F8B74 /* ContentView.swift in Sources */, + 9A04F6962A6A0C06000F8B74 /* PostCellViewModel.swift in Sources */, + 9A04F6522A64D063000F8B74 /* SwiftUIDemoApp.swift in Sources */, + 9A04F69B2A6A0C06000F8B74 /* Repository.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F65A2A64D066000F8B74 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A04F6632A64D066000F8B74 /* SwiftUIDemoTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A04F6642A64D066000F8B74 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A04F66D2A64D066000F8B74 /* SwiftUIDemoUITests.swift in Sources */, + 9A04F66F2A64D066000F8B74 /* SwiftUIDemoUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A04F6602A64D066000F8B74 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A04F64D2A64D063000F8B74 /* SwiftUIDemo */; + targetProxy = 9A04F65F2A64D066000F8B74 /* PBXContainerItemProxy */; + }; + 9A04F66A2A64D066000F8B74 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A04F64D2A64D063000F8B74 /* SwiftUIDemo */; + targetProxy = 9A04F6692A64D066000F8B74 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 9A04F6702A64D066000F8B74 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9A04F6712A64D066000F8B74 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A04F6732A64D066000F8B74 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUIDemo/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A04F6742A64D066000F8B74 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUIDemo/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemo; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9A04F6762A64D066000F8B74 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUIDemo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUIDemo"; + }; + name = Debug; + }; + 9A04F6772A64D066000F8B74 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemoTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUIDemo.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUIDemo"; + }; + name = Release; + }; + 9A04F6792A64D066000F8B74 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUIDemo; + }; + name = Debug; + }; + 9A04F67A2A64D066000F8B74 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIDemoUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUIDemo; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A04F6492A64D063000F8B74 /* Build configuration list for PBXProject "SwiftUIDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A04F6702A64D066000F8B74 /* Debug */, + 9A04F6712A64D066000F8B74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A04F6722A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A04F6732A64D066000F8B74 /* Debug */, + 9A04F6742A64D066000F8B74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A04F6752A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A04F6762A64D066000F8B74 /* Debug */, + 9A04F6772A64D066000F8B74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A04F6782A64D066000F8B74 /* Build configuration list for PBXNativeTarget "SwiftUIDemoUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A04F6792A64D066000F8B74 /* Debug */, + 9A04F67A2A64D066000F8B74 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A04F6462A64D063000F8B74 /* Project object */; +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ContentView.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ContentView.swift new file mode 100644 index 0000000..c8f3fd0 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ContentView.swift @@ -0,0 +1,64 @@ +// +// ContentView.swift +// SwiftUIDemo +// +// Created by chenyilong on 2023/7/17. +// + +import SwiftUI + +struct ContentView: View { + @State var posts: [Post] = [ + Post(id: 1, userId: 1, title: "First Post", body: "This is the body of the first post"), + Post(id: 2, userId: 1, title: "Second Post", body: "This is the body of the second post"), + // more posts... + ] + + var body: some View { + NavigationView { + List(posts) { post in + NavigationLink(destination: PostDetailView(post: post)) { + PostRow(post: post) + } + } + .navigationTitle("Posts") + } + } +} + +struct PostRow: View { + var post: Post + + var body: some View { + VStack(alignment: .leading) { + Text(post.title) + .font(.headline) + Text(post.body) + .font(.subheadline) + } + .onTapGesture { + print("Post \(post.id) tapped!") + } + } +} + +struct PostDetailView: View { + var post: Post + + var body: some View { + VStack { + Text(post.title) + .font(.title) + Text(post.body) + .font(.body) + } + .padding() + .navigationTitle("Post Detail") + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/Observable.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/Observable.swift new file mode 100755 index 0000000..1dbb045 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/Observable.swift @@ -0,0 +1,43 @@ +// +// Observable.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class Observable { + var value: T { + didSet { + Task { + await notifyValueChanged() + } + } + } + + private var valueChanged: ((T) async -> Void)? + + init(value: T) { + self.value = value + } + + func addObserver(fireNow: Bool = true, _ onChange: ((T) async -> Void)?) { + valueChanged = onChange + if fireNow { + Task { + await notifyValueChanged() + } + } + } + + private func notifyValueChanged() async { + if let valueChanged = valueChanged { + await valueChanged(self.value) + } + } + + func removeObserver() { + valueChanged = nil + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/UIColor+Extension.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/UIColor+Extension.swift new file mode 100644 index 0000000..378621a --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Helpers/UIColor+Extension.swift @@ -0,0 +1,14 @@ +// +// UIColor+Extension.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import UIKit + +extension UIColor { + static let themeColor = UIColor(named: "ThemeColor") + static let alertColor = UIColor(named: "AlertColor") + static let refreshControlBgColor = UIColor(named: "RefreshControlBgColor") +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/API/Repository.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/API/Repository.swift new file mode 100755 index 0000000..6c4f001 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/API/Repository.swift @@ -0,0 +1,57 @@ +// +// Repository.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +enum ApiError: Error { + case urlError + case networkError(Error) + case decodingError(Error) +} + +protocol Repository { + func fetchPostList() async throws -> [Post] + func fetchComments(id: Int) async throws -> [Comment] +} + +final class ApiRepository: Repository { + // session to be used to make the API call + let session: URLSession + + // Make the session shared by default. + // In unit tests, a mock session can be injected. + init(urlSession: URLSession = .shared) { + self.session = urlSession + } + + private func fetchData(from url: URL) async throws -> T { + let (data, _) = try await session.data(from: url) + do { + let decoder = JSONDecoder() + let contentObject = try decoder.decode(T.self, from: data) + return contentObject + } catch let error { + throw ApiError.decodingError(error) + } + } + + func fetchPostList() async throws -> [Post] { + guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts") else { + throw ApiError.urlError + } + + return try await fetchData(from: url) + } + + func fetchComments(id: Int) async throws -> [Comment] { + guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts/\(id)/comments") else { + throw ApiError.urlError + } + + return try await fetchData(from: url) + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Comment.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Comment.swift new file mode 100644 index 0000000..0a71f77 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Comment.swift @@ -0,0 +1,23 @@ +// +// Post.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +struct Comment: Codable, Identifiable { + let postId: Int + let id: Int + let name: String + let body: String + let email: String +} + +extension Comment: ContentModel { + var title: String { + return name // we'll use 'name' as 'title' for Comment + } + // no additional implementation needed +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/ContentModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/ContentModel.swift new file mode 100644 index 0000000..6b883a7 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/ContentModel.swift @@ -0,0 +1,14 @@ +// +// ContentModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/4. +// + +import Foundation + +protocol ContentModel { + var id: Int { get } + var body: String { get } + var title: String { get } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Post.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Post.swift new file mode 100644 index 0000000..ba82b0e --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Model/Post.swift @@ -0,0 +1,19 @@ +// +// Post.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +struct Post: Codable, Identifiable { + let id: Int + let userId: Int + let title: String + let body: String +} + +extension Post: ContentModel { + // no additional implementation needed, as Post already conforms to ContentModel +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/SwiftUIDemoApp.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/SwiftUIDemoApp.swift new file mode 100644 index 0000000..960a567 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/SwiftUIDemoApp.swift @@ -0,0 +1,17 @@ +// +// SwiftUIDemoApp.swift +// SwiftUIDemo +// +// Created by chenyilong on 2023/7/17. +// + +import SwiftUI + +@main +struct SwiftUIDemoApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentCellViewModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentCellViewModel.swift new file mode 100644 index 0000000..5ebc28d --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentCellViewModel.swift @@ -0,0 +1,20 @@ +// +// CommentCellViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class CommentCellViewModel: ContentCellViewModelProtocol { + typealias Content = Comment + + var cellPressed: (() -> Void)? + + var content: Content + + init(content: Content) { + self.content = content + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentListViewModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentListViewModel.swift new file mode 100644 index 0000000..977ac40 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/CommentListViewModel.swift @@ -0,0 +1,83 @@ +// +// PostListViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class CommentListViewModel: ContentListViewModelProtocol { + + typealias Content = Comment + + typealias ContentCellViewModel = CommentCellViewModel + + func contentCellViewModel(for content: Comment) -> CommentCellViewModel { + let commentCellViewModel = CommentCellViewModel(content: content) + return commentCellViewModel + } + + var postId : Int + var contentCellViewModels: [CommentCellViewModel] = Array() + var contents: Observable<[Content]> = Observable<[Comment]>(value: []) + var allComments: [Comment] = [] // this would hold all your contents + var viewState = Observable(value: .loading) + var searchText = Observable(value: "") + + func setupSearchTextObserver() { + searchText.addObserver { [weak self] text in + self?.filterContentForSearchText(text) + } + } + + func filterContentForSearchText(_ searchText: String) { + if searchText.isEmpty { + self.resetFilters() + return + } + let filteredcontents = allComments.filter { (comment: Comment) -> Bool in + return comment.body.lowercased().contains(searchText.lowercased()) + } + contents.value = filteredcontents + } + + func resetFilters() { + setupAllcontents() + } + + func setupAllcontents() { + contents.value = allComments + } + + private var repository: Repository + + init(postId: Int, repository: ApiRepository = ApiRepository()) { + self.postId = postId + self.repository = repository + setupSearchTextObserver() + } + + func update() async throws { + do { + let contents = try await repository.fetchComments(id: postId) + if contents.isEmpty { + self.viewState.value = .loading + } else { + self.viewState.value = .loaded + self.allComments = contents + setupAllcontents() + } + } catch { + // handle error + self.viewState.value = .error(string: error.localizedDescription) + throw error + } + } + + + deinit { + contents.removeObserver() + viewState.removeObserver() + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentCellViewModelProtocol.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentCellViewModelProtocol.swift new file mode 100644 index 0000000..65b613c --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentCellViewModelProtocol.swift @@ -0,0 +1,14 @@ +// +// ContentCellViewModelProtocol.swift +// iOSTest +// +// Created by chenyilong on 2023/7/4. +// + +import Foundation + +protocol ContentCellViewModelProtocol: ViewModelClickable { + associatedtype Content + var content: Content { get set } + init(content: Content) +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentListViewModelProtocol.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentListViewModelProtocol.swift new file mode 100644 index 0000000..cfbd4f8 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/ContentListViewModelProtocol.swift @@ -0,0 +1,25 @@ +// +// ContentListViewModelProtocol.swift +// iOSTest +// +// Created by chenyilong on 2023/7/3. +// + +enum ViewState { + case loading + case loaded + case error(string: String) +} + +protocol ContentListViewModelProtocol { + associatedtype Content + associatedtype ContentCellViewModel: ContentCellViewModelProtocol where ContentCellViewModel.Content == Content + var contents: Observable<[Content]> { get set } + var contentCellViewModels: [ContentCellViewModel] { get set } + var viewState: Observable { get } + var searchText: Observable { get } + + func contentCellViewModel(for content: Content) -> ContentCellViewModel + func update() async throws +} + diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostCellViewModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostCellViewModel.swift new file mode 100644 index 0000000..54e274e --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostCellViewModel.swift @@ -0,0 +1,18 @@ +// +// PostCellViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class PostCellViewModel: ContentCellViewModelProtocol { + var cellPressed: (() -> Void)? + var content: Post + + init(content: Post) { + self.content = content + } +} + diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostListViewModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostListViewModel.swift new file mode 100644 index 0000000..d6d37fe --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/PostListViewModel.swift @@ -0,0 +1,78 @@ +// +// PostListViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +final class PostListViewModel: ContentListViewModelProtocol { + + func contentCellViewModel(for post: Post) -> PostCellViewModel { + let postCellViewModel = PostCellViewModel(content: post) + return postCellViewModel + } +// + var contentCellViewModels: [PostCellViewModel] = Array() + var contents = Observable<[Post]>(value: []) + var allPosts: [Post] = [] // this would hold all your contents + var viewState = Observable(value: .loading) + var searchText = Observable(value: "") + + private var repository: Repository + + init(repository: ApiRepository = ApiRepository()) { + self.repository = repository + setupSearchTextObserver() + } + + func setupSearchTextObserver() { + searchText.addObserver { [weak self] text in + self?.filterContentForSearchText(text) + } + } + + func filterContentForSearchText(_ searchText: String) { + guard !searchText.isEmpty else { + self.resetFilters() + return + } + + let filteredPosts = allPosts.filter { (post: Post) -> Bool in + return post.title.lowercased().contains(searchText.lowercased()) + } + contents.value = filteredPosts + } + + func resetFilters() { + setupAllPosts() + } + + func setupAllPosts() { + contents.value = allPosts + } + + func update() async throws { + do { + viewState.value = .loading + let contents = try await repository.fetchPostList() + if contents.isEmpty { + self.viewState.value = .loading + } else { + self.viewState.value = .loaded + self.allPosts = contents + setupAllPosts() + } + } catch { + // handle error + self.viewState.value = .error(string: error.localizedDescription) + throw error + } + } + + deinit { + contents.removeObserver() + viewState.removeObserver() + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/RowViewModel.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/RowViewModel.swift new file mode 100755 index 0000000..a953a48 --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemo/ViewModel/RowViewModel.swift @@ -0,0 +1,13 @@ +// +// RowViewModel.swift +// iOSTest +// +// Created by chenyilong on 2023/7/2. +// + +import Foundation + +/// Conform this protocol to handles user press action +protocol ViewModelClickable { + var cellPressed: (()->Void)? { get set } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemoTests/SwiftUIDemoTests.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemoTests/SwiftUIDemoTests.swift new file mode 100644 index 0000000..7d2b39f --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemoTests/SwiftUIDemoTests.swift @@ -0,0 +1,36 @@ +// +// SwiftUIDemoTests.swift +// SwiftUIDemoTests +// +// Created by chenyilong on 2023/7/17. +// + +import XCTest +@testable import SwiftUIDemo + +final class SwiftUIDemoTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITests.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITests.swift new file mode 100644 index 0000000..12e5b1a --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITests.swift @@ -0,0 +1,41 @@ +// +// SwiftUIDemoUITests.swift +// SwiftUIDemoUITests +// +// Created by chenyilong on 2023/7/17. +// + +import XCTest + +final class SwiftUIDemoUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITestsLaunchTests.swift b/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITestsLaunchTests.swift new file mode 100644 index 0000000..1378e7b --- /dev/null +++ b/SwiftUI/SwiftUIDemo/SwiftUIDemoUITests/SwiftUIDemoUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// SwiftUIDemoUITestsLaunchTests.swift +// SwiftUIDemoUITests +// +// Created by chenyilong on 2023/7/17. +// + +import XCTest + +final class SwiftUIDemoUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/SwiftUI/SwiftUIDemo/banner.png b/SwiftUI/SwiftUIDemo/banner.png new file mode 100644 index 0000000..ac94836 Binary files /dev/null and b/SwiftUI/SwiftUIDemo/banner.png differ diff --git a/SwiftUI/SwiftUIDemo/preview.gif b/SwiftUI/SwiftUIDemo/preview.gif new file mode 100644 index 0000000..a3e58ee Binary files /dev/null and b/SwiftUI/SwiftUIDemo/preview.gif differ diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp.xcodeproj/project.pbxproj new file mode 100755 index 0000000..c921c5e --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp.xcodeproj/project.pbxproj @@ -0,0 +1,404 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 8DF2C67A28A1955500B57214 /* MovieAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C67928A1955500B57214 /* MovieAppApp.swift */; }; + 8DF2C67C28A1955500B57214 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C67B28A1955500B57214 /* ContentView.swift */; }; + 8DF2C67E28A1955800B57214 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8DF2C67D28A1955800B57214 /* Assets.xcassets */; }; + 8DF2C68128A1955800B57214 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8DF2C68028A1955800B57214 /* Preview Assets.xcassets */; }; + 8DF2C68928A1961500B57214 /* Webservice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C68828A1961500B57214 /* Webservice.swift */; }; + 8DF2C68C28A1963C00B57214 /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C68B28A1963C00B57214 /* Movie.swift */; }; + 8DF2C68E28A196B700B57214 /* MovieResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C68D28A196B700B57214 /* MovieResponse.swift */; }; + 8DF2C69128A1973A00B57214 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C69028A1973A00B57214 /* Store.swift */; }; + 8DF2C69328A1994800B57214 /* MovieDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C69228A1994800B57214 /* MovieDetail.swift */; }; + 8DF2C69528A199AB00B57214 /* MovieDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C69428A199AB00B57214 /* MovieDetailView.swift */; }; + 8DF2C69828A19AF000B57214 /* NewsArticle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C69728A19AF000B57214 /* NewsArticle.swift */; }; + 8DF2C69A28A19B1A00B57214 /* NewsArticleResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DF2C69928A19B1A00B57214 /* NewsArticleResponse.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 8DF2C67628A1955500B57214 /* MovieApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MovieApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8DF2C67928A1955500B57214 /* MovieAppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieAppApp.swift; sourceTree = ""; }; + 8DF2C67B28A1955500B57214 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 8DF2C67D28A1955800B57214 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8DF2C68028A1955800B57214 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 8DF2C68828A1961500B57214 /* Webservice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Webservice.swift; sourceTree = ""; }; + 8DF2C68B28A1963C00B57214 /* Movie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; + 8DF2C68D28A196B700B57214 /* MovieResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieResponse.swift; sourceTree = ""; }; + 8DF2C69028A1973A00B57214 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 8DF2C69228A1994800B57214 /* MovieDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetail.swift; sourceTree = ""; }; + 8DF2C69428A199AB00B57214 /* MovieDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailView.swift; sourceTree = ""; }; + 8DF2C69628A19A8000B57214 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8DF2C69728A19AF000B57214 /* NewsArticle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsArticle.swift; sourceTree = ""; }; + 8DF2C69928A19B1A00B57214 /* NewsArticleResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewsArticleResponse.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DF2C67328A1955500B57214 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8DF2C66D28A1955500B57214 = { + isa = PBXGroup; + children = ( + 8DF2C67828A1955500B57214 /* MovieApp */, + 8DF2C67728A1955500B57214 /* Products */, + ); + sourceTree = ""; + }; + 8DF2C67728A1955500B57214 /* Products */ = { + isa = PBXGroup; + children = ( + 8DF2C67628A1955500B57214 /* MovieApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 8DF2C67828A1955500B57214 /* MovieApp */ = { + isa = PBXGroup; + children = ( + 8DF2C69628A19A8000B57214 /* Info.plist */, + 8DF2C68F28A1971A00B57214 /* Stores */, + 8DF2C68A28A1963100B57214 /* Models */, + 8DF2C68728A1960D00B57214 /* Services */, + 8DF2C67928A1955500B57214 /* MovieAppApp.swift */, + 8DF2C67B28A1955500B57214 /* ContentView.swift */, + 8DF2C67D28A1955800B57214 /* Assets.xcassets */, + 8DF2C67F28A1955800B57214 /* Preview Content */, + 8DF2C69428A199AB00B57214 /* MovieDetailView.swift */, + ); + path = MovieApp; + sourceTree = ""; + }; + 8DF2C67F28A1955800B57214 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 8DF2C68028A1955800B57214 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 8DF2C68728A1960D00B57214 /* Services */ = { + isa = PBXGroup; + children = ( + 8DF2C68828A1961500B57214 /* Webservice.swift */, + ); + path = Services; + sourceTree = ""; + }; + 8DF2C68A28A1963100B57214 /* Models */ = { + isa = PBXGroup; + children = ( + 8DF2C68B28A1963C00B57214 /* Movie.swift */, + 8DF2C68D28A196B700B57214 /* MovieResponse.swift */, + 8DF2C69228A1994800B57214 /* MovieDetail.swift */, + 8DF2C69728A19AF000B57214 /* NewsArticle.swift */, + 8DF2C69928A19B1A00B57214 /* NewsArticleResponse.swift */, + ); + path = Models; + sourceTree = ""; + }; + 8DF2C68F28A1971A00B57214 /* Stores */ = { + isa = PBXGroup; + children = ( + 8DF2C69028A1973A00B57214 /* Store.swift */, + ); + path = Stores; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DF2C67528A1955500B57214 /* MovieApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8DF2C68428A1955800B57214 /* Build configuration list for PBXNativeTarget "MovieApp" */; + buildPhases = ( + 8DF2C67228A1955500B57214 /* Sources */, + 8DF2C67328A1955500B57214 /* Frameworks */, + 8DF2C67428A1955500B57214 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MovieApp; + productName = MovieApp; + productReference = 8DF2C67628A1955500B57214 /* MovieApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8DF2C66E28A1955500B57214 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 1400; + TargetAttributes = { + 8DF2C67528A1955500B57214 = { + CreatedOnToolsVersion = 14.0; + }; + }; + }; + buildConfigurationList = 8DF2C67128A1955500B57214 /* Build configuration list for PBXProject "MovieApp" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8DF2C66D28A1955500B57214; + productRefGroup = 8DF2C67728A1955500B57214 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DF2C67528A1955500B57214 /* MovieApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8DF2C67428A1955500B57214 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DF2C68128A1955800B57214 /* Preview Assets.xcassets in Resources */, + 8DF2C67E28A1955800B57214 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DF2C67228A1955500B57214 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DF2C69A28A19B1A00B57214 /* NewsArticleResponse.swift in Sources */, + 8DF2C67C28A1955500B57214 /* ContentView.swift in Sources */, + 8DF2C69328A1994800B57214 /* MovieDetail.swift in Sources */, + 8DF2C68E28A196B700B57214 /* MovieResponse.swift in Sources */, + 8DF2C67A28A1955500B57214 /* MovieAppApp.swift in Sources */, + 8DF2C69828A19AF000B57214 /* NewsArticle.swift in Sources */, + 8DF2C69128A1973A00B57214 /* Store.swift in Sources */, + 8DF2C68C28A1963C00B57214 /* Movie.swift in Sources */, + 8DF2C69528A199AB00B57214 /* MovieDetailView.swift in Sources */, + 8DF2C68928A1961500B57214 /* Webservice.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8DF2C68228A1955800B57214 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8DF2C68328A1955800B57214 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8DF2C68528A1955800B57214 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"MovieApp/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = MovieApp/Info.plist; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.MovieApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8DF2C68628A1955800B57214 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"MovieApp/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = MovieApp/Info.plist; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.MovieApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8DF2C67128A1955500B57214 /* Build configuration list for PBXProject "MovieApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8DF2C68228A1955800B57214 /* Debug */, + 8DF2C68328A1955800B57214 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8DF2C68428A1955800B57214 /* Build configuration list for PBXNativeTarget "MovieApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8DF2C68528A1955800B57214 /* Debug */, + 8DF2C68628A1955800B57214 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8DF2C66E28A1955500B57214 /* Project object */; +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..13613e3 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/ContentView.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/ContentView.swift new file mode 100755 index 0000000..ecb0367 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/ContentView.swift @@ -0,0 +1,53 @@ +// +// ContentView.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import SwiftUI + +struct ContentView: View { + + @StateObject private var store = Store() + + private func populateMovies() async { + do { + try await store.fetchMovies() + } catch { + print(error.localizedDescription) + } + } + + var body: some View { + + NavigationStack { + List(store.movies) { movie in + NavigationLink(value: movie) { + HStack { + AsyncImage(url: movie.poster) { image in + image.resizable() + .frame(width: 75, height: 75) + } placeholder: { + ProgressView() + } + Text(movie.title) + } + } + + }.navigationDestination(for: Movie.self, destination: { movie in + MovieDetailView(movie: movie) + }) + } + + .task { + await populateMovies() + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Info.plist b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Info.plist new file mode 100755 index 0000000..6a6654d --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Info.plist @@ -0,0 +1,11 @@ + + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/Movie.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/Movie.swift new file mode 100755 index 0000000..2c47a84 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/Movie.swift @@ -0,0 +1,31 @@ +// +// Movie.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +struct Movie: Decodable, Identifiable, Hashable { + + let imdbId: String + let title: String + let poster: URL + + var id: String { + imdbId + } + + private enum CodingKeys: String, CodingKey { + case imdbId = "imdbID" + case title = "Title" + case poster = "Poster" + } +} + +extension Movie { + static var preview: Movie { + Movie(imdbId: "tt3896198", title: "Guardians of the Galaxy Vol. 2", poster: URL(string: "https://m.media-amazon.com/images/M/MV5BNjM0NTc0NzItM2FlYS00YzEwLWE0YmUtNTA2ZWIzODc2OTgxXkEyXkFqcGdeQXVyNTgwNzIyNzg@._V1_SX300.jpg")!) + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieDetail.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieDetail.swift new file mode 100755 index 0000000..5062579 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieDetail.swift @@ -0,0 +1,28 @@ +// +// MovieDetail.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +struct MovieDetail: Decodable, Identifiable { + + let imdbId: String + let title: String + let poster: URL + let director: String + + var id: String { + imdbId + } + + private enum CodingKeys: String, CodingKey { + case imdbId = "imdbID" + case title = "Title" + case poster = "Poster" + case director = "Director" + } + +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieResponse.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieResponse.swift new file mode 100755 index 0000000..b118fa0 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/MovieResponse.swift @@ -0,0 +1,16 @@ +// +// MovieResponse.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +struct MovieResponse: Decodable { + let search: [Movie] + + private enum CodingKeys: String, CodingKey { + case search = "Search" + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticle.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticle.swift new file mode 100755 index 0000000..e1f86df --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticle.swift @@ -0,0 +1,19 @@ +// +// NewsArticle.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +struct NewsArticle: Decodable, Identifiable { + let title: String + let description: String + let id = UUID() + + private enum CodingKeys: String, CodingKey { + case title = "title" + case description = "description" + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticleResponse.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticleResponse.swift new file mode 100755 index 0000000..7361efd --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Models/NewsArticleResponse.swift @@ -0,0 +1,12 @@ +// +// NewsArticleResponse.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +struct NewsArticleResponse: Decodable { + let articles: [NewsArticle] +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieAppApp.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieAppApp.swift new file mode 100755 index 0000000..bd073a6 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieAppApp.swift @@ -0,0 +1,17 @@ +// +// MovieAppApp.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import SwiftUI + +@main +struct MovieAppApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieDetailView.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieDetailView.swift new file mode 100755 index 0000000..9b4690c --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/MovieDetailView.swift @@ -0,0 +1,47 @@ +// +// MovieDetailView.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import SwiftUI + +struct MovieDetailView: View { + + @StateObject private var store = Store() + let movie: Movie + + var body: some View { + List { + if let movieDetail = store.movieDetail { + AsyncImage(url: movieDetail.poster) + Text(movieDetail.title) + .fontWeight(.bold) + .frame(maxWidth: .infinity, alignment: .center) + + if !store.newsArticles.isEmpty { + ForEach(store.newsArticles) { article in + Text(article.title) + } + } else { + Text("No articles found.") + } + + } + }.task { + do { + try await store.fetchMovieById(movie.id) + try await store.fetchArticlesByKeyword(movie.title) + } catch { + print(error) + } + } + } +} + +struct MovieDetailView_Previews: PreviewProvider { + static var previews: some View { + MovieDetailView(movie: Movie.preview) + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Services/Webservice.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Services/Webservice.swift new file mode 100755 index 0000000..045ecfb --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Services/Webservice.swift @@ -0,0 +1,56 @@ +// +// Webservice.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +enum NetworkError: Error { + case badUrl + case invalidRequest +} + +class Webservice { + + func loadMovies() async throws -> [Movie] { + + guard let url = URL(string: "https://www.omdbapi.com/?s=Batman&page=2&apikey=564727fa") else { + throw NetworkError.badUrl + } + + let (data, _) = try await URLSession.shared.data(from: url) + let movieResponse = try? JSONDecoder().decode(MovieResponse.self, from: data) + return movieResponse?.search ?? [] + } + + func loadMovieBy(_ movieId: String) async throws -> MovieDetail { + + guard let url = URL(string: "http://www.omdbapi.com/?i=\(movieId)&apikey=564727fa") else { + throw NetworkError.badUrl + } + + let (data, _) = try await URLSession.shared.data(from: url) + guard let movieDetail = try? JSONDecoder().decode(MovieDetail.self, from: data) else { + throw NetworkError.invalidRequest + } + + return movieDetail + } + + func loadNewsArticleBy(_ keyword: String) async throws -> [NewsArticle] { + + guard let url = URL(string: "https://newsapi.org/v2/everything?q=\(keyword)&apiKey=0cf790498275413a9247f8b94b3843fd&pageSize=10") else { + throw NetworkError.badUrl + } + + let (data, _) = try await URLSession.shared.data(from: url) + guard let newsArticleResponse = try? JSONDecoder().decode(NewsArticleResponse.self, from: data) else { + throw NetworkError.invalidRequest + } + + return newsArticleResponse.articles + } + +} diff --git a/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Stores/Store.swift b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Stores/Store.swift new file mode 100755 index 0000000..8e7979a --- /dev/null +++ b/SwiftUI/SwiftUIMVPattern_MovieApp/MovieApp/Stores/Store.swift @@ -0,0 +1,28 @@ +// +// Store.swift +// MovieApp +// +// Created by Yilong Chen on 8/8/24. +// + +import Foundation + +@MainActor +class Store: ObservableObject { + + @Published var movies: [Movie] = [] + @Published var newsArticles: [NewsArticle] = [] + @Published var movieDetail: MovieDetail? + + func fetchMovies() async throws { + movies = try await Webservice().loadMovies() + } + + func fetchMovieById(_ movieId: String) async throws { + movieDetail = try await Webservice().loadMovieBy(movieId) + } + + func fetchArticlesByKeyword(_ keyword: String) async throws { + newsArticles = try await Webservice().loadNewsArticleBy(keyword) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/project.pbxproj new file mode 100755 index 0000000..d537e25 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/project.pbxproj @@ -0,0 +1,482 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 8D0926C125E59B3B00502FF8 /* MovieAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0926C025E59B3B00502FF8 /* MovieAppApp.swift */; }; + 8D0926C525E59B3C00502FF8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D0926C425E59B3C00502FF8 /* Assets.xcassets */; }; + 8D0926C825E59B3C00502FF8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D0926C725E59B3C00502FF8 /* Preview Assets.xcassets */; }; + 8D0926D525E5AE9C00502FF8 /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0926D425E5AE9C00502FF8 /* CoreDataManager.swift */; }; + 8D1D27C725FE6CEA0064FA48 /* ActorListScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1D27C625FE6CEA0064FA48 /* ActorListScreen.swift */; }; + 8D1D27CA25FE6D3D0064FA48 /* AddActorScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1D27C925FE6D3D0064FA48 /* AddActorScreen.swift */; }; + 8D1D27CD25FE75B20064FA48 /* AddActorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1D27CC25FE75B20064FA48 /* AddActorViewModel.swift */; }; + 8D1D27D025FE76160064FA48 /* Actor+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1D27CF25FE76160064FA48 /* Actor+Extensions.swift */; }; + 8D45EEC225FFDD38002C48C0 /* ActorListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D45EEC125FFDD38002C48C0 /* ActorListViewModel.swift */; }; + 8D45EEC525FFF869002C48C0 /* ActorDetailsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D45EEC425FFF869002C48C0 /* ActorDetailsScreen.swift */; }; + 8D5C25C325E6EBD0002BAF40 /* AddMovieScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C25C225E6EBD0002BAF40 /* AddMovieScreen.swift */; }; + 8D5C25C825E6F3D8002BAF40 /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C25C725E6F3D8002BAF40 /* View+Extensions.swift */; }; + 8D5C25D025E6FA7C002BAF40 /* RatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C25CF25E6FA7C002BAF40 /* RatingView.swift */; }; + 8D5C25DF25E72747002BAF40 /* MovieListScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C25DE25E72747002BAF40 /* MovieListScreen.swift */; }; + 8D5C25E225E72CD4002BAF40 /* Date+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D5C25E125E72CD4002BAF40 /* Date+Extensions.swift */; }; + 8D919E1625EE9E5C0029DEFB /* AddReviewScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D919E1525EE9E5C0029DEFB /* AddReviewScreen.swift */; }; + 8D919E1925EEA0A80029DEFB /* AddReviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D919E1825EEA0A80029DEFB /* AddReviewViewModel.swift */; }; + 8D919E3825EECDB40029DEFB /* ReviewListScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D919E3725EECDB40029DEFB /* ReviewListScreen.swift */; }; + 8D919E3B25EED5030029DEFB /* ReviewListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D919E3A25EED5030029DEFB /* ReviewListViewModel.swift */; }; + 8DCCEBF925E8B28900F0B0F3 /* MovieAppModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 8DCCEBF725E8B28900F0B0F3 /* MovieAppModel.xcdatamodeld */; }; + 8DCCEBFC25E9765000F0B0F3 /* AddMovieViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DCCEBFB25E9765000F0B0F3 /* AddMovieViewModel.swift */; }; + 8DCCEBFF25E9C58B00F0B0F3 /* MovieListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DCCEBFE25E9C58B00F0B0F3 /* MovieListViewModel.swift */; }; + 8DD96A0425F09885002DE8A2 /* Review+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DD96A0325F09885002DE8A2 /* Review+Extensions.swift */; }; + 8DE8803225FA6FB50022B91A /* MovieDetailScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE8803125FA6FB50022B91A /* MovieDetailScreen.swift */; }; + 8DE8803E25FA84720022B91A /* Movie+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE8803D25FA84720022B91A /* Movie+Extensions.swift */; }; + 8DE8804125FA89030022B91A /* BaseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE8804025FA89030022B91A /* BaseModel.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 8D0926BD25E59B3B00502FF8 /* MovieApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MovieApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D0926C025E59B3B00502FF8 /* MovieAppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieAppApp.swift; sourceTree = ""; }; + 8D0926C425E59B3C00502FF8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8D0926C725E59B3C00502FF8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 8D0926C925E59B3C00502FF8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8D0926D425E5AE9C00502FF8 /* CoreDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = ""; }; + 8D1D27C625FE6CEA0064FA48 /* ActorListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActorListScreen.swift; sourceTree = ""; }; + 8D1D27C925FE6D3D0064FA48 /* AddActorScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddActorScreen.swift; sourceTree = ""; }; + 8D1D27CC25FE75B20064FA48 /* AddActorViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddActorViewModel.swift; sourceTree = ""; }; + 8D1D27CF25FE76160064FA48 /* Actor+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Actor+Extensions.swift"; sourceTree = ""; }; + 8D45EEC125FFDD38002C48C0 /* ActorListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActorListViewModel.swift; sourceTree = ""; }; + 8D45EEC425FFF869002C48C0 /* ActorDetailsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActorDetailsScreen.swift; sourceTree = ""; }; + 8D5C25C225E6EBD0002BAF40 /* AddMovieScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMovieScreen.swift; sourceTree = ""; }; + 8D5C25C725E6F3D8002BAF40 /* View+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Extensions.swift"; sourceTree = ""; }; + 8D5C25CF25E6FA7C002BAF40 /* RatingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingView.swift; sourceTree = ""; }; + 8D5C25DE25E72747002BAF40 /* MovieListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieListScreen.swift; sourceTree = ""; }; + 8D5C25E125E72CD4002BAF40 /* Date+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Extensions.swift"; sourceTree = ""; }; + 8D919E1525EE9E5C0029DEFB /* AddReviewScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddReviewScreen.swift; sourceTree = ""; }; + 8D919E1825EEA0A80029DEFB /* AddReviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddReviewViewModel.swift; sourceTree = ""; }; + 8D919E3725EECDB40029DEFB /* ReviewListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewListScreen.swift; sourceTree = ""; }; + 8D919E3A25EED5030029DEFB /* ReviewListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReviewListViewModel.swift; sourceTree = ""; }; + 8DCCEBF825E8B28900F0B0F3 /* MovieAppModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MovieAppModel.xcdatamodel; sourceTree = ""; }; + 8DCCEBFB25E9765000F0B0F3 /* AddMovieViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddMovieViewModel.swift; sourceTree = ""; }; + 8DCCEBFE25E9C58B00F0B0F3 /* MovieListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieListViewModel.swift; sourceTree = ""; }; + 8DD96A0325F09885002DE8A2 /* Review+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Review+Extensions.swift"; sourceTree = ""; }; + 8DE8803125FA6FB50022B91A /* MovieDetailScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailScreen.swift; sourceTree = ""; }; + 8DE8803D25FA84720022B91A /* Movie+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Movie+Extensions.swift"; sourceTree = ""; }; + 8DE8804025FA89030022B91A /* BaseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseModel.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D0926BA25E59B3B00502FF8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8D0926B425E59B3B00502FF8 = { + isa = PBXGroup; + children = ( + 8D0926BF25E59B3B00502FF8 /* MovieApp */, + 8D0926BE25E59B3B00502FF8 /* Products */, + ); + sourceTree = ""; + }; + 8D0926BE25E59B3B00502FF8 /* Products */ = { + isa = PBXGroup; + children = ( + 8D0926BD25E59B3B00502FF8 /* MovieApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 8D0926BF25E59B3B00502FF8 /* MovieApp */ = { + isa = PBXGroup; + children = ( + 8DD96A0225F09872002DE8A2 /* Models */, + 8D5C25CE25E6FA70002BAF40 /* Views */, + 8D5C25C625E6F3CB002BAF40 /* Extensions */, + 8D2C953E25E69E3500459F4F /* Screens */, + 8D2C952C25E6907D00459F4F /* View Models */, + 8D0926D725E5D50400502FF8 /* Managers */, + 8D0926C025E59B3B00502FF8 /* MovieAppApp.swift */, + 8D0926C425E59B3C00502FF8 /* Assets.xcassets */, + 8D0926C925E59B3C00502FF8 /* Info.plist */, + 8D0926C625E59B3C00502FF8 /* Preview Content */, + 8DCCEBF725E8B28900F0B0F3 /* MovieAppModel.xcdatamodeld */, + ); + path = MovieApp; + sourceTree = ""; + }; + 8D0926C625E59B3C00502FF8 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 8D0926C725E59B3C00502FF8 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 8D0926D725E5D50400502FF8 /* Managers */ = { + isa = PBXGroup; + children = ( + 8D0926D425E5AE9C00502FF8 /* CoreDataManager.swift */, + ); + path = Managers; + sourceTree = ""; + }; + 8D2C952C25E6907D00459F4F /* View Models */ = { + isa = PBXGroup; + children = ( + 8DCCEBFB25E9765000F0B0F3 /* AddMovieViewModel.swift */, + 8DCCEBFE25E9C58B00F0B0F3 /* MovieListViewModel.swift */, + 8D919E1825EEA0A80029DEFB /* AddReviewViewModel.swift */, + 8D919E3A25EED5030029DEFB /* ReviewListViewModel.swift */, + 8D1D27CC25FE75B20064FA48 /* AddActorViewModel.swift */, + 8D45EEC125FFDD38002C48C0 /* ActorListViewModel.swift */, + ); + path = "View Models"; + sourceTree = ""; + }; + 8D2C953E25E69E3500459F4F /* Screens */ = { + isa = PBXGroup; + children = ( + 8D5C25C225E6EBD0002BAF40 /* AddMovieScreen.swift */, + 8D5C25DE25E72747002BAF40 /* MovieListScreen.swift */, + 8D919E1525EE9E5C0029DEFB /* AddReviewScreen.swift */, + 8D919E3725EECDB40029DEFB /* ReviewListScreen.swift */, + 8DE8803125FA6FB50022B91A /* MovieDetailScreen.swift */, + 8D1D27C625FE6CEA0064FA48 /* ActorListScreen.swift */, + 8D1D27C925FE6D3D0064FA48 /* AddActorScreen.swift */, + 8D45EEC425FFF869002C48C0 /* ActorDetailsScreen.swift */, + ); + path = Screens; + sourceTree = ""; + }; + 8D5C25C625E6F3CB002BAF40 /* Extensions */ = { + isa = PBXGroup; + children = ( + 8D5C25C725E6F3D8002BAF40 /* View+Extensions.swift */, + 8D5C25E125E72CD4002BAF40 /* Date+Extensions.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 8D5C25CE25E6FA70002BAF40 /* Views */ = { + isa = PBXGroup; + children = ( + 8D5C25CF25E6FA7C002BAF40 /* RatingView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 8DD96A0225F09872002DE8A2 /* Models */ = { + isa = PBXGroup; + children = ( + 8DD96A0325F09885002DE8A2 /* Review+Extensions.swift */, + 8DE8803D25FA84720022B91A /* Movie+Extensions.swift */, + 8DE8804025FA89030022B91A /* BaseModel.swift */, + 8D1D27CF25FE76160064FA48 /* Actor+Extensions.swift */, + ); + path = Models; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D0926BC25E59B3B00502FF8 /* MovieApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8D0926CC25E59B3C00502FF8 /* Build configuration list for PBXNativeTarget "MovieApp" */; + buildPhases = ( + 8D0926B925E59B3B00502FF8 /* Sources */, + 8D0926BA25E59B3B00502FF8 /* Frameworks */, + 8D0926BB25E59B3B00502FF8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MovieApp; + productName = MovieApp; + productReference = 8D0926BD25E59B3B00502FF8 /* MovieApp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8D0926B525E59B3B00502FF8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1230; + TargetAttributes = { + 8D0926BC25E59B3B00502FF8 = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 8D0926B825E59B3B00502FF8 /* Build configuration list for PBXProject "MovieApp" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8D0926B425E59B3B00502FF8; + productRefGroup = 8D0926BE25E59B3B00502FF8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D0926BC25E59B3B00502FF8 /* MovieApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D0926BB25E59B3B00502FF8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0926C825E59B3C00502FF8 /* Preview Assets.xcassets in Resources */, + 8D0926C525E59B3C00502FF8 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D0926B925E59B3B00502FF8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D1D27CD25FE75B20064FA48 /* AddActorViewModel.swift in Sources */, + 8D5C25C325E6EBD0002BAF40 /* AddMovieScreen.swift in Sources */, + 8D1D27CA25FE6D3D0064FA48 /* AddActorScreen.swift in Sources */, + 8DCCEBFC25E9765000F0B0F3 /* AddMovieViewModel.swift in Sources */, + 8D919E3B25EED5030029DEFB /* ReviewListViewModel.swift in Sources */, + 8D5C25E225E72CD4002BAF40 /* Date+Extensions.swift in Sources */, + 8D0926D525E5AE9C00502FF8 /* CoreDataManager.swift in Sources */, + 8DE8803225FA6FB50022B91A /* MovieDetailScreen.swift in Sources */, + 8D5C25C825E6F3D8002BAF40 /* View+Extensions.swift in Sources */, + 8DE8803E25FA84720022B91A /* Movie+Extensions.swift in Sources */, + 8D45EEC525FFF869002C48C0 /* ActorDetailsScreen.swift in Sources */, + 8DCCEBF925E8B28900F0B0F3 /* MovieAppModel.xcdatamodeld in Sources */, + 8DD96A0425F09885002DE8A2 /* Review+Extensions.swift in Sources */, + 8D5C25DF25E72747002BAF40 /* MovieListScreen.swift in Sources */, + 8D919E1625EE9E5C0029DEFB /* AddReviewScreen.swift in Sources */, + 8D45EEC225FFDD38002C48C0 /* ActorListViewModel.swift in Sources */, + 8D0926C125E59B3B00502FF8 /* MovieAppApp.swift in Sources */, + 8D5C25D025E6FA7C002BAF40 /* RatingView.swift in Sources */, + 8D919E1925EEA0A80029DEFB /* AddReviewViewModel.swift in Sources */, + 8D1D27D025FE76160064FA48 /* Actor+Extensions.swift in Sources */, + 8DE8804125FA89030022B91A /* BaseModel.swift in Sources */, + 8D919E3825EECDB40029DEFB /* ReviewListScreen.swift in Sources */, + 8DCCEBFF25E9C58B00F0B0F3 /* MovieListViewModel.swift in Sources */, + 8D1D27C725FE6CEA0064FA48 /* ActorListScreen.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8D0926CA25E59B3C00502FF8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8D0926CB25E59B3C00502FF8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8D0926CD25E59B3C00502FF8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"MovieApp/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = MovieApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.MovieApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8D0926CE25E59B3C00502FF8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"MovieApp/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = MovieApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.MovieApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8D0926B825E59B3B00502FF8 /* Build configuration list for PBXProject "MovieApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8D0926CA25E59B3C00502FF8 /* Debug */, + 8D0926CB25E59B3C00502FF8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8D0926CC25E59B3C00502FF8 /* Build configuration list for PBXNativeTarget "MovieApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8D0926CD25E59B3C00502FF8 /* Debug */, + 8D0926CE25E59B3C00502FF8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 8DCCEBF725E8B28900F0B0F3 /* MovieAppModel.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 8DCCEBF825E8B28900F0B0F3 /* MovieAppModel.xcdatamodel */, + ); + currentVersion = 8DCCEBF825E8B28900F0B0F3 /* MovieAppModel.xcdatamodel */; + path = MovieAppModel.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 8D0926B525E59B3B00502FF8 /* Project object */; +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/xcshareddata/xcschemes/MovieApp.xcscheme b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/xcshareddata/xcschemes/MovieApp.xcscheme new file mode 100755 index 0000000..de03cd0 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp.xcodeproj/xcshareddata/xcschemes/MovieApp.xcscheme @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..9221b9b --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/Date+Extensions.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/Date+Extensions.swift new file mode 100755 index 0000000..8750ad7 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/Date+Extensions.swift @@ -0,0 +1,18 @@ +// +// Date+Extensions.swift +// MovieApp +// +// Created by Yilong Chen on 2/24/24. +// + +import Foundation + +extension Date { + + func asFormattedString() -> String { + let formatter = DateFormatter() + formatter.dateFormat = "MM/dd/yyyy" + return formatter.string(from: self) + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/View+Extensions.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/View+Extensions.swift new file mode 100755 index 0000000..5e0e76b --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Extensions/View+Extensions.swift @@ -0,0 +1,15 @@ +// +// View+Extensions.swift +// MovieApp +// +// Created by Yilong Chen on 2/24/24. +// + +import Foundation +import SwiftUI + +extension View { + func embedInNavigationView() -> some View { + NavigationView { self } + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Info.plist b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Info.plist new file mode 100755 index 0000000..efc211a --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Info.plist @@ -0,0 +1,50 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Managers/CoreDataManager.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Managers/CoreDataManager.swift new file mode 100755 index 0000000..e19866e --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Managers/CoreDataManager.swift @@ -0,0 +1,37 @@ +// +// CoreDataManager.swift +// MovieApp +// +// Created by Yilong Chen on 2/23/24. +// + +import Foundation +import CoreData +import SwiftUI + +class CoreDataManager { + + let persistentContainer: NSPersistentContainer + + static let shared = CoreDataManager() + + private init() { + + persistentContainer = NSPersistentContainer(name: "MovieAppModel") + persistentContainer.loadPersistentStores { (description, error) in + if let error = error { + fatalError("Failed to initialize Core Data \(error)") + } + } + + let directories = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) + print(directories[0]) + } + + var viewContext: NSManagedObjectContext { + return persistentContainer.viewContext + } + +} + + diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Actor+Extensions.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Actor+Extensions.swift new file mode 100755 index 0000000..08e5ff3 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Actor+Extensions.swift @@ -0,0 +1,23 @@ +// +// Actor+Extensions.swift +// MovieApp +// +// Created by Yilong Chen on 3/14/24. +// + +import Foundation +import CoreData + +extension Actor: BaseModel { + + static func getActorsByMovieId(movieId: NSManagedObjectID) -> [Actor] { + guard let movie = Movie.byId(id: movieId) as? Movie, + let actors = movie.actors + else { + return [] + } + + return (actors.allObjects as? [Actor]) ?? [] + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/BaseModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/BaseModel.swift new file mode 100755 index 0000000..cd67c2b --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/BaseModel.swift @@ -0,0 +1,57 @@ +// +// BaseModel.swift +// MovieApp +// +// Created by Yilong Chen on 3/11/24. +// + +import Foundation +import CoreData + +protocol BaseModel: NSManagedObject { + func save() throws + func delete() throws + static func byId(id: NSManagedObjectID) -> T? + static func all() -> [T] +} + +extension BaseModel { + + static var viewContext: NSManagedObjectContext { + return CoreDataManager.shared.viewContext + } + + func save() throws { + do { + try Self.viewContext.save() + } catch { + throw error + } + } + + func delete() throws { + Self.viewContext.delete(self) + try save() + } + + static func all() -> [T] where T: NSManagedObject { + + let fetchRequest: NSFetchRequest = NSFetchRequest(entityName: String(describing: T.self)) + + do { + return try viewContext.fetch(fetchRequest) + } catch { + return [] + } + } + + static func byId(id: NSManagedObjectID) -> T? where T: NSManagedObject { + do { + return try viewContext.existingObject(with: id) as? T + } catch { + print(error) + return nil + } + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Movie+Extensions.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Movie+Extensions.swift new file mode 100755 index 0000000..611c586 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Movie+Extensions.swift @@ -0,0 +1,27 @@ +// +// Movie+Extensions.swift +// MovieApp +// +// Created by Yilong Chen on 3/11/24. +// + +import Foundation +import CoreData + +extension Movie: BaseModel { + + static func byActorName(name: String) -> [Movie] { + + let request: NSFetchRequest = Movie.fetchRequest() + request.predicate = NSPredicate(format: "actors.name CONTAINS %@", name) + + do { + return try viewContext.fetch(request) + } catch { + print(error) + return [] + } + + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Review+Extensions.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Review+Extensions.swift new file mode 100755 index 0000000..3ef866b --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Models/Review+Extensions.swift @@ -0,0 +1,26 @@ +// +// Review+Extensions.swift +// MovieApp +// +// Created by Yilong Chen on 3/3/24. +// + +import Foundation +import CoreData + +extension Review: BaseModel { + + static func getReviewsByMovieId(movieId: NSManagedObjectID) -> [Review] { + + let request: NSFetchRequest = Review.fetchRequest() + request.predicate = NSPredicate(format: "movie = %@", movieId) + + do { + return try viewContext.fetch(request) + } catch { + return [] + } + + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppApp.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppApp.swift new file mode 100755 index 0000000..a480af7 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppApp.swift @@ -0,0 +1,22 @@ +// +// MovieAppApp.swift +// MovieApp +// +// Created by Yilong Chen on 2/23/24. +// + +import SwiftUI + +@main +struct MovieAppApp: App { + + init() { + UITableView.appearance().separatorStyle = .none + } + + var body: some Scene { + WindowGroup { + MovieListScreen() + } + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppModel.xcdatamodeld/MovieAppModel.xcdatamodel/contents b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppModel.xcdatamodeld/MovieAppModel.xcdatamodel/contents new file mode 100755 index 0000000..e4683a8 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/MovieAppModel.xcdatamodeld/MovieAppModel.xcdatamodel/contents @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorDetailsScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorDetailsScreen.swift new file mode 100755 index 0000000..78b9332 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorDetailsScreen.swift @@ -0,0 +1,30 @@ +// +// ActorDetailsScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/15/24. +// + +import SwiftUI + +struct ActorDetailsScreen: View { + + let actor: ActorViewModel + + var body: some View { + VStack { + List(actor.movies, id: \.movieId) { movie in + MovieCell(movie: movie) + }.listStyle(PlainListStyle()) + + }.navigationTitle(actor.name) + } +} + +struct ActorDetailsScreen_Previews: PreviewProvider { + static var previews: some View { + + let actorVM = ActorViewModel(actor: Actor(context: Actor.viewContext)) + ActorDetailsScreen(actor: actorVM) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorListScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorListScreen.swift new file mode 100755 index 0000000..6af5c06 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ActorListScreen.swift @@ -0,0 +1,71 @@ +// +// ActorListScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/11/24. +// + +import SwiftUI + +struct ActorListScreen: View { + + @State private var isPresented: Bool = false + @StateObject private var actorListVM = ActorListViewModel() + let movie: MovieViewModel + + var body: some View { + + List { + + Section(header: Text("Actors")) { + ForEach(actorListVM.actors, id: \.actorId) { actor in + + HStack { + NavigationLink( + destination: ActorDetailsScreen(actor: actor), + label: { + Text(actor.name) + .foregroundColor(.black) + }) + Spacer() + } + .padding(10) + .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.9567790627, green: 0.9569163918, blue: 0.9567491412, alpha: 1)), Color(#colorLiteral(red: 0.9685427547, green: 0.9686816335, blue: 0.9685124755, alpha: 1))]), startPoint: .leading, endPoint: /*@START_MENU_TOKEN@*/.trailing/*@END_MENU_TOKEN@*/)) + .clipShape(RoundedRectangle(cornerRadius: 10, style: /*@START_MENU_TOKEN@*/.continuous/*@END_MENU_TOKEN@*/)) + } + } + + }.listStyle(PlainListStyle()) + + + .onAppear(perform: { + actorListVM.getActorsByMovie(vm: movie) + }) + .sheet(isPresented: $isPresented, onDismiss: { + actorListVM.getActorsByMovie(vm: movie) + }, content: { + AddActorScreen(movie: movie) + }) + .navigationTitle(movie.title) + .navigationBarItems(trailing: Button(action: { + isPresented = true + }, label: { + Image(systemName: "plus") + })) + + } +} + +struct ActorListScreen_Previews: PreviewProvider { + static var previews: some View { + + let movie = Movie(context: CoreDataManager.shared.viewContext) + movie.title = "Lord of the Rings" + let actor = Actor(context: CoreDataManager.shared.viewContext) + actor.name = "Tom Hanks" + movie.addToActors(actor) + + return ActorListScreen(movie: MovieViewModel(movie: movie)) + .embedInNavigationView() + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddActorScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddActorScreen.swift new file mode 100755 index 0000000..e360207 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddActorScreen.swift @@ -0,0 +1,45 @@ +// +// AddActorScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/11/24. +// + +import SwiftUI + +struct AddActorScreen: View { + + let movie: MovieViewModel + @StateObject private var addActorVM = AddActorViewModel() + @Environment(\.presentationMode) private var presentationMode + + var body: some View { + + Form { + VStack(alignment: .leading) { + Text("Add Actor") + .font(.largeTitle) + Text(movie.title) + }.padding(.bottom, 50) + TextField("Enter name", text: $addActorVM.name) + HStack { + Spacer() + Button("Cancel") { + presentationMode.wrappedValue.dismiss() + }.buttonStyle(PlainButtonStyle()) + Spacer() + Button("Save") { + addActorVM.addActorToMovie(movieId: movie.movieId) + presentationMode.wrappedValue.dismiss() + }.buttonStyle(PlainButtonStyle()) + Spacer() + } + } + } +} + +struct AddActorScreen_Previews: PreviewProvider { + static var previews: some View { + AddActorScreen(movie: MovieViewModel(movie: Movie(context: Movie.viewContext))) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddMovieScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddMovieScreen.swift new file mode 100755 index 0000000..778ecac --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddMovieScreen.swift @@ -0,0 +1,45 @@ +// +// AddMovieScreen.swift +// MovieApp +// +// Created by Yilong Chen on 2/24/24. +// + +import SwiftUI + +struct AddMovieScreen: View { + + @StateObject private var addMovieVM = AddMovieViewModel() + @Environment(\.presentationMode) var presentationMode + + var body: some View { + Form { + TextField("Enter name", text: $addMovieVM.title) + TextField("Enter director", text: $addMovieVM.director) + HStack { + Text("Rating") + Spacer() + RatingView(rating: $addMovieVM.rating) + } + DatePicker("Release Date", selection: $addMovieVM.releaseDate) + + HStack { + Spacer() + Button("Save") { + addMovieVM.save() + presentationMode.wrappedValue.dismiss() + } + Spacer() + } + + } + .navigationTitle("Add Movie") + .embedInNavigationView() + } +} + +struct AddMovieScreen_Previews: PreviewProvider { + static var previews: some View { + AddMovieScreen() + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddReviewScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddReviewScreen.swift new file mode 100755 index 0000000..626b934 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/AddReviewScreen.swift @@ -0,0 +1,43 @@ +// +// AddReviewScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/2/24. +// + +import SwiftUI + +struct AddReviewScreen: View { + + @StateObject private var addReviewVM = AddReviewViewModel() + @Environment(\.presentationMode) var presentationMode + + let movie: MovieViewModel + + var body: some View { + Form { + TextField("Enter title", text: $addReviewVM.title) + TextEditor(text: $addReviewVM.text) + + HStack { + Spacer() + Button("Save") { + addReviewVM.addReviewForMovie(vm: movie) + presentationMode.wrappedValue.dismiss() + } + Spacer() + } + + } + .navigationTitle("Add Review") + .embedInNavigationView() + } +} + +struct AddReviewScreen_Previews: PreviewProvider { + static var previews: some View { + + let movie = MovieViewModel(movie: Movie(context: CoreDataManager.shared.viewContext)) + AddReviewScreen(movie: movie) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieDetailScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieDetailScreen.swift new file mode 100755 index 0000000..3e50681 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieDetailScreen.swift @@ -0,0 +1,62 @@ +// +// MovieDetailScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/11/24. +// + +import SwiftUI + +enum MovieDetailsRoutes: Identifiable, CaseIterable { + + var id: UUID { + return UUID() + } + + case reviews + case actors +} + +extension MovieDetailsRoutes { + + var displayText: String { + switch self { + case .reviews: + return "Reviews" + case .actors: + return "Actors" + } + } +} + +struct MovieDetailScreen: View { + + let movie: MovieViewModel + + var body: some View { + VStack { + List { + NavigationLink( + destination: ReviewListScreen(movie: movie), + label: { + Text("Reviews") + }) + + NavigationLink( + destination: ActorListScreen(movie: movie), + label: { + Text("Actors") + }) + + }.listStyle(PlainListStyle()) + }.navigationTitle(movie.title) + } +} + +struct MovieDetailScreen_Previews: PreviewProvider { + static var previews: some View { + + MovieDetailScreen(movie: MovieViewModel(movie: Movie(context: CoreDataManager.shared.viewContext))) + .embedInNavigationView() + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieListScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieListScreen.swift new file mode 100755 index 0000000..4b73998 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/MovieListScreen.swift @@ -0,0 +1,93 @@ +// +// MovieListScreen.swift +// MovieApp +// +// Created by Yilong Chen on 2/24/24. +// + +import SwiftUI + +struct MovieListScreen: View { + + @StateObject private var movieListVM = MovieListViewModel() + @State private var isPresented: Bool = false + + private func deleteMovie(at indexSet: IndexSet) { + indexSet.forEach { index in + let movie = movieListVM.movies[index] + // delete the movie + movieListVM.deleteMovie(movie: movie) + // get all movies + movieListVM.getAllMovies() + } + } + + var body: some View { + List { + + ForEach(movieListVM.movies, id: \.movieId) { movie in + NavigationLink( + destination: MovieDetailScreen(movie: movie), + label: { + MovieCell(movie: movie) + }) + }.onDelete(perform: deleteMovie) + + }.listStyle(PlainListStyle()) + + .navigationTitle("Movies") + .navigationBarItems(trailing: Button("Add Movie") { + isPresented = true + }) + .sheet(isPresented: $isPresented, onDismiss: { + movieListVM.getAllMovies() + }, content: { + AddMovieScreen() + }) + .embedInNavigationView() + + .onAppear(perform: { + UITableView.appearance().separatorStyle = .none + UITableView.appearance().separatorColor = .clear + movieListVM.getAllMovies() + }) + } +} + +struct MovieListScreen_Previews: PreviewProvider { + static var previews: some View { + Group { + MovieListScreen() + } + } +} + +struct MovieCell: View { + + let movie: MovieViewModel + + var body: some View { + HStack { + VStack(alignment: .leading, spacing: 5) { + Text(movie.title) + .fontWeight(.bold) + .font(.system(size: 22)) + Text(movie.director) + .font(.callout) + .opacity(0.5) + Spacer() + + } + Spacer() + HStack { + Image(systemName: "star.fill") + .foregroundColor(.yellow) + Text("\(movie.rating!)") + } + } + .padding() + .foregroundColor(Color.black) + .background(LinearGradient(gradient: Gradient(colors: [Color(#colorLiteral(red: 0.9567790627, green: 0.9569163918, blue: 0.9567491412, alpha: 1)), Color(#colorLiteral(red: 0.9685427547, green: 0.9686816335, blue: 0.9685124755, alpha: 1))]), startPoint: .leading, endPoint: /*@START_MENU_TOKEN@*/.trailing/*@END_MENU_TOKEN@*/)) + .clipShape(RoundedRectangle(cornerRadius: 15.0, style: .continuous)) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ReviewListScreen.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ReviewListScreen.swift new file mode 100755 index 0000000..2b494ee --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Screens/ReviewListScreen.swift @@ -0,0 +1,56 @@ +// +// ReviewListScreen.swift +// MovieApp +// +// Created by Yilong Chen on 3/2/24. +// + +import SwiftUI + +struct ReviewListScreen: View { + + let movie: MovieViewModel + @State private var isPresented: Bool = false + @StateObject private var reviewListVM = ReviewListViewModel() + + var body: some View { + VStack { + List { + Section(header: Text("Reviews")) { + ForEach(reviewListVM.reviews, id: \.reviewId) { review in + HStack { + VStack(alignment: .leading) { + Text(review.title) + Text(review.text) + .font(.caption) + } + Spacer() + Text(review.publishedDate!.asFormattedString()) + } + } + } + } + } + .navigationTitle(movie.title) + .navigationBarItems(trailing: Button("Add New Review") { + isPresented = true + }) + .sheet(isPresented: $isPresented, onDismiss: { + reviewListVM.getReviewsByMovie(vm: movie) + }, content: { + AddReviewScreen(movie: movie) + }) + .onAppear(perform: { + reviewListVM.getReviewsByMovie(vm: movie) + }) + } +} + +struct ReviewListScreen_Previews: PreviewProvider { + static var previews: some View { + + let movie = MovieViewModel(movie: Movie(context: CoreDataManager.shared.viewContext)) + ReviewListScreen(movie: movie).embedInNavigationView() + } +} + diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ActorListViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ActorListViewModel.swift new file mode 100755 index 0000000..c6ba5d7 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ActorListViewModel.swift @@ -0,0 +1,38 @@ +// +// ActorListViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 3/15/24. +// + +import Foundation +import CoreData + +class ActorListViewModel: ObservableObject { + + @Published var actors = [ActorViewModel]() + + func getActorsByMovie(vm: MovieViewModel) { + DispatchQueue.main.async { + self.actors = Actor.getActorsByMovieId(movieId: vm.movieId).map(ActorViewModel.init) + } + } + +} + +struct ActorViewModel { + + let actor: Actor + + var actorId: NSManagedObjectID { + return actor.objectID + } + + var name: String { + return actor.name ?? "" + } + + var movies: [MovieViewModel] { + return Movie.byActorName(name: name).map(MovieViewModel.init) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddActorViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddActorViewModel.swift new file mode 100755 index 0000000..bae999f --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddActorViewModel.swift @@ -0,0 +1,29 @@ +// +// AddActorViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 3/14/24. +// + +import Foundation +import CoreData + +class AddActorViewModel: ObservableObject { + + var name: String = "" + + func addActorToMovie(movieId: NSManagedObjectID) { + + let movie: Movie? = Movie.byId(id: movieId) + + if let movie = movie { + let actor = Actor(context: Actor.viewContext) + actor.name = name + actor.addToMovies(movie) + + try? actor.save() + } + + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddMovieViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddMovieViewModel.swift new file mode 100755 index 0000000..40ec673 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddMovieViewModel.swift @@ -0,0 +1,28 @@ +// +// AddMovieViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 2/26/24. +// + +import Foundation + +class AddMovieViewModel: ObservableObject { + + var title: String = "" + var director: String = "" + @Published var rating: Int? = nil + var releaseDate: Date = Date() + + func save() { + + let movie = Movie(context: Movie.viewContext) + movie.title = title + movie.director = director + movie.rating = Double(rating ?? 0) + movie.releaseDate = releaseDate + + try? movie.save() + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddReviewViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddReviewViewModel.swift new file mode 100755 index 0000000..ff2e410 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/AddReviewViewModel.swift @@ -0,0 +1,28 @@ +// +// AddReviewViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 3/2/24. +// + +import Foundation + +class AddReviewViewModel: ObservableObject { + + var title: String = "" + var text: String = "" + + func addReviewForMovie(vm: MovieViewModel) { + + let movie: Movie? = Movie.byId(id: vm.movieId) + + let review = Review(context: Movie.viewContext) + review.title = title + review.text = text + review.movie = movie + + // save the review + try? review.save() + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/MovieListViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/MovieListViewModel.swift new file mode 100755 index 0000000..3949dd8 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/MovieListViewModel.swift @@ -0,0 +1,52 @@ +// +// MovieListViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 2/26/24. +// + +import Foundation +import CoreData + +class MovieListViewModel: ObservableObject { + + @Published var movies = [MovieViewModel]() + + func deleteMovie(movie: MovieViewModel) { + let movie: Movie? = Movie.byId(id: movie.movieId) + if let movie = movie { + try? movie.delete() + } + } + + func getAllMovies() { + DispatchQueue.main.async { + self.movies = Movie.all().map(MovieViewModel.init) + } + } +} + +struct MovieViewModel { + + let movie: Movie + + var movieId: NSManagedObjectID { + return movie.objectID + } + + var title: String { + return movie.title ?? "" + } + + var director: String { + return movie.director ?? "Not available" + } + + var releaseDate: String? { + return movie.releaseDate?.asFormattedString() + } + + var rating: Int? { + return Int(movie.rating) + } +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ReviewListViewModel.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ReviewListViewModel.swift new file mode 100755 index 0000000..ef00620 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/View Models/ReviewListViewModel.swift @@ -0,0 +1,42 @@ +// +// ReviewListViewModel.swift +// MovieApp +// +// Created by Yilong Chen on 3/2/24. +// + +import Foundation +import CoreData + +class ReviewListViewModel: ObservableObject { + + @Published var reviews = [ReviewViewModel]() + + func getReviewsByMovie(vm: MovieViewModel) { + DispatchQueue.main.async { + self.reviews = Review.getReviewsByMovieId(movieId: vm.movieId).map(ReviewViewModel.init) + } + } +} + +struct ReviewViewModel { + + let review: Review + + var reviewId: NSManagedObjectID { + return review.objectID + } + + var title: String { + return review.title ?? "" + } + + var text: String { + return review.text ?? "" + } + + var publishedDate: Date? { + return review.publishedAt + } + +} diff --git a/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Views/RatingView.swift b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Views/RatingView.swift new file mode 100755 index 0000000..ae291e4 --- /dev/null +++ b/SwiftUI/SwiftUIMVVM_MovieApp/MovieApp/Views/RatingView.swift @@ -0,0 +1,42 @@ +// +// RatingView.swift +// SwiftUIRatings +// +// Created by Yilong Chen on 6/20/20. +// Copyright © 2020 Yilong Chen. All rights reserved. +// + +import SwiftUI + +struct RatingView: View { + + @Binding var rating: Int? + + private func starType(index: Int) -> String { + + if let rating = self.rating { + return index <= rating ? "star.fill" : "star" + } else { + return "star" + } + + } + + var body: some View { + HStack { + ForEach(1...5, id: \.self) { index in + Image(systemName: self.starType(index: index)) + .foregroundColor(Color.orange) + .onTapGesture { + self.rating = index + } + } + } + } +} + +struct RatingView_Previews: PreviewProvider { + static var previews: some View { + RatingView(rating: .constant(3)) + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIRedux/SwiftUIRedux.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ef5e5c5 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux.xcodeproj/project.pbxproj @@ -0,0 +1,652 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 9A970F312C435CEB0043EC5E /* SwiftUIReduxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F302C435CEB0043EC5E /* SwiftUIReduxApp.swift */; }; + 9A970F332C435CEB0043EC5E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F322C435CEB0043EC5E /* ContentView.swift */; }; + 9A970F352C435CED0043EC5E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A970F342C435CED0043EC5E /* Assets.xcassets */; }; + 9A970F382C435CED0043EC5E /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9A970F372C435CED0043EC5E /* Preview Assets.xcassets */; }; + 9A970F422C435CED0043EC5E /* SwiftUIReduxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F412C435CED0043EC5E /* SwiftUIReduxTests.swift */; }; + 9A970F4C2C435CED0043EC5E /* SwiftUIReduxUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F4B2C435CED0043EC5E /* SwiftUIReduxUITests.swift */; }; + 9A970F4E2C435CED0043EC5E /* SwiftUIReduxUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F4D2C435CED0043EC5E /* SwiftUIReduxUITestsLaunchTests.swift */; }; + 9A970F5C2C435D170043EC5E /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A970F5B2C435D170043EC5E /* Store.swift */; }; + 9ADC410B2C43862600D8500A /* CounterReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC410A2C43862600D8500A /* CounterReducer.swift */; }; + 9ADC410F2C4386A400D8500A /* AppReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC410E2C4386A400D8500A /* AppReducer.swift */; }; + 9ADC41122C43C27000D8500A /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC41112C43C27000D8500A /* Task.swift */; }; + 9ADC41142C43C30B00D8500A /* TaskReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC41132C43C30B00D8500A /* TaskReducer.swift */; }; + 9ADC41162C43C9F100D8500A /* AddTaskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC41152C43C9F100D8500A /* AddTaskView.swift */; }; + 9ADC41192C43D59800D8500A /* LogMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC41182C43D59800D8500A /* LogMiddleware.swift */; }; + 9ADC411B2C43D88E00D8500A /* IncrementMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9ADC411A2C43D88E00D8500A /* IncrementMiddleware.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A970F3E2C435CED0043EC5E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A970F252C435CEB0043EC5E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A970F2C2C435CEB0043EC5E; + remoteInfo = SwiftUIRedux; + }; + 9A970F482C435CED0043EC5E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9A970F252C435CEB0043EC5E /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A970F2C2C435CEB0043EC5E; + remoteInfo = SwiftUIRedux; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 9A970F2D2C435CEB0043EC5E /* SwiftUIRedux.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftUIRedux.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A970F302C435CEB0043EC5E /* SwiftUIReduxApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIReduxApp.swift; sourceTree = ""; }; + 9A970F322C435CEB0043EC5E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 9A970F342C435CED0043EC5E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 9A970F372C435CED0043EC5E /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 9A970F3D2C435CED0043EC5E /* SwiftUIReduxTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUIReduxTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A970F412C435CED0043EC5E /* SwiftUIReduxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIReduxTests.swift; sourceTree = ""; }; + 9A970F472C435CED0043EC5E /* SwiftUIReduxUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftUIReduxUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A970F4B2C435CED0043EC5E /* SwiftUIReduxUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIReduxUITests.swift; sourceTree = ""; }; + 9A970F4D2C435CED0043EC5E /* SwiftUIReduxUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIReduxUITestsLaunchTests.swift; sourceTree = ""; }; + 9A970F5B2C435D170043EC5E /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 9ADC410A2C43862600D8500A /* CounterReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CounterReducer.swift; sourceTree = ""; }; + 9ADC410E2C4386A400D8500A /* AppReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppReducer.swift; sourceTree = ""; }; + 9ADC41112C43C27000D8500A /* Task.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Task.swift; sourceTree = ""; }; + 9ADC41132C43C30B00D8500A /* TaskReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskReducer.swift; sourceTree = ""; }; + 9ADC41152C43C9F100D8500A /* AddTaskView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddTaskView.swift; sourceTree = ""; }; + 9ADC41182C43D59800D8500A /* LogMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogMiddleware.swift; sourceTree = ""; }; + 9ADC411A2C43D88E00D8500A /* IncrementMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IncrementMiddleware.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A970F2A2C435CEB0043EC5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F3A2C435CED0043EC5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F442C435CED0043EC5E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A970F242C435CEB0043EC5E = { + isa = PBXGroup; + children = ( + 9A970F2F2C435CEB0043EC5E /* SwiftUIRedux */, + 9A970F402C435CED0043EC5E /* SwiftUIReduxTests */, + 9A970F4A2C435CED0043EC5E /* SwiftUIReduxUITests */, + 9A970F2E2C435CEB0043EC5E /* Products */, + ); + sourceTree = ""; + }; + 9A970F2E2C435CEB0043EC5E /* Products */ = { + isa = PBXGroup; + children = ( + 9A970F2D2C435CEB0043EC5E /* SwiftUIRedux.app */, + 9A970F3D2C435CED0043EC5E /* SwiftUIReduxTests.xctest */, + 9A970F472C435CED0043EC5E /* SwiftUIReduxUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 9A970F2F2C435CEB0043EC5E /* SwiftUIRedux */ = { + isa = PBXGroup; + children = ( + 9ADC41102C43C25B00D8500A /* Models */, + 9A970F5A2C435D0B0043EC5E /* Store */, + 9A970F302C435CEB0043EC5E /* SwiftUIReduxApp.swift */, + 9A970F322C435CEB0043EC5E /* ContentView.swift */, + 9ADC41152C43C9F100D8500A /* AddTaskView.swift */, + 9A970F342C435CED0043EC5E /* Assets.xcassets */, + 9A970F362C435CED0043EC5E /* Preview Content */, + ); + path = SwiftUIRedux; + sourceTree = ""; + }; + 9A970F362C435CED0043EC5E /* Preview Content */ = { + isa = PBXGroup; + children = ( + 9A970F372C435CED0043EC5E /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 9A970F402C435CED0043EC5E /* SwiftUIReduxTests */ = { + isa = PBXGroup; + children = ( + 9A970F412C435CED0043EC5E /* SwiftUIReduxTests.swift */, + ); + path = SwiftUIReduxTests; + sourceTree = ""; + }; + 9A970F4A2C435CED0043EC5E /* SwiftUIReduxUITests */ = { + isa = PBXGroup; + children = ( + 9A970F4B2C435CED0043EC5E /* SwiftUIReduxUITests.swift */, + 9A970F4D2C435CED0043EC5E /* SwiftUIReduxUITestsLaunchTests.swift */, + ); + path = SwiftUIReduxUITests; + sourceTree = ""; + }; + 9A970F5A2C435D0B0043EC5E /* Store */ = { + isa = PBXGroup; + children = ( + 9ADC41172C43D57D00D8500A /* middlewares */, + 9ADC41092C43860400D8500A /* reducers */, + 9A970F5B2C435D170043EC5E /* Store.swift */, + ); + path = Store; + sourceTree = ""; + }; + 9ADC41092C43860400D8500A /* reducers */ = { + isa = PBXGroup; + children = ( + 9ADC410A2C43862600D8500A /* CounterReducer.swift */, + 9ADC410E2C4386A400D8500A /* AppReducer.swift */, + 9ADC41132C43C30B00D8500A /* TaskReducer.swift */, + ); + path = reducers; + sourceTree = ""; + }; + 9ADC41102C43C25B00D8500A /* Models */ = { + isa = PBXGroup; + children = ( + 9ADC41112C43C27000D8500A /* Task.swift */, + ); + path = Models; + sourceTree = ""; + }; + 9ADC41172C43D57D00D8500A /* middlewares */ = { + isa = PBXGroup; + children = ( + 9ADC41182C43D59800D8500A /* LogMiddleware.swift */, + 9ADC411A2C43D88E00D8500A /* IncrementMiddleware.swift */, + ); + path = middlewares; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A970F2C2C435CEB0043EC5E /* SwiftUIRedux */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A970F512C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIRedux" */; + buildPhases = ( + 9A970F292C435CEB0043EC5E /* Sources */, + 9A970F2A2C435CEB0043EC5E /* Frameworks */, + 9A970F2B2C435CEB0043EC5E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwiftUIRedux; + productName = SwiftUIRedux; + productReference = 9A970F2D2C435CEB0043EC5E /* SwiftUIRedux.app */; + productType = "com.apple.product-type.application"; + }; + 9A970F3C2C435CED0043EC5E /* SwiftUIReduxTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A970F542C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIReduxTests" */; + buildPhases = ( + 9A970F392C435CED0043EC5E /* Sources */, + 9A970F3A2C435CED0043EC5E /* Frameworks */, + 9A970F3B2C435CED0043EC5E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A970F3F2C435CED0043EC5E /* PBXTargetDependency */, + ); + name = SwiftUIReduxTests; + productName = SwiftUIReduxTests; + productReference = 9A970F3D2C435CED0043EC5E /* SwiftUIReduxTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 9A970F462C435CED0043EC5E /* SwiftUIReduxUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A970F572C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIReduxUITests" */; + buildPhases = ( + 9A970F432C435CED0043EC5E /* Sources */, + 9A970F442C435CED0043EC5E /* Frameworks */, + 9A970F452C435CED0043EC5E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A970F492C435CED0043EC5E /* PBXTargetDependency */, + ); + name = SwiftUIReduxUITests; + productName = SwiftUIReduxUITests; + productReference = 9A970F472C435CED0043EC5E /* SwiftUIReduxUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A970F252C435CEB0043EC5E /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 9A970F2C2C435CEB0043EC5E = { + CreatedOnToolsVersion = 14.2; + }; + 9A970F3C2C435CED0043EC5E = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A970F2C2C435CEB0043EC5E; + }; + 9A970F462C435CED0043EC5E = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 9A970F2C2C435CEB0043EC5E; + }; + }; + }; + buildConfigurationList = 9A970F282C435CEB0043EC5E /* Build configuration list for PBXProject "SwiftUIRedux" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A970F242C435CEB0043EC5E; + productRefGroup = 9A970F2E2C435CEB0043EC5E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A970F2C2C435CEB0043EC5E /* SwiftUIRedux */, + 9A970F3C2C435CED0043EC5E /* SwiftUIReduxTests */, + 9A970F462C435CED0043EC5E /* SwiftUIReduxUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 9A970F2B2C435CEB0043EC5E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A970F382C435CED0043EC5E /* Preview Assets.xcassets in Resources */, + 9A970F352C435CED0043EC5E /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F3B2C435CED0043EC5E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F452C435CED0043EC5E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A970F292C435CEB0043EC5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A970F5C2C435D170043EC5E /* Store.swift in Sources */, + 9ADC410B2C43862600D8500A /* CounterReducer.swift in Sources */, + 9A970F332C435CEB0043EC5E /* ContentView.swift in Sources */, + 9ADC41162C43C9F100D8500A /* AddTaskView.swift in Sources */, + 9A970F312C435CEB0043EC5E /* SwiftUIReduxApp.swift in Sources */, + 9ADC41142C43C30B00D8500A /* TaskReducer.swift in Sources */, + 9ADC41122C43C27000D8500A /* Task.swift in Sources */, + 9ADC410F2C4386A400D8500A /* AppReducer.swift in Sources */, + 9ADC41192C43D59800D8500A /* LogMiddleware.swift in Sources */, + 9ADC411B2C43D88E00D8500A /* IncrementMiddleware.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F392C435CED0043EC5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A970F422C435CED0043EC5E /* SwiftUIReduxTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A970F432C435CED0043EC5E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A970F4C2C435CED0043EC5E /* SwiftUIReduxUITests.swift in Sources */, + 9A970F4E2C435CED0043EC5E /* SwiftUIReduxUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A970F3F2C435CED0043EC5E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A970F2C2C435CEB0043EC5E /* SwiftUIRedux */; + targetProxy = 9A970F3E2C435CED0043EC5E /* PBXContainerItemProxy */; + }; + 9A970F492C435CED0043EC5E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 9A970F2C2C435CEB0043EC5E /* SwiftUIRedux */; + targetProxy = 9A970F482C435CED0043EC5E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 9A970F4F2C435CED0043EC5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 9A970F502C435CED0043EC5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A970F522C435CED0043EC5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUIRedux/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIRedux; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A970F532C435CED0043EC5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"SwiftUIRedux/Preview Content\""; + DEVELOPMENT_TEAM = A34NNDTR9F; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIRedux; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 9A970F552C435CED0043EC5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIReduxTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUIRedux.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUIRedux"; + }; + name = Debug; + }; + 9A970F562C435CED0043EC5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIReduxTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwiftUIRedux.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/SwiftUIRedux"; + }; + name = Release; + }; + 9A970F582C435CED0043EC5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIReduxUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUIRedux; + }; + name = Debug; + }; + 9A970F592C435CED0043EC5E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = A34NNDTR9F; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.chenyilong.SwiftUIReduxUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = SwiftUIRedux; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A970F282C435CEB0043EC5E /* Build configuration list for PBXProject "SwiftUIRedux" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A970F4F2C435CED0043EC5E /* Debug */, + 9A970F502C435CED0043EC5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A970F512C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIRedux" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A970F522C435CED0043EC5E /* Debug */, + 9A970F532C435CED0043EC5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A970F542C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIReduxTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A970F552C435CED0043EC5E /* Debug */, + 9A970F562C435CED0043EC5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A970F572C435CED0043EC5E /* Build configuration list for PBXNativeTarget "SwiftUIReduxUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A970F582C435CED0043EC5E /* Debug */, + 9A970F592C435CED0043EC5E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A970F252C435CEB0043EC5E /* Project object */; +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/AddTaskView.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/AddTaskView.swift new file mode 100644 index 0000000..49b3130 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/AddTaskView.swift @@ -0,0 +1,62 @@ +// +// AddTaskView.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import SwiftUI + +struct AddTaskView: View { + @EnvironmentObject var store: Store + @State private var name: String = "" + + struct Props { + let tasks: [Task] + let onTaskAdded: (Task) -> () + } + + private func map(state: TaskState) -> Props { + return Props(tasks: state.tasks, + onTaskAdded: { task in + store.dispatch(action: AddTaskAction(task: task)) + }) + } + + var body: some View { + let props = map(state: store.state.taskState) + + VStack { + TextField("Enter task", text: $name) + .padding() + .background(Color(.systemGray6)) + .cornerRadius(10) + .padding() + + Button(action: { + let task = Task(title: self.name) + props.onTaskAdded(task) + // dispatch action +// print("Add Task\(name)"); + }) { + Text("Add Task") + .padding() + .background(Color.blue) + .foregroundColor(.white) + .cornerRadius(10) + } + + List(props.tasks, id: \.id) { task in + Text(task.title) + } + .padding() + } + } +} + +struct AddTaskView_Previews: PreviewProvider { + static var previews: some View { + let store = Store(reducer: appReducer, state: AppState()) + return AddTaskView().environmentObject(store) + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/ContentView.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/ContentView.swift new file mode 100644 index 0000000..19982ad --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/ContentView.swift @@ -0,0 +1,89 @@ +// +// ContentView.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import SwiftUI + +struct ContentView: View { + @State private var isPresented: Bool = false + + @EnvironmentObject var store: Store + + struct Props { + let counter: Int + let onIncrement: () -> Void + let onDecrement: () -> Void + let onAdd: (Int) -> Void + let onIncrementAsync: () -> Void + } + + private func map(state: CounterState) -> Props { + return Props( + counter: state.counter, + onIncrement: { store.dispatch(action: IncrementAction()) }, + onDecrement: { store.dispatch(action: DecrementAction()) }, + onAdd: { value in store.dispatch(action: addAction(value: value)) }, + onIncrementAsync: { store.dispatch(action: IncrementActionAsync()) } + ) + } + + + var body: some View { + + let props = map(state: store.state.counterState) + + VStack { + Spacer() + Image(systemName: "globe") + .imageScale(.large) + .foregroundColor(.accentColor) + Text("\(props.counter)") + .font(.largeTitle) + Button(action: { + props.onIncrement() + }) { + Text("Increment") + } + + Button(action: { + props.onDecrement() + }) { + Text("Decrement") + } + + Button(action: { + props.onAdd(10) + }) { + Text("Add 10") + } + + Button(action: { + props.onIncrementAsync() + }) { + Text("onIncrementAsync") + } + + Spacer() + + Button(action: { + isPresented = true + }) { + Text("Add Tasks") + } + } + .padding().sheet(isPresented: $isPresented) { + Text("Add text view") + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { +// let store = Store(reducer: appReducer, state: AppState(), middlewares: [logMiddleware(), incrementMiddleware()]) + let store = Store(reducer: counterReducer, state: CounterState()) + ContentView().environmentObject(store) + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Models/Task.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Models/Task.swift new file mode 100644 index 0000000..6b128b9 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Models/Task.swift @@ -0,0 +1,13 @@ +// +// Task.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +struct Task { + let id = UUID() + let title: String +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/Store.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/Store.swift new file mode 100644 index 0000000..1772924 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/Store.swift @@ -0,0 +1,74 @@ +// +// Store.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +/*! + * Generics in Swift and Dependency Injection are closely related when it comes to implementing the Dependency Inversion Principle (DIP). Generics provide the necessary abstraction to decouple high-level modules from low-level modules, while dependency injection ensures that dependencies are injected from the outside, promoting modularity and testability. In the provided `Store` class example, generics and constructor injection work together to create a flexible, reusable, and decoupled state management system. + */ +typealias Dispatcher = (Action) -> Void +typealias Reducer = (_ state: State,_ action: Action) -> State +typealias Middleware = (StoreState, Action, @escaping Dispatcher) -> Void + +protocol ReduxState { } + +struct AppState: ReduxState { + var counterState = CounterState() + var taskState = TaskState() +} + +struct CounterState: ReduxState { + var counter: Int = 0 + var movies = [String]() +} + +struct TaskState: ReduxState { + var tasks: [Task] = [Task]() +} + +protocol Action { } + +struct IncrementAction: Action { } +struct DecrementAction: Action { } +struct IncrementActionAsync: Action { } + +struct getMoviesAction: Action { + let moveis: [String] +} + +struct addAction: Action { + var value: Int +} + +struct AddTaskAction: Action { + var task: Task +} + +class Store: ObservableObject { + + var reducer: Reducer + @Published var state: StoreState + var middlewares: [Middleware] = [] + + init(reducer:@escaping Reducer, state: StoreState, middlewares: [Middleware] = []) { + self.state = state + self.reducer = reducer + self.middlewares = middlewares + } + + func dispatch(action: Action) { + DispatchQueue.main.async { + self.state = self.reducer(self.state, action) + print("reducer update state") + } + + middlewares.forEach { middleware in + print("middlewares.forEach") + middleware(state, action, self.dispatch) + } + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/IncrementMiddleware.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/IncrementMiddleware.swift new file mode 100644 index 0000000..18dfe69 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/IncrementMiddleware.swift @@ -0,0 +1,22 @@ +// +// IncrementMiddleware.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +func incrementMiddleware() -> Middleware { + return { state, action, dispatch in + switch action { + case _ as IncrementActionAsync: + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + dispatch(IncrementAction()) + print("dispatch IncrementActionAsync") + } + default: + break + } + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/LogMiddleware.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/LogMiddleware.swift new file mode 100644 index 0000000..30e11bc --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/middlewares/LogMiddleware.swift @@ -0,0 +1,14 @@ +// +// LogMiddleware.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +func logMiddleware() -> Middleware { + return { state, action, dispatch in + print("logMiddleware Action trigger: \(action)") + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/AppReducer.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/AppReducer.swift new file mode 100644 index 0000000..e9816e0 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/AppReducer.swift @@ -0,0 +1,15 @@ +// +// AppReducer.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +func appReducer(_ state: AppState,_ action: Action) -> AppState { + var state = state + state.counterState = counterReducer(state.counterState, action) + state.taskState = taskReducer(state.taskState, action) + return state +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/CounterReducer.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/CounterReducer.swift new file mode 100644 index 0000000..6fdcf3b --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/CounterReducer.swift @@ -0,0 +1,26 @@ +// +// CounterReducer.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +func counterReducer(_ state: CounterState,_ action: Action) -> CounterState { + var state = state + switch action { + case _ as IncrementAction: + state.counter += 1 + case _ as DecrementAction: + state.counter -= 1 + case let action as addAction: + state.counter += action.value + case let action as getMoviesAction: + state.movies = action.moveis + default: + break + } + + return state +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/TaskReducer.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/TaskReducer.swift new file mode 100644 index 0000000..824b713 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/Store/reducers/TaskReducer.swift @@ -0,0 +1,20 @@ +// +// TaskReducer.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import Foundation + +func taskReducer(_ state: TaskState,_ action: Action) -> TaskState { + var state = state + switch action { + case let action as AddTaskAction: + state.tasks.append(action.task) + default: + break + } + + return state +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIRedux/SwiftUIReduxApp.swift b/SwiftUI/SwiftUIRedux/SwiftUIRedux/SwiftUIReduxApp.swift new file mode 100644 index 0000000..527ddcb --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIRedux/SwiftUIReduxApp.swift @@ -0,0 +1,19 @@ +// +// SwiftUIReduxApp.swift +// SwiftUIRedux +// +// Created by chenyilong on 2024/7/14. +// + +import SwiftUI + +@main +struct SwiftUIReduxApp: App { + var body: some Scene { + let store = Store(reducer: appReducer, state: AppState(), middlewares: [logMiddleware(), incrementMiddleware()]) + WindowGroup { + ContentView().environmentObject(store) +// AddTaskView().environmentObject(store) + } + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIReduxTests/SwiftUIReduxTests.swift b/SwiftUI/SwiftUIRedux/SwiftUIReduxTests/SwiftUIReduxTests.swift new file mode 100644 index 0000000..b3e0a4a --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIReduxTests/SwiftUIReduxTests.swift @@ -0,0 +1,36 @@ +// +// SwiftUIReduxTests.swift +// SwiftUIReduxTests +// +// Created by chenyilong on 2024/7/14. +// + +import XCTest +@testable import SwiftUIRedux + +final class SwiftUIReduxTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITests.swift b/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITests.swift new file mode 100644 index 0000000..7764abb --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITests.swift @@ -0,0 +1,41 @@ +// +// SwiftUIReduxUITests.swift +// SwiftUIReduxUITests +// +// Created by chenyilong on 2024/7/14. +// + +import XCTest + +final class SwiftUIReduxUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITestsLaunchTests.swift b/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITestsLaunchTests.swift new file mode 100644 index 0000000..bd07be8 --- /dev/null +++ b/SwiftUI/SwiftUIRedux/SwiftUIReduxUITests/SwiftUIReduxUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// SwiftUIReduxUITestsLaunchTests.swift +// SwiftUIReduxUITests +// +// Created by chenyilong on 2024/7/14. +// + +import XCTest + +final class SwiftUIReduxUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/ReduxAsync.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIRedux_MovieApp/ReduxAsync.xcodeproj/project.pbxproj new file mode 100755 index 0000000..237de0a --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/ReduxAsync.xcodeproj/project.pbxproj @@ -0,0 +1,606 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 340AF81F2514033B00D0E6B7 /* URLImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340AF81E2514033B00D0E6B7 /* URLImage.swift */; }; + 340AF8202514033B00D0E6B7 /* URLImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340AF81E2514033B00D0E6B7 /* URLImage.swift */; }; + 340AF8242514034700D0E6B7 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340AF8232514034700D0E6B7 /* ImageLoader.swift */; }; + 340AF8252514034700D0E6B7 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 340AF8232514034700D0E6B7 /* ImageLoader.swift */; }; + 34111D5D250FFE8C009064B8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34111D5C250FFE8C009064B8 /* Store.swift */; }; + 34111D5E250FFE8C009064B8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34111D5C250FFE8C009064B8 /* Store.swift */; }; + 341B4AC325153E4C007BB846 /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341B4AC225153E4B007BB846 /* Movie.swift */; }; + 341B4AC425153E4C007BB846 /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341B4AC225153E4B007BB846 /* Movie.swift */; }; + 342978D3250FEC1500F20610 /* HelloReduxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 342978C0250FEC1300F20610 /* HelloReduxApp.swift */; }; + 342978D4250FEC1500F20610 /* HelloReduxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 342978C0250FEC1300F20610 /* HelloReduxApp.swift */; }; + 342978D5250FEC1500F20610 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 342978C1250FEC1300F20610 /* ContentView.swift */; }; + 342978D6250FEC1500F20610 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 342978C1250FEC1300F20610 /* ContentView.swift */; }; + 342978D7250FEC1500F20610 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 342978C2250FEC1500F20610 /* Assets.xcassets */; }; + 342978D8250FEC1500F20610 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 342978C2250FEC1500F20610 /* Assets.xcassets */; }; + 343CB8BB25193AF4008E9A7B /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 343CB8BA25193AF4008E9A7B /* View+Extensions.swift */; }; + 343CB8BC25193AF4008E9A7B /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 343CB8BA25193AF4008E9A7B /* View+Extensions.swift */; }; + 34BBFFC7251531B4002E9388 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBFFC6251531B4002E9388 /* Constants.swift */; }; + 34BBFFC8251531B4002E9388 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BBFFC6251531B4002E9388 /* Constants.swift */; }; + 34D075DB25191A4A00DBA6F7 /* MoviesReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D075DA25191A4A00DBA6F7 /* MoviesReducer.swift */; }; + 34D075DC25191A4A00DBA6F7 /* MoviesReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D075DA25191A4A00DBA6F7 /* MoviesReducer.swift */; }; + 34D075ED25191C2F00DBA6F7 /* Webservice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D075EC25191C2F00DBA6F7 /* Webservice.swift */; }; + 34D075EE25191C2F00DBA6F7 /* Webservice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D075EC25191C2F00DBA6F7 /* Webservice.swift */; }; + 34D2F6F4251150DC00117401 /* AppReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D2F6F3251150DC00117401 /* AppReducer.swift */; }; + 34D2F6F5251150DC00117401 /* AppReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D2F6F3251150DC00117401 /* AppReducer.swift */; }; + 9A11191E2C4D018A005C31F4 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A11191D2C4D018A005C31F4 /* String+Extensions.swift */; }; + 9A11191F2C4D018A005C31F4 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A11191D2C4D018A005C31F4 /* String+Extensions.swift */; }; + 9A1119212C4D04EF005C31F4 /* RatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119202C4D04EF005C31F4 /* RatingView.swift */; }; + 9A1119222C4D04EF005C31F4 /* RatingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119202C4D04EF005C31F4 /* RatingView.swift */; }; + 9A1119272C4D1156005C31F4 /* MoviesMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119262C4D1156005C31F4 /* MoviesMiddleware.swift */; }; + 9A1119282C4D1156005C31F4 /* MoviesMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119262C4D1156005C31F4 /* MoviesMiddleware.swift */; }; + 9A11192A2C4D19CC005C31F4 /* MovieDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119292C4D19CC005C31F4 /* MovieDetail.swift */; }; + 9A11192B2C4D19CC005C31F4 /* MovieDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A1119292C4D19CC005C31F4 /* MovieDetail.swift */; }; + 9A11192D2C4D1E78005C31F4 /* MovieDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A11192C2C4D1E78005C31F4 /* MovieDetailsView.swift */; }; + 9A11192E2C4D1E78005C31F4 /* MovieDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A11192C2C4D1E78005C31F4 /* MovieDetailsView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 340AF81E2514033B00D0E6B7 /* URLImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLImage.swift; sourceTree = ""; }; + 340AF8232514034700D0E6B7 /* ImageLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageLoader.swift; sourceTree = ""; }; + 34111D5C250FFE8C009064B8 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 341B4AC225153E4B007BB846 /* Movie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; + 342978C0250FEC1300F20610 /* HelloReduxApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelloReduxApp.swift; sourceTree = ""; }; + 342978C1250FEC1300F20610 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 342978C2250FEC1500F20610 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 342978C7250FEC1500F20610 /* ReduxAsync.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReduxAsync.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 342978CA250FEC1500F20610 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 342978CF250FEC1500F20610 /* ReduxAsync.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReduxAsync.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 342978D1250FEC1500F20610 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 342978D2250FEC1500F20610 /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = ""; }; + 343CB8BA25193AF4008E9A7B /* View+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Extensions.swift"; sourceTree = ""; }; + 34BBFFC6251531B4002E9388 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 34D075DA25191A4A00DBA6F7 /* MoviesReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoviesReducer.swift; sourceTree = ""; }; + 34D075EC25191C2F00DBA6F7 /* Webservice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Webservice.swift; sourceTree = ""; }; + 34D2F6F3251150DC00117401 /* AppReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppReducer.swift; sourceTree = ""; }; + 9A11191D2C4D018A005C31F4 /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; }; + 9A1119202C4D04EF005C31F4 /* RatingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RatingView.swift; sourceTree = ""; }; + 9A1119262C4D1156005C31F4 /* MoviesMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoviesMiddleware.swift; sourceTree = ""; }; + 9A1119292C4D19CC005C31F4 /* MovieDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetail.swift; sourceTree = ""; }; + 9A11192C2C4D1E78005C31F4 /* MovieDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailsView.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 342978C4250FEC1500F20610 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 342978CC250FEC1500F20610 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 340AF81C2513FEC300D0E6B7 /* Views */ = { + isa = PBXGroup; + children = ( + 340AF81E2514033B00D0E6B7 /* URLImage.swift */, + 9A1119202C4D04EF005C31F4 /* RatingView.swift */, + 342978C1250FEC1300F20610 /* ContentView.swift */, + 9A11192C2C4D1E78005C31F4 /* MovieDetailsView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 340AF81D2514032D00D0E6B7 /* Loaders */ = { + isa = PBXGroup; + children = ( + 340AF8232514034700D0E6B7 /* ImageLoader.swift */, + ); + path = Loaders; + sourceTree = ""; + }; + 34111D5B250FFE80009064B8 /* Store */ = { + isa = PBXGroup; + children = ( + 9A1119232C4D0F3A005C31F4 /* Middlewares */, + 34D2F6EF2511504000117401 /* reducers */, + 34111D5C250FFE8C009064B8 /* Store.swift */, + ); + path = Store; + sourceTree = ""; + }; + 342978BA250FEC1200F20610 = { + isa = PBXGroup; + children = ( + 342978BF250FEC1300F20610 /* Shared */, + 342978C9250FEC1500F20610 /* iOS */, + 342978D0250FEC1500F20610 /* macOS */, + 342978C8250FEC1500F20610 /* Products */, + ); + sourceTree = ""; + }; + 342978BF250FEC1300F20610 /* Shared */ = { + isa = PBXGroup; + children = ( + 343CB8B925193AD7008E9A7B /* Extensions */, + 34D075E925191C1E00DBA6F7 /* Services */, + 34BBFFC5251531A1002E9388 /* Utils */, + 340AF81D2514032D00D0E6B7 /* Loaders */, + 340AF81C2513FEC300D0E6B7 /* Views */, + 346D49BC25123D1100C27E0E /* Models */, + 34111D5B250FFE80009064B8 /* Store */, + 342978C0250FEC1300F20610 /* HelloReduxApp.swift */, + 342978C2250FEC1500F20610 /* Assets.xcassets */, + ); + path = Shared; + sourceTree = ""; + }; + 342978C8250FEC1500F20610 /* Products */ = { + isa = PBXGroup; + children = ( + 342978C7250FEC1500F20610 /* ReduxAsync.app */, + 342978CF250FEC1500F20610 /* ReduxAsync.app */, + ); + name = Products; + sourceTree = ""; + }; + 342978C9250FEC1500F20610 /* iOS */ = { + isa = PBXGroup; + children = ( + 342978CA250FEC1500F20610 /* Info.plist */, + ); + path = iOS; + sourceTree = ""; + }; + 342978D0250FEC1500F20610 /* macOS */ = { + isa = PBXGroup; + children = ( + 342978D1250FEC1500F20610 /* Info.plist */, + 342978D2250FEC1500F20610 /* macOS.entitlements */, + ); + path = macOS; + sourceTree = ""; + }; + 343CB8B925193AD7008E9A7B /* Extensions */ = { + isa = PBXGroup; + children = ( + 343CB8BA25193AF4008E9A7B /* View+Extensions.swift */, + 9A11191D2C4D018A005C31F4 /* String+Extensions.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 346D49BC25123D1100C27E0E /* Models */ = { + isa = PBXGroup; + children = ( + 341B4AC225153E4B007BB846 /* Movie.swift */, + 9A1119292C4D19CC005C31F4 /* MovieDetail.swift */, + ); + path = Models; + sourceTree = ""; + }; + 34BBFFC5251531A1002E9388 /* Utils */ = { + isa = PBXGroup; + children = ( + 34BBFFC6251531B4002E9388 /* Constants.swift */, + ); + path = Utils; + sourceTree = ""; + }; + 34D075E925191C1E00DBA6F7 /* Services */ = { + isa = PBXGroup; + children = ( + 34D075EC25191C2F00DBA6F7 /* Webservice.swift */, + ); + path = Services; + sourceTree = ""; + }; + 34D2F6EF2511504000117401 /* reducers */ = { + isa = PBXGroup; + children = ( + 34D2F6F3251150DC00117401 /* AppReducer.swift */, + 34D075DA25191A4A00DBA6F7 /* MoviesReducer.swift */, + ); + path = reducers; + sourceTree = ""; + }; + 9A1119232C4D0F3A005C31F4 /* Middlewares */ = { + isa = PBXGroup; + children = ( + 9A1119262C4D1156005C31F4 /* MoviesMiddleware.swift */, + ); + path = Middlewares; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 342978C6250FEC1500F20610 /* ReduxAsync (iOS) */ = { + isa = PBXNativeTarget; + buildConfigurationList = 342978DB250FEC1500F20610 /* Build configuration list for PBXNativeTarget "ReduxAsync (iOS)" */; + buildPhases = ( + 342978C3250FEC1500F20610 /* Sources */, + 342978C4250FEC1500F20610 /* Frameworks */, + 342978C5250FEC1500F20610 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ReduxAsync (iOS)"; + productName = "HelloRedux (iOS)"; + productReference = 342978C7250FEC1500F20610 /* ReduxAsync.app */; + productType = "com.apple.product-type.application"; + }; + 342978CE250FEC1500F20610 /* ReduxAsync (macOS) */ = { + isa = PBXNativeTarget; + buildConfigurationList = 342978DE250FEC1500F20610 /* Build configuration list for PBXNativeTarget "ReduxAsync (macOS)" */; + buildPhases = ( + 342978CB250FEC1500F20610 /* Sources */, + 342978CC250FEC1500F20610 /* Frameworks */, + 342978CD250FEC1500F20610 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ReduxAsync (macOS)"; + productName = "HelloRedux (macOS)"; + productReference = 342978CF250FEC1500F20610 /* ReduxAsync.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 342978BB250FEC1200F20610 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1200; + LastUpgradeCheck = 1420; + TargetAttributes = { + 342978C6250FEC1500F20610 = { + CreatedOnToolsVersion = 12.0; + }; + 342978CE250FEC1500F20610 = { + CreatedOnToolsVersion = 12.0; + }; + }; + }; + buildConfigurationList = 342978BE250FEC1200F20610 /* Build configuration list for PBXProject "ReduxAsync" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 342978BA250FEC1200F20610; + productRefGroup = 342978C8250FEC1500F20610 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 342978C6250FEC1500F20610 /* ReduxAsync (iOS) */, + 342978CE250FEC1500F20610 /* ReduxAsync (macOS) */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 342978C5250FEC1500F20610 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 342978D7250FEC1500F20610 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 342978CD250FEC1500F20610 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 342978D8250FEC1500F20610 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 342978C3250FEC1500F20610 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1119272C4D1156005C31F4 /* MoviesMiddleware.swift in Sources */, + 340AF8242514034700D0E6B7 /* ImageLoader.swift in Sources */, + 9A11192D2C4D1E78005C31F4 /* MovieDetailsView.swift in Sources */, + 34111D5D250FFE8C009064B8 /* Store.swift in Sources */, + 343CB8BB25193AF4008E9A7B /* View+Extensions.swift in Sources */, + 340AF81F2514033B00D0E6B7 /* URLImage.swift in Sources */, + 9A11191E2C4D018A005C31F4 /* String+Extensions.swift in Sources */, + 342978D5250FEC1500F20610 /* ContentView.swift in Sources */, + 34BBFFC7251531B4002E9388 /* Constants.swift in Sources */, + 9A1119212C4D04EF005C31F4 /* RatingView.swift in Sources */, + 342978D3250FEC1500F20610 /* HelloReduxApp.swift in Sources */, + 341B4AC325153E4C007BB846 /* Movie.swift in Sources */, + 34D2F6F4251150DC00117401 /* AppReducer.swift in Sources */, + 9A11192A2C4D19CC005C31F4 /* MovieDetail.swift in Sources */, + 34D075ED25191C2F00DBA6F7 /* Webservice.swift in Sources */, + 34D075DB25191A4A00DBA6F7 /* MoviesReducer.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 342978CB250FEC1500F20610 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A1119282C4D1156005C31F4 /* MoviesMiddleware.swift in Sources */, + 340AF8252514034700D0E6B7 /* ImageLoader.swift in Sources */, + 9A11192E2C4D1E78005C31F4 /* MovieDetailsView.swift in Sources */, + 34111D5E250FFE8C009064B8 /* Store.swift in Sources */, + 343CB8BC25193AF4008E9A7B /* View+Extensions.swift in Sources */, + 340AF8202514033B00D0E6B7 /* URLImage.swift in Sources */, + 9A11191F2C4D018A005C31F4 /* String+Extensions.swift in Sources */, + 342978D6250FEC1500F20610 /* ContentView.swift in Sources */, + 34BBFFC8251531B4002E9388 /* Constants.swift in Sources */, + 9A1119222C4D04EF005C31F4 /* RatingView.swift in Sources */, + 342978D4250FEC1500F20610 /* HelloReduxApp.swift in Sources */, + 341B4AC425153E4C007BB846 /* Movie.swift in Sources */, + 34D2F6F5251150DC00117401 /* AppReducer.swift in Sources */, + 9A11192B2C4D19CC005C31F4 /* MovieDetail.swift in Sources */, + 34D075EE25191C2F00DBA6F7 /* Webservice.swift in Sources */, + 34D075DC25191A4A00DBA6F7 /* MoviesReducer.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 342978D9250FEC1500F20610 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 342978DA250FEC1500F20610 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 342978DC250FEC1500F20610 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = ReduxAsync; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 342978DD250FEC1500F20610 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = iOS/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = ReduxAsync; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 342978DF250FEC1500F20610 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = macOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = ReduxAsync; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 342978E0250FEC1500F20610 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements; + CODE_SIGN_IDENTITY = "-"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = macOS/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.15; + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = ReduxAsync; + SDKROOT = macosx; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 342978BE250FEC1200F20610 /* Build configuration list for PBXProject "ReduxAsync" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 342978D9250FEC1500F20610 /* Debug */, + 342978DA250FEC1500F20610 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 342978DB250FEC1500F20610 /* Build configuration list for PBXNativeTarget "ReduxAsync (iOS)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 342978DC250FEC1500F20610 /* Debug */, + 342978DD250FEC1500F20610 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 342978DE250FEC1500F20610 /* Build configuration list for PBXNativeTarget "ReduxAsync (macOS)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 342978DF250FEC1500F20610 /* Debug */, + 342978E0250FEC1500F20610 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 342978BB250FEC1200F20610 /* Project object */; +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..c136eaf --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,148 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/Contents.json new file mode 100755 index 0000000..d7a6ec8 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "placeholder.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/placeholder.png b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/placeholder.png new file mode 100755 index 0000000..87214dd Binary files /dev/null and b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Assets.xcassets/placeholder.imageset/placeholder.png differ diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/String+Extensions.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/String+Extensions.swift new file mode 100644 index 0000000..5345fab --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/String+Extensions.swift @@ -0,0 +1,20 @@ +// +// String+Extensions.swift +// ReduxAsync +// +// Created by chenyilong on 2024/7/21. +// + +import Foundation +import SwiftUI + +extension String { + func urlEncode() -> String { + self.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? self + } + + func toInt() -> Int { + let ratingDouble = Double(self) ?? 0 + return Int(ratingDouble.rounded()) + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/View+Extensions.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/View+Extensions.swift new file mode 100755 index 0000000..4db6c4a --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Extensions/View+Extensions.swift @@ -0,0 +1,17 @@ +// +// View+Extensions.swift +// ReduxAsync +// +// Created by Yilong Chen on 9/21/24. +// + +import Foundation +import SwiftUI + +extension View { + + func embedInNavigationView() -> some View { + NavigationView { self } + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/HelloReduxApp.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/HelloReduxApp.swift new file mode 100755 index 0000000..ef5a00f --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/HelloReduxApp.swift @@ -0,0 +1,21 @@ +// +// HelloReduxApp.swift +// Shared +// +// Created by Yilong Chen on 9/14/24. +// + +import SwiftUI + +@main +struct HelloReduxApp: App { + var body: some Scene { + + let store = Store(reducer: appReducer, state: AppState(), + middlewares: [moviesMiddleware()]) + + WindowGroup { + ContentView().environmentObject(store) + } + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Loaders/ImageLoader.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Loaders/ImageLoader.swift new file mode 100755 index 0000000..0e3f03a --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Loaders/ImageLoader.swift @@ -0,0 +1,35 @@ +// +// ImageLoader.swift +// URLImageDemo +// +// Created by Yilong Chen on 6/17/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import Foundation + +class ImageLoader: ObservableObject { + + @Published var downloadedData: Data? = nil + + func downloadImage(url: String) { + + guard let imageURL = URL(string: url) else { + fatalError("ImageURL is not correct") + } + + URLSession.shared.dataTask(with: imageURL) { data, _, error in + + guard let data = data, error == nil else { + return + } + + DispatchQueue.main.async { + self.downloadedData = data + } + + }.resume() + + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/Movie.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/Movie.swift new file mode 100755 index 0000000..bafa359 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/Movie.swift @@ -0,0 +1,31 @@ +// +// Movie.swift +// ReduxAsync +// +// Created by Yilong Chen on 9/18/24. +// + +import Foundation + +struct MovieResponse: Codable { + let movies: [Movie] + + private enum CodingKeys: String, CodingKey { + case movies = "Search" + } +} + + +struct Movie: Codable { + + let title: String + let imdbId: String + let poster: String + + private enum CodingKeys: String, CodingKey { + case title = "Title" + case imdbId = "imdbID" + case poster = "Poster" + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/MovieDetail.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/MovieDetail.swift new file mode 100644 index 0000000..0416fee --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Models/MovieDetail.swift @@ -0,0 +1,75 @@ +// +// MovieDetail.swift +// ReduxAsync +// +// Created by chenyilong on 2024/7/21. +// + +import Foundation + +struct Rating: Decodable { + let source: String + let value: String + + private enum CodingKeys: String, CodingKey { + case source = "Source" + case value = "Value" + } +} + +struct MovieDetail: Decodable { + let title: String + let year: String + let rated: String + let released: String + let runtime: String + let genre: String + let director: String + let writer: String + let actors: String + let plot: String + let language: String + let country: String + let awards: String + let poster: String + let ratings: [Rating] + let metascore: String + let imdbRating: String + let imdbVotes: String + let imdbId: String + let type: String + let dvd: String + let boxOffice: String + let production: String + let website: String + let response: String + + private enum CodingKeys: String, CodingKey { + case title = "Title" + case year = "Year" + case rated = "Rated" + case released = "Released" + case runtime = "Runtime" + case genre = "Genre" + case director = "Director" + case writer = "Writer" + case actors = "Actors" + case plot = "Plot" + case language = "Language" + case country = "Country" + case awards = "Awards" + case poster = "Poster" + case ratings = "Ratings" + case metascore = "Metascore" + case imdbRating = "imdbRating" + case imdbVotes = "imdbVotes" + case imdbId = "imdbID" + case type = "Type" + case dvd = "DVD" + case boxOffice = "BoxOffice" + case production = "Production" + case website = "Website" + case response = "Response" + } +} + diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Services/Webservice.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Services/Webservice.swift new file mode 100755 index 0000000..01bd55b --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Services/Webservice.swift @@ -0,0 +1,110 @@ +// +// Webservice.swift +// ReduxAsync +// +// Created by Yilong Chen on 9/21/24. +// + +import Foundation + +enum NetworkError: Error { + case badUrl + case decodingError + case noData + case networkError(Error) +} + +class Webservice { + func getMovieDetailsById(id: String, completion: @escaping (Result) -> Void) { + + let url = URL(string: Constants.Url.urlForMovieDetailsByImdbId(id)) + + guard let movieUrl = url else { + completion(.failure(.badUrl)) + return + } + + URLSession.shared.dataTask(with: movieUrl) { data, _, error in + + if let error = error { + completion(.failure(.networkError(error))) + return + } + + guard let data = data else { + completion(.failure(.noData)) + return + } + + do { + let movieDetail = try JSONDecoder().decode(MovieDetail.self, from: data) + completion(.success(movieDetail)) + } catch { + completion(.failure(.decodingError)) + } + + }.resume() + } + + func getMoviesBySearch(search: String, completion: @escaping (Result<[Movie]?, NetworkError>) -> Void) { + + let search = search.replacingOccurrences(of: " ", with: "+") + let url = URL(string: Constants.Url.urlBySearch(search)) + + guard let moviesUrl = url else { + completion(.failure(.badUrl)) + return + } + + URLSession.shared.dataTask(with: moviesUrl) { data, _, error in + + if let error = error { + completion(.failure(.networkError(error))) + return + } + + guard let data = data else { + completion(.failure(.noData)) + return + } + + do { + let movieResponse = try JSONDecoder().decode(MovieResponse.self, from: data) + completion(.success(movieResponse.movies)) + } catch { + completion(.failure(.decodingError)) + } + + }.resume() + } + + func getAllMovies(url: String, completion: @escaping (Result<[Movie], NetworkError>) -> Void) { + + guard let moviesUrl = URL(string: url) else { + completion(.failure(.badUrl)) + return + } + + URLSession.shared.dataTask(with: moviesUrl) { data, _, error in + + if let error = error { + completion(.failure(.networkError(error))) + return + } + + guard let data = data else { + completion(.failure(.noData)) + return + } + + do { + let movieResponse = try JSONDecoder().decode(MovieResponse.self, from: data) + completion(.success(movieResponse.movies)) + } catch { + completion(.failure(.decodingError)) + } + + }.resume() + + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Middlewares/MoviesMiddleware.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Middlewares/MoviesMiddleware.swift new file mode 100644 index 0000000..621e7a4 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Middlewares/MoviesMiddleware.swift @@ -0,0 +1,47 @@ +// +// MoviesMiddleware.swift +// ReduxAsync +// +// Created by chenyilong on 2024/7/21. +// + +import Foundation + +// Middlewares +func moviesMiddleware() -> Middleware { + + return { state, action, dispatch in + + switch action { + case let action as FetchMoviesAction: + Webservice().getMoviesBySearch(search: action.search.urlEncode()) { result in + switch result { + case .success(let movies): + if let movies = movies { + print(movies) + dispatch(SetMoviesAction(movies: movies)) + } + + case .failure(let error): + print(error.localizedDescription) + } + } + case let action as FetchMovieDetailAction: + Webservice().getMovieDetailsById(id: action.imdbId) { result in + switch result { + case .success(let movieDetail): + if let movieDetail = movieDetail { + dispatch(SetMovieDetailAction(movieDetail: movieDetail)) + } + + case .failure(let error): + print(error.localizedDescription) + } + } + default: + break + } + + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Store.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Store.swift new file mode 100755 index 0000000..5d1bc38 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/Store.swift @@ -0,0 +1,69 @@ +// +// Store.swift +// HelloRedux +// +// Created by Yilong Chen on 9/14/24. +// + +import Foundation + +typealias Dispatcher = (Action) -> Void + +typealias Reducer = (_ state: State, _ action: Action) -> State +typealias Middleware = (StoreState, Action, @escaping Dispatcher) -> Void + +protocol ReduxState { } + +struct AppState: ReduxState { + var moviesState = MoviesState() +} + +struct MoviesState: ReduxState { + var movies: [Movie] = [Movie]() + var selectedMovieDetail: MovieDetail? +} + +protocol Action { } + +struct FetchMoviesAction: Action { + let search: String +} + +struct SetMoviesAction: Action { + let movies: [Movie] +} + +struct FetchMovieDetailAction: Action { + let imdbId: String +} + +struct SetMovieDetailAction: Action { + let movieDetail: MovieDetail +} + +class Store: ObservableObject { + + var reducer: Reducer + @Published var state: StoreState + var middlewares: [Middleware] + + init(reducer: @escaping Reducer, state: StoreState + , middlewares: [Middleware] = [] + ) { + self.reducer = reducer + self.state = state + self.middlewares = middlewares + } + + func dispatch(action: Action) { + DispatchQueue.main.async { + self.state = self.reducer(self.state, action) + } + + // run all the middlewares + middlewares.forEach { middleware in + middleware(state, action, dispatch) + } + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/AppReducer.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/AppReducer.swift new file mode 100755 index 0000000..a69d124 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/AppReducer.swift @@ -0,0 +1,15 @@ +// +// AppReducer.swift +// CombiningReducers +// +// Created by Yilong Chen on 9/15/24. +// + +import Foundation + +func appReducer(_ state: AppState, _ action: Action) -> AppState { + + var state = state + state.moviesState = moviesReducer(state: state.moviesState, action: action) + return state +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/MoviesReducer.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/MoviesReducer.swift new file mode 100755 index 0000000..8e033f6 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Store/reducers/MoviesReducer.swift @@ -0,0 +1,24 @@ +// +// MoviesReducer.swift +// ReduxAsync +// +// Created by Yilong Chen on 9/21/24. +// + +import Foundation + +func moviesReducer(state: MoviesState, action: Action) -> MoviesState { + + var state = state + + switch action { + case let action as SetMoviesAction: + state.movies = action.movies + case let action as SetMovieDetailAction: + state.selectedMovieDetail = action.movieDetail + default: + break + } + + return state +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Utils/Constants.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Utils/Constants.swift new file mode 100755 index 0000000..0234fb0 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Utils/Constants.swift @@ -0,0 +1,25 @@ +// +// Constants.swift +// ReduxAsync +// +// Created by Yilong Chen on 9/18/24. +// + +import Foundation + +struct Constants { + struct api { + static let key = "564727fa" + } + + struct Url { + static func urlBySearch(_ search: String) -> String { + return "http://www.omdbapi.com/?s=\(search)&page=1&apikey=\(api.key)" + } + static func urlForMovieDetailsByImdbId(_ imdbId: String) -> String { + return "http://www.omdbapi.com/?i=\(imdbId)&apikey=\(api.key)" + } + static let moviesURL = "http://www.omdbapi.com/?s=Batman&page=2&apikey=\(api.key)" + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/ContentView.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/ContentView.swift new file mode 100755 index 0000000..8609959 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/ContentView.swift @@ -0,0 +1,64 @@ +// +// ContentView.swift +// Shared +// +// Created by Yilong Chen on 9/14/24. +// + +import SwiftUI + +struct ContentView: View { + + @EnvironmentObject var store: Store + @State private var searchText = "" + struct Props { + let movies: [Movie] + let onSearch: (String) -> Void + } + + func map(state: AppState, dispatch: @escaping Dispatcher) -> Props { + Props(movies: state.moviesState.movies, onSearch: { search in + dispatch(FetchMoviesAction(search: search)) + }) + } + + var body: some View { + + let props = map(state: store.state, dispatch: store.dispatch) + + VStack { + TextField("search", text: $searchText, onEditingChanged: { _ in }, onCommit: { + props.onSearch(searchText) + }).textFieldStyle(RoundedBorderTextFieldStyle()).padding() + + List(props.movies, id: \.imdbId) { movie in + NavigationLink(destination: MovieDetailsView(movie: movie), label: { + MovieCell(movie: movie) + }) + }.listStyle(PlainListStyle()) + } + .navigationTitle("Movies") + .embedInNavigationView() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + + let store = Store(reducer: appReducer, state: AppState(), + middlewares: [moviesMiddleware()]) + return ContentView().environmentObject(store) + } +} + +struct MovieCell: View { + let movie: Movie + var body: some View { + HStack { + URLImage(url: movie.poster) + .frame(width: 100, height: 100) + .cornerRadius(10) + Text(movie.title) + } + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/MovieDetailsView.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/MovieDetailsView.swift new file mode 100644 index 0000000..dfd788c --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/MovieDetailsView.swift @@ -0,0 +1,71 @@ +// +// MovieDetailsView.swift +// ReduxAsync +// +// Created by chenyilong on 2024/7/21. +// + +import SwiftUI + +struct MovieDetailsView: View { + @EnvironmentObject var store: Store + + let movie: Movie + struct Props { + let movieDetail: MovieDetail? + let onLoadMovieDetail: (String) -> Void + } + + private func map(state: MoviesState, dispatch: @escaping Dispatcher) -> Props { + Props(movieDetail: state.selectedMovieDetail, onLoadMovieDetail: { imdbId in + dispatch(FetchMovieDetailAction(imdbId: imdbId)) + }) + } + + var body: some View { + VStack { + let props = map(state: store.state.moviesState, dispatch: store.dispatch) + + Group { + if let movieDetail = props.movieDetail { + VStack{ + HStack { + Spacer() + URLImage(url: movieDetail.poster) + Spacer() + } + Text(movieDetail.title).padding().font(.title) + Text(movieDetail.plot).padding() + HStack { + Text("Rating") + RatingView(rating: .constant(movieDetail.imdbRating.toInt())) + Spacer() + } + } + + + } else { + Button("Load Movie Detail") { + props.onLoadMovieDetail(movie.imdbId) + } + } + } + .onAppear(perform: { + props.onLoadMovieDetail(movie.imdbId) + }) + } + + } +} + +struct MovieDetailsView_Previews: PreviewProvider { + static var previews: some View { + + let store = Store(reducer: appReducer, state: AppState(), + middlewares: [moviesMiddleware()]) + + MovieDetailsView(movie: + Movie(title: "Batman: The Killing Joke", imdbId: "tt4853102", poster: "https://m.media-amazon.com/images/M/MV5BMTdjZTliODYtNWExMi00NjQ1LWIzN2MtN2Q5NTg5NTk3NzliL2ltYWdlXkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_SX300.jpg") + ).environmentObject(store) + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/RatingView.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/RatingView.swift new file mode 100644 index 0000000..ef6ac5c --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/RatingView.swift @@ -0,0 +1,39 @@ +// +// RatingView.swift +// ReduxAsync +// +// Created by chenyilong on 2024/7/21. +// + +import Foundation +import SwiftUI + +struct RatingView: View { + + @Binding var rating: Int? + private func starType(for index: Int) -> String { + if let rating = rating { + return index < rating ? "star.fill" : "star" + } else { + return "star" + } + } + + var body: some View { + HStack { + ForEach(0...10, id: \.self) { index in + Image(systemName: starType(for: index)) + .foregroundColor(.orange) + .onTapGesture { + self.rating = index + } + } + } + } +} + +struct RatingView_Previews: PreviewProvider { + static var previews: some View { + RatingView(rating: .constant(3)) + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/URLImage.swift b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/URLImage.swift new file mode 100755 index 0000000..2e78371 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/Shared/Views/URLImage.swift @@ -0,0 +1,39 @@ +// +// URLImage.swift +// URLImageDemo +// +// Created by Yilong Chen on 6/17/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import SwiftUI + +struct URLImage: View { + + let url: String + let placeholder: String + + @ObservedObject private var imageLoader = ImageLoader() + + init(url: String, placeholder: String = "placeholder") { + self.url = url + self.placeholder = placeholder + self.imageLoader.downloadImage(url: self.url) + } + + var body: some View { + + if let data = self.imageLoader.downloadedData { + return Image(uiImage: UIImage(data: data)!).resizable() + } else { + return Image("placeholder").resizable() + } + + } +} + +struct URLImage_Previews: PreviewProvider { + static var previews: some View { + URLImage(url: "https://fyrafix.files.wordpress.com/2011/08/url-8.jpg") + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp/iOS/Info.plist b/SwiftUI/SwiftUIRedux_MovieApp/iOS/Info.plist new file mode 100755 index 0000000..c02a6ac --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/iOS/Info.plist @@ -0,0 +1,55 @@ + + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SwiftUI/SwiftUIRedux_MovieApp/macOS/Info.plist b/SwiftUI/SwiftUIRedux_MovieApp/macOS/Info.plist new file mode 100755 index 0000000..bacbc56 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/macOS/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + + diff --git a/SwiftUI/SwiftUIRedux_MovieApp/macOS/macOS.entitlements b/SwiftUI/SwiftUIRedux_MovieApp/macOS/macOS.entitlements new file mode 100755 index 0000000..f2ef3ae --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp/macOS/macOS.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux.xcodeproj/project.pbxproj new file mode 100755 index 0000000..1a1e6ab --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux.xcodeproj/project.pbxproj @@ -0,0 +1,395 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 8D6FB8F625096924006518A8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D6FB8F525096924006518A8 /* Store.swift */; }; + 8DBD5C542508117B001DCB80 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBD5C532508117B001DCB80 /* AppDelegate.swift */; }; + 8DBD5C562508117B001DCB80 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBD5C552508117B001DCB80 /* SceneDelegate.swift */; }; + 8DBD5C582508117B001DCB80 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DBD5C572508117B001DCB80 /* ContentView.swift */; }; + 8DBD5C5A2508117F001DCB80 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8DBD5C592508117F001DCB80 /* Assets.xcassets */; }; + 8DBD5C5D25081180001DCB80 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8DBD5C5C25081180001DCB80 /* Preview Assets.xcassets */; }; + 8DBD5C6025081180001DCB80 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8DBD5C5E25081180001DCB80 /* LaunchScreen.storyboard */; }; + 8DC67510250A8E8C0016B26A /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DC6750F250A8E8C0016B26A /* Constants.swift */; }; + 8DE179502509B1C2003B9AA4 /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE1794F2509B1C2003B9AA4 /* Movie.swift */; }; + 8DE179532509B318003B9AA4 /* MovieService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DE179522509B318003B9AA4 /* MovieService.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 8D6FB8F525096924006518A8 /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 8DBD5C502508117B001DCB80 /* HelloRedux.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloRedux.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8DBD5C532508117B001DCB80 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 8DBD5C552508117B001DCB80 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 8DBD5C572508117B001DCB80 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 8DBD5C592508117F001DCB80 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8DBD5C5C25081180001DCB80 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 8DBD5C5F25081180001DCB80 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 8DBD5C6125081180001DCB80 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8DC6750F250A8E8C0016B26A /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 8DE1794F2509B1C2003B9AA4 /* Movie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; + 8DE179522509B318003B9AA4 /* MovieService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieService.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8DBD5C4D2508117B001DCB80 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8DBD5C472508117B001DCB80 = { + isa = PBXGroup; + children = ( + 8DBD5C522508117B001DCB80 /* HelloRedux */, + 8DBD5C512508117B001DCB80 /* Products */, + ); + sourceTree = ""; + }; + 8DBD5C512508117B001DCB80 /* Products */ = { + isa = PBXGroup; + children = ( + 8DBD5C502508117B001DCB80 /* HelloRedux.app */, + ); + name = Products; + sourceTree = ""; + }; + 8DBD5C522508117B001DCB80 /* HelloRedux */ = { + isa = PBXGroup; + children = ( + 8DC6750E250A8E800016B26A /* Utils */, + 8DE179512509B30A003B9AA4 /* Services */, + 8DE1794E2509B1B4003B9AA4 /* Models */, + 8DBD5C672508534C001DCB80 /* Store */, + 8DBD5C532508117B001DCB80 /* AppDelegate.swift */, + 8DBD5C552508117B001DCB80 /* SceneDelegate.swift */, + 8DBD5C572508117B001DCB80 /* ContentView.swift */, + 8DBD5C592508117F001DCB80 /* Assets.xcassets */, + 8DBD5C5E25081180001DCB80 /* LaunchScreen.storyboard */, + 8DBD5C6125081180001DCB80 /* Info.plist */, + 8DBD5C5B25081180001DCB80 /* Preview Content */, + ); + path = HelloRedux; + sourceTree = ""; + }; + 8DBD5C5B25081180001DCB80 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 8DBD5C5C25081180001DCB80 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 8DBD5C672508534C001DCB80 /* Store */ = { + isa = PBXGroup; + children = ( + 8D6FB8F525096924006518A8 /* Store.swift */, + ); + path = Store; + sourceTree = ""; + }; + 8DC6750E250A8E800016B26A /* Utils */ = { + isa = PBXGroup; + children = ( + 8DC6750F250A8E8C0016B26A /* Constants.swift */, + ); + path = Utils; + sourceTree = ""; + }; + 8DE1794E2509B1B4003B9AA4 /* Models */ = { + isa = PBXGroup; + children = ( + 8DE1794F2509B1C2003B9AA4 /* Movie.swift */, + ); + path = Models; + sourceTree = ""; + }; + 8DE179512509B30A003B9AA4 /* Services */ = { + isa = PBXGroup; + children = ( + 8DE179522509B318003B9AA4 /* MovieService.swift */, + ); + path = Services; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8DBD5C4F2508117B001DCB80 /* HelloRedux */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8DBD5C6425081180001DCB80 /* Build configuration list for PBXNativeTarget "HelloRedux" */; + buildPhases = ( + 8DBD5C4C2508117B001DCB80 /* Sources */, + 8DBD5C4D2508117B001DCB80 /* Frameworks */, + 8DBD5C4E2508117B001DCB80 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HelloRedux; + productName = HelloRedux; + productReference = 8DBD5C502508117B001DCB80 /* HelloRedux.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8DBD5C482508117B001DCB80 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1150; + LastUpgradeCheck = 1150; + ORGANIZATIONNAME = "Mohammad Azam"; + TargetAttributes = { + 8DBD5C4F2508117B001DCB80 = { + CreatedOnToolsVersion = 11.5; + }; + }; + }; + buildConfigurationList = 8DBD5C4B2508117B001DCB80 /* Build configuration list for PBXProject "HelloRedux" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8DBD5C472508117B001DCB80; + productRefGroup = 8DBD5C512508117B001DCB80 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DBD5C4F2508117B001DCB80 /* HelloRedux */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8DBD5C4E2508117B001DCB80 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DBD5C6025081180001DCB80 /* LaunchScreen.storyboard in Resources */, + 8DBD5C5D25081180001DCB80 /* Preview Assets.xcassets in Resources */, + 8DBD5C5A2508117F001DCB80 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8DBD5C4C2508117B001DCB80 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DE179532509B318003B9AA4 /* MovieService.swift in Sources */, + 8DBD5C542508117B001DCB80 /* AppDelegate.swift in Sources */, + 8DBD5C562508117B001DCB80 /* SceneDelegate.swift in Sources */, + 8DBD5C582508117B001DCB80 /* ContentView.swift in Sources */, + 8DC67510250A8E8C0016B26A /* Constants.swift in Sources */, + 8D6FB8F625096924006518A8 /* Store.swift in Sources */, + 8DE179502509B1C2003B9AA4 /* Movie.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 8DBD5C5E25081180001DCB80 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8DBD5C5F25081180001DCB80 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 8DBD5C6225081180001DCB80 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.5; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8DBD5C6325081180001DCB80 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.5; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8DBD5C6525081180001DCB80 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"HelloRedux/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = HelloRedux/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8DBD5C6625081180001DCB80 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"HelloRedux/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = HelloRedux/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloRedux; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8DBD5C4B2508117B001DCB80 /* Build configuration list for PBXProject "HelloRedux" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8DBD5C6225081180001DCB80 /* Debug */, + 8DBD5C6325081180001DCB80 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8DBD5C6425081180001DCB80 /* Build configuration list for PBXNativeTarget "HelloRedux" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8DBD5C6525081180001DCB80 /* Debug */, + 8DBD5C6625081180001DCB80 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8DBD5C482508117B001DCB80 /* Project object */; +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/AppDelegate.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/AppDelegate.swift new file mode 100755 index 0000000..5a6d6ba --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/AppDelegate.swift @@ -0,0 +1,37 @@ +// +// AppDelegate.swift +// HelloRedux +// +// Created by Yilong Chen on 9/8/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..9221b9b --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Base.lproj/LaunchScreen.storyboard b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Base.lproj/LaunchScreen.storyboard new file mode 100755 index 0000000..865e932 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/ContentView.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/ContentView.swift new file mode 100755 index 0000000..f283390 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/ContentView.swift @@ -0,0 +1,33 @@ +// +// ContentView.swift +// HelloRedux +// +// Created by Yilong Chen on 9/8/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import SwiftUI + +struct ContentView: View { + + @EnvironmentObject var store: Store + + var body: some View { + VStack { + + List(store.state.movies, id: \.imdbId) { movie in + Text(movie.title) + } + + Button("Get Movies") { + self.store.dispatch(action: GetMoviesAction()) + } + } + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView().environmentObject(store) + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Info.plist b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Info.plist new file mode 100755 index 0000000..889828a --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Info.plist @@ -0,0 +1,65 @@ + + + + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + + + + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Models/Movie.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Models/Movie.swift new file mode 100755 index 0000000..91d1126 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Models/Movie.swift @@ -0,0 +1,31 @@ +// +// Movie.swift +// HelloRedux +// +// Created by Yilong Chen on 9/9/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import Foundation + +struct MovieResponse: Decodable { + + let movies: [Movie] + + private enum CodingKeys: String, CodingKey { + case movies = "Search" + } + +} + +struct Movie: Decodable { + + let title: String + let imdbId: String + + private enum CodingKeys: String, CodingKey { + case title = "Title" + case imdbId = "imdbID" + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/SceneDelegate.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/SceneDelegate.swift new file mode 100755 index 0000000..2abb8a9 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/SceneDelegate.swift @@ -0,0 +1,66 @@ +// +// SceneDelegate.swift +// HelloRedux +// +// Created by Yilong Chen on 9/8/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import UIKit +import SwiftUI + +let store = Store(reducer: reducer) + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + + // Create the SwiftUI view that provides the window contents. + let contentView = ContentView() + + // Use a UIHostingController as window root view controller. + if let windowScene = scene as? UIWindowScene { + let window = UIWindow(windowScene: windowScene) + window.rootViewController = UIHostingController(rootView: contentView.environmentObject(store)) + self.window = window + window.makeKeyAndVisible() + } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Services/MovieService.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Services/MovieService.swift new file mode 100755 index 0000000..c935304 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Services/MovieService.swift @@ -0,0 +1,44 @@ +// +// MovieService.swift +// HelloRedux +// +// Created by Yilong Chen on 9/9/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import Foundation + +enum NetworkError: Error { + case invalidURL + case decodingError + case noData +} + +class MovieService { + + func getMovies(url: String, completion: @escaping (Result<[Movie],NetworkError>) -> Void) { + + guard let moviesURL = URL(string: url) else { + completion(.failure(.invalidURL)) + return + } + + URLSession.shared.dataTask(with: moviesURL) { data, response, error in + + guard let data = data, error == nil else { + completion(.failure(.noData)) + return + } + + let movieResponse = try? JSONDecoder().decode(MovieResponse.self, from: data) + if let movieResponse = movieResponse { + completion(.success(movieResponse.movies)) + } else { + completion(.failure(.decodingError)) + } + + }.resume() + } + +} + diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Store/Store.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Store/Store.swift new file mode 100755 index 0000000..7f60bea --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Store/Store.swift @@ -0,0 +1,80 @@ +// +// Store.swift +// HelloRedux +// +// Created by Yilong Chen on 9/9/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import Foundation + +typealias Reducer = (State, Action) -> State + +struct State { + var counter = 0 + var movies = [Movie]() +} + +protocol Action { } + +struct IncrementAction: Action { } + +struct GetMoviesAction: Action { + + init() { + + MovieService().getMovies(url: Constants.MOVIES_URL) { result in + switch result { + case .success(let movies): + store.dispatch(action: SetMoviesAction(movies: movies)) + case .failure(let error): + print(error.localizedDescription) + } + } + + } +} + +struct SetMoviesAction: Action { + let movies: [Movie] + + init(movies: [Movie]) { + self.movies = movies + } +} + + + +func reducer(state: State, action: Action) -> State { + var state = state + + switch action { + case _ as IncrementAction: + state.counter += 1 + case let action as SetMoviesAction: + state.movies = action.movies + + default: + break + } + + return state +} + +class Store: ObservableObject { + + var reducer: Reducer + @Published private (set) var state: State + + init(reducer: @escaping Reducer, state: State = State()) { + self.reducer = reducer + self.state = state + } + + func dispatch(action: Action) { + DispatchQueue.main.async { + self.state = self.reducer(self.state, action) + } + } + +} diff --git a/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Utils/Constants.swift b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Utils/Constants.swift new file mode 100755 index 0000000..26090a9 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_MovieApp_101/HelloRedux/Utils/Constants.swift @@ -0,0 +1,15 @@ +// +// Constants.swift +// HelloRedux +// +// Created by Yilong Chen on 9/10/24. +// Copyright © 2024 Yilong Chen. All rights reserved. +// + +import Foundation + +struct Constants { + + static let MOVIES_URL = "http://www.omdbapi.com/?s=batman&apikey=YOUAPIKEY" + +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder.xcodeproj/project.pbxproj b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder.xcodeproj/project.pbxproj new file mode 100755 index 0000000..3668357 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder.xcodeproj/project.pbxproj @@ -0,0 +1,767 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 76E1C79A2C155EE6006A98A5 /* RestRoomFinderApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7992C155EE6006A98A5 /* RestRoomFinderApp.swift */; }; + 76E1C79E2C155EE8006A98A5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76E1C79D2C155EE8006A98A5 /* Assets.xcassets */; }; + 76E1C7A12C155EE8006A98A5 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76E1C7A02C155EE8006A98A5 /* Preview Assets.xcassets */; }; + 76E1C7AB2C155EE8006A98A5 /* RestRoomFinderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7AA2C155EE8006A98A5 /* RestRoomFinderTests.swift */; }; + 76E1C7B52C155EE8006A98A5 /* RestRoomFinderUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7B42C155EE8006A98A5 /* RestRoomFinderUITests.swift */; }; + 76E1C7B72C155EE8006A98A5 /* RestRoomFinderUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7B62C155EE8006A98A5 /* RestRoomFinderUITestsLaunchTests.swift */; }; + 76E1C7D92C156353006A98A5 /* String+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7C32C156352006A98A5 /* String+Extensions.swift */; }; + 76E1C7DA2C156353006A98A5 /* View+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7C42C156352006A98A5 /* View+Extensions.swift */; }; + 76E1C7DC2C156353006A98A5 /* HomeScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7C82C156352006A98A5 /* HomeScreen.swift */; }; + 76E1C7DD2C156353006A98A5 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7CA2C156352006A98A5 /* Constants.swift */; }; + 76E1C7E02C156353006A98A5 /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7D02C156353006A98A5 /* Actions.swift */; }; + 76E1C7E22C156353006A98A5 /* AppReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7D42C156353006A98A5 /* AppReducer.swift */; }; + 76E1C7E42C156353006A98A5 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7D72C156353006A98A5 /* Store.swift */; }; + 76E1C7E72C15671E006A98A5 /* NetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7E62C15671E006A98A5 /* NetworkManager.swift */; }; + 76E1C7EA2C156792006A98A5 /* MainNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7E92C156792006A98A5 /* MainNetworkManager.swift */; }; + 76E1C7EC2C156867006A98A5 /* Restroom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7EB2C156867006A98A5 /* Restroom.swift */; }; + 76E1C7EE2C156968006A98A5 /* RestroomService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7ED2C156968006A98A5 /* RestroomService.swift */; }; + 76E1C7F12C1569EA006A98A5 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7F02C1569EA006A98A5 /* Logger.swift */; }; + 76E1C7F32C156C24006A98A5 /* RestroomReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7F22C156C24006A98A5 /* RestroomReducer.swift */; }; + 76E1C7F52C156D7D006A98A5 /* RestroomsMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7F42C156D7D006A98A5 /* RestroomsMiddleware.swift */; }; + 76E1C7F82C156F9A006A98A5 /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7F72C156F9A006A98A5 /* LocationManager.swift */; }; + 76E1C7FE2C157630006A98A5 /* RestroomListRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7FD2C157630006A98A5 /* RestroomListRow.swift */; }; + 76E1C8002C1694E2006A98A5 /* ConsoleLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76E1C7FF2C1694E2006A98A5 /* ConsoleLogger.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 76E1C7A72C155EE8006A98A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76E1C78E2C155EE6006A98A5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 76E1C7952C155EE6006A98A5; + remoteInfo = RestRoomFinder; + }; + 76E1C7B12C155EE8006A98A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76E1C78E2C155EE6006A98A5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 76E1C7952C155EE6006A98A5; + remoteInfo = RestRoomFinder; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 76E1C7962C155EE6006A98A5 /* RestRoomFinder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RestRoomFinder.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 76E1C7992C155EE6006A98A5 /* RestRoomFinderApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestRoomFinderApp.swift; sourceTree = ""; }; + 76E1C79D2C155EE8006A98A5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 76E1C7A02C155EE8006A98A5 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 76E1C7A62C155EE8006A98A5 /* RestRoomFinderTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RestRoomFinderTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 76E1C7AA2C155EE8006A98A5 /* RestRoomFinderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestRoomFinderTests.swift; sourceTree = ""; }; + 76E1C7B02C155EE8006A98A5 /* RestRoomFinderUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RestRoomFinderUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 76E1C7B42C155EE8006A98A5 /* RestRoomFinderUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestRoomFinderUITests.swift; sourceTree = ""; }; + 76E1C7B62C155EE8006A98A5 /* RestRoomFinderUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestRoomFinderUITestsLaunchTests.swift; sourceTree = ""; }; + 76E1C7C32C156352006A98A5 /* String+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; }; + 76E1C7C42C156352006A98A5 /* View+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "View+Extensions.swift"; sourceTree = ""; }; + 76E1C7C82C156352006A98A5 /* HomeScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeScreen.swift; sourceTree = ""; }; + 76E1C7CA2C156352006A98A5 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 76E1C7D02C156353006A98A5 /* Actions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Actions.swift; sourceTree = ""; }; + 76E1C7D42C156353006A98A5 /* AppReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppReducer.swift; sourceTree = ""; }; + 76E1C7D72C156353006A98A5 /* Store.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; + 76E1C7E52C1565B5006A98A5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 76E1C7E62C15671E006A98A5 /* NetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkManager.swift; sourceTree = ""; }; + 76E1C7E92C156792006A98A5 /* MainNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainNetworkManager.swift; sourceTree = ""; }; + 76E1C7EB2C156867006A98A5 /* Restroom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Restroom.swift; sourceTree = ""; }; + 76E1C7ED2C156968006A98A5 /* RestroomService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestroomService.swift; sourceTree = ""; }; + 76E1C7F02C1569EA006A98A5 /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = ""; }; + 76E1C7F22C156C24006A98A5 /* RestroomReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestroomReducer.swift; sourceTree = ""; }; + 76E1C7F42C156D7D006A98A5 /* RestroomsMiddleware.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestroomsMiddleware.swift; sourceTree = ""; }; + 76E1C7F72C156F9A006A98A5 /* LocationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationManager.swift; sourceTree = ""; }; + 76E1C7FD2C157630006A98A5 /* RestroomListRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestroomListRow.swift; sourceTree = ""; }; + 76E1C7FF2C1694E2006A98A5 /* ConsoleLogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConsoleLogger.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 76E1C7932C155EE6006A98A5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7A32C155EE8006A98A5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7AD2C155EE8006A98A5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 76E1C78D2C155EE6006A98A5 = { + isa = PBXGroup; + children = ( + 76E1C7982C155EE6006A98A5 /* RestRoomFinder */, + 76E1C7A92C155EE8006A98A5 /* RestRoomFinderTests */, + 76E1C7B32C155EE8006A98A5 /* RestRoomFinderUITests */, + 76E1C7972C155EE6006A98A5 /* Products */, + ); + sourceTree = ""; + }; + 76E1C7972C155EE6006A98A5 /* Products */ = { + isa = PBXGroup; + children = ( + 76E1C7962C155EE6006A98A5 /* RestRoomFinder.app */, + 76E1C7A62C155EE8006A98A5 /* RestRoomFinderTests.xctest */, + 76E1C7B02C155EE8006A98A5 /* RestRoomFinderUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 76E1C7982C155EE6006A98A5 /* RestRoomFinder */ = { + isa = PBXGroup; + children = ( + 76E1C7E52C1565B5006A98A5 /* Info.plist */, + 76E1C7C52C156352006A98A5 /* Extensions */, + 76E1C7C72C156352006A98A5 /* Managers */, + 76E1C7CF2C156353006A98A5 /* Models */, + 76E1C7CD2C156353006A98A5 /* Services */, + 76E1C7D82C156353006A98A5 /* Store */, + 76E1C7CB2C156352006A98A5 /* Utils */, + 76E1C7C92C156352006A98A5 /* Views */, + 76E1C7992C155EE6006A98A5 /* RestRoomFinderApp.swift */, + 76E1C79D2C155EE8006A98A5 /* Assets.xcassets */, + 76E1C79F2C155EE8006A98A5 /* Preview Content */, + ); + path = RestRoomFinder; + sourceTree = ""; + }; + 76E1C79F2C155EE8006A98A5 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 76E1C7A02C155EE8006A98A5 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 76E1C7A92C155EE8006A98A5 /* RestRoomFinderTests */ = { + isa = PBXGroup; + children = ( + 76E1C7AA2C155EE8006A98A5 /* RestRoomFinderTests.swift */, + ); + path = RestRoomFinderTests; + sourceTree = ""; + }; + 76E1C7B32C155EE8006A98A5 /* RestRoomFinderUITests */ = { + isa = PBXGroup; + children = ( + 76E1C7B42C155EE8006A98A5 /* RestRoomFinderUITests.swift */, + 76E1C7B62C155EE8006A98A5 /* RestRoomFinderUITestsLaunchTests.swift */, + ); + path = RestRoomFinderUITests; + sourceTree = ""; + }; + 76E1C7C52C156352006A98A5 /* Extensions */ = { + isa = PBXGroup; + children = ( + 76E1C7C32C156352006A98A5 /* String+Extensions.swift */, + 76E1C7C42C156352006A98A5 /* View+Extensions.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + 76E1C7C72C156352006A98A5 /* Managers */ = { + isa = PBXGroup; + children = ( + 76E1C7F62C156F92006A98A5 /* LocationManager */, + 76E1C7EF2C1569E4006A98A5 /* Logger */, + 76E1C7E82C156722006A98A5 /* Network Manager */, + ); + path = Managers; + sourceTree = ""; + }; + 76E1C7C92C156352006A98A5 /* Views */ = { + isa = PBXGroup; + children = ( + 76E1C7C82C156352006A98A5 /* HomeScreen.swift */, + 76E1C7FD2C157630006A98A5 /* RestroomListRow.swift */, + ); + path = Views; + sourceTree = ""; + }; + 76E1C7CB2C156352006A98A5 /* Utils */ = { + isa = PBXGroup; + children = ( + 76E1C7CA2C156352006A98A5 /* Constants.swift */, + ); + path = Utils; + sourceTree = ""; + }; + 76E1C7CD2C156353006A98A5 /* Services */ = { + isa = PBXGroup; + children = ( + 76E1C7ED2C156968006A98A5 /* RestroomService.swift */, + ); + path = Services; + sourceTree = ""; + }; + 76E1C7CF2C156353006A98A5 /* Models */ = { + isa = PBXGroup; + children = ( + 76E1C7EB2C156867006A98A5 /* Restroom.swift */, + ); + path = Models; + sourceTree = ""; + }; + 76E1C7D12C156353006A98A5 /* Actions */ = { + isa = PBXGroup; + children = ( + 76E1C7D02C156353006A98A5 /* Actions.swift */, + ); + path = Actions; + sourceTree = ""; + }; + 76E1C7D32C156353006A98A5 /* Middlewares */ = { + isa = PBXGroup; + children = ( + 76E1C7F42C156D7D006A98A5 /* RestroomsMiddleware.swift */, + ); + path = Middlewares; + sourceTree = ""; + }; + 76E1C7D62C156353006A98A5 /* Reducers */ = { + isa = PBXGroup; + children = ( + 76E1C7D42C156353006A98A5 /* AppReducer.swift */, + 76E1C7F22C156C24006A98A5 /* RestroomReducer.swift */, + ); + path = Reducers; + sourceTree = ""; + }; + 76E1C7D82C156353006A98A5 /* Store */ = { + isa = PBXGroup; + children = ( + 76E1C7D12C156353006A98A5 /* Actions */, + 76E1C7D32C156353006A98A5 /* Middlewares */, + 76E1C7D62C156353006A98A5 /* Reducers */, + 76E1C7D72C156353006A98A5 /* Store.swift */, + ); + path = Store; + sourceTree = ""; + }; + 76E1C7E82C156722006A98A5 /* Network Manager */ = { + isa = PBXGroup; + children = ( + 76E1C7E62C15671E006A98A5 /* NetworkManager.swift */, + 76E1C7E92C156792006A98A5 /* MainNetworkManager.swift */, + ); + path = "Network Manager"; + sourceTree = ""; + }; + 76E1C7EF2C1569E4006A98A5 /* Logger */ = { + isa = PBXGroup; + children = ( + 76E1C7F02C1569EA006A98A5 /* Logger.swift */, + 76E1C7FF2C1694E2006A98A5 /* ConsoleLogger.swift */, + ); + path = Logger; + sourceTree = ""; + }; + 76E1C7F62C156F92006A98A5 /* LocationManager */ = { + isa = PBXGroup; + children = ( + 76E1C7F72C156F9A006A98A5 /* LocationManager.swift */, + ); + path = LocationManager; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 76E1C7952C155EE6006A98A5 /* RestRoomFinder */ = { + isa = PBXNativeTarget; + buildConfigurationList = 76E1C7BA2C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinder" */; + buildPhases = ( + 76E1C7922C155EE6006A98A5 /* Sources */, + 76E1C7932C155EE6006A98A5 /* Frameworks */, + 76E1C7942C155EE6006A98A5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RestRoomFinder; + productName = RestRoomFinder; + productReference = 76E1C7962C155EE6006A98A5 /* RestRoomFinder.app */; + productType = "com.apple.product-type.application"; + }; + 76E1C7A52C155EE8006A98A5 /* RestRoomFinderTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 76E1C7BD2C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinderTests" */; + buildPhases = ( + 76E1C7A22C155EE8006A98A5 /* Sources */, + 76E1C7A32C155EE8006A98A5 /* Frameworks */, + 76E1C7A42C155EE8006A98A5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 76E1C7A82C155EE8006A98A5 /* PBXTargetDependency */, + ); + name = RestRoomFinderTests; + productName = RestRoomFinderTests; + productReference = 76E1C7A62C155EE8006A98A5 /* RestRoomFinderTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 76E1C7AF2C155EE8006A98A5 /* RestRoomFinderUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 76E1C7C02C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinderUITests" */; + buildPhases = ( + 76E1C7AC2C155EE8006A98A5 /* Sources */, + 76E1C7AD2C155EE8006A98A5 /* Frameworks */, + 76E1C7AE2C155EE8006A98A5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 76E1C7B22C155EE8006A98A5 /* PBXTargetDependency */, + ); + name = RestRoomFinderUITests; + productName = RestRoomFinderUITests; + productReference = 76E1C7B02C155EE8006A98A5 /* RestRoomFinderUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 76E1C78E2C155EE6006A98A5 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1540; + LastUpgradeCheck = 1540; + TargetAttributes = { + 76E1C7952C155EE6006A98A5 = { + CreatedOnToolsVersion = 15.4; + }; + 76E1C7A52C155EE8006A98A5 = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 76E1C7952C155EE6006A98A5; + }; + 76E1C7AF2C155EE8006A98A5 = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 76E1C7952C155EE6006A98A5; + }; + }; + }; + buildConfigurationList = 76E1C7912C155EE6006A98A5 /* Build configuration list for PBXProject "RestRoomFinder" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 76E1C78D2C155EE6006A98A5; + productRefGroup = 76E1C7972C155EE6006A98A5 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 76E1C7952C155EE6006A98A5 /* RestRoomFinder */, + 76E1C7A52C155EE8006A98A5 /* RestRoomFinderTests */, + 76E1C7AF2C155EE8006A98A5 /* RestRoomFinderUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 76E1C7942C155EE6006A98A5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76E1C7A12C155EE8006A98A5 /* Preview Assets.xcassets in Resources */, + 76E1C79E2C155EE8006A98A5 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7A42C155EE8006A98A5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7AE2C155EE8006A98A5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 76E1C7922C155EE6006A98A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76E1C7D92C156353006A98A5 /* String+Extensions.swift in Sources */, + 76E1C7E72C15671E006A98A5 /* NetworkManager.swift in Sources */, + 76E1C7EC2C156867006A98A5 /* Restroom.swift in Sources */, + 76E1C7DC2C156353006A98A5 /* HomeScreen.swift in Sources */, + 76E1C7F82C156F9A006A98A5 /* LocationManager.swift in Sources */, + 76E1C7E02C156353006A98A5 /* Actions.swift in Sources */, + 76E1C7E42C156353006A98A5 /* Store.swift in Sources */, + 76E1C7E22C156353006A98A5 /* AppReducer.swift in Sources */, + 76E1C7F52C156D7D006A98A5 /* RestroomsMiddleware.swift in Sources */, + 76E1C7FE2C157630006A98A5 /* RestroomListRow.swift in Sources */, + 76E1C7DD2C156353006A98A5 /* Constants.swift in Sources */, + 76E1C7EE2C156968006A98A5 /* RestroomService.swift in Sources */, + 76E1C7F32C156C24006A98A5 /* RestroomReducer.swift in Sources */, + 76E1C7F12C1569EA006A98A5 /* Logger.swift in Sources */, + 76E1C7EA2C156792006A98A5 /* MainNetworkManager.swift in Sources */, + 76E1C8002C1694E2006A98A5 /* ConsoleLogger.swift in Sources */, + 76E1C7DA2C156353006A98A5 /* View+Extensions.swift in Sources */, + 76E1C79A2C155EE6006A98A5 /* RestRoomFinderApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7A22C155EE8006A98A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76E1C7AB2C155EE8006A98A5 /* RestRoomFinderTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 76E1C7AC2C155EE8006A98A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76E1C7B52C155EE8006A98A5 /* RestRoomFinderUITests.swift in Sources */, + 76E1C7B72C155EE8006A98A5 /* RestRoomFinderUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 76E1C7A82C155EE8006A98A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 76E1C7952C155EE6006A98A5 /* RestRoomFinder */; + targetProxy = 76E1C7A72C155EE8006A98A5 /* PBXContainerItemProxy */; + }; + 76E1C7B22C155EE8006A98A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 76E1C7952C155EE6006A98A5 /* RestRoomFinder */; + targetProxy = 76E1C7B12C155EE8006A98A5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 76E1C7B82C155EE8006A98A5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 76E1C7B92C155EE8006A98A5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 76E1C7BB2C155EE8006A98A5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"RestRoomFinder/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RestRoomFinder/Info.plist; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Restroom Finder requires access to your location."; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Restroom Finder requires access to your location."; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinder; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 76E1C7BC2C155EE8006A98A5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"RestRoomFinder/Preview Content\""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = RestRoomFinder/Info.plist; + INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "Restroom Finder requires access to your location."; + INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "Restroom Finder requires access to your location."; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UIStatusBarStyle = UIStatusBarStyleLightContent; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinder; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 76E1C7BE2C155EE8006A98A5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinderTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RestRoomFinder.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/RestRoomFinder"; + }; + name = Debug; + }; + 76E1C7BF2C155EE8006A98A5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinderTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/RestRoomFinder.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/RestRoomFinder"; + }; + name = Release; + }; + 76E1C7C12C155EE8006A98A5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinderUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = RestRoomFinder; + }; + name = Debug; + }; + 76E1C7C22C155EE8006A98A5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.takasurazeem.RestRoomFinderUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = RestRoomFinder; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 76E1C7912C155EE6006A98A5 /* Build configuration list for PBXProject "RestRoomFinder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76E1C7B82C155EE8006A98A5 /* Debug */, + 76E1C7B92C155EE8006A98A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 76E1C7BA2C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinder" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76E1C7BB2C155EE8006A98A5 /* Debug */, + 76E1C7BC2C155EE8006A98A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 76E1C7BD2C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinderTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76E1C7BE2C155EE8006A98A5 /* Debug */, + 76E1C7BF2C155EE8006A98A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 76E1C7C02C155EE8006A98A5 /* Build configuration list for PBXNativeTarget "RestRoomFinderUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76E1C7C12C155EE8006A98A5 /* Debug */, + 76E1C7C22C155EE8006A98A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 76E1C78E2C155EE6006A98A5 /* Project object */; +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..13613e3 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/String+Extensions.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/String+Extensions.swift new file mode 100755 index 0000000..cc9ede6 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/String+Extensions.swift @@ -0,0 +1,11 @@ + + +import Foundation + +extension String { + + func encodeURL() -> String? { + return self.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) + } + +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/View+Extensions.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/View+Extensions.swift new file mode 100755 index 0000000..9970605 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Extensions/View+Extensions.swift @@ -0,0 +1,10 @@ + + +import Foundation +import SwiftUI + +extension View { + func embedInNavigationView() -> some View { + NavigationView { self } + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Info.plist b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Info.plist new file mode 100755 index 0000000..f7422bf --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Info.plist @@ -0,0 +1,25 @@ + + + + + + NSLocationUsageDescription + $(PRODUCT_NAME) location use + + + NSLocationWhenInUseUsageDescription + $(PRODUCT_NAME) location use + + + NSLocationAlwaysUsageDescription + $(PRODUCT_NAME) always uses location + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/LocationManager/LocationManager.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/LocationManager/LocationManager.swift new file mode 100755 index 0000000..6146359 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/LocationManager/LocationManager.swift @@ -0,0 +1,46 @@ +// +// LocationManager.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation +import CoreLocation + +class LocationManager: NSObject, ObservableObject { + private let locationManager = CLLocationManager() + @Published var location: CLLocation? = nil + + override init() { + super.init() + + locationManager.delegate = self + locationManager.desiredAccuracy = kCLLocationAccuracyBest + locationManager.distanceFilter = kCLHeadingFilterNone + locationManager.requestWhenInUseAuthorization() + locationManager.startUpdatingLocation() + } + + func updateLocation() { + locationManager.startUpdatingLocation() + } +} + +extension LocationManager: CLLocationManagerDelegate { + func locationManager( + _ manager: CLLocationManager, + didUpdateLocations locations: [CLLocation] + ) { + guard let location = locations.last else { + locationManager.stopUpdatingLocation() + return + } + + DispatchQueue.main.async { + self.location = location + } + + locationManager.stopUpdatingLocation() + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/ConsoleLogger.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/ConsoleLogger.swift new file mode 100755 index 0000000..4d989f3 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/ConsoleLogger.swift @@ -0,0 +1,49 @@ +// +// ConsoleLogger.swift +// RestRoomFinder +// ConsoleLogger to the project that leverages Xcode and Swift's Unified Logging feature. + +// Created by Yilong Chen on 10/06/2024. +// + +import os +import Foundation + +class ConsoleLogger: Logger { + private let subsystem: String + private let category: String + private let logger: OSLog + + init( + subsystem: String = Bundle.main.bundleIdentifier ?? "default.subsystem", + category: String + ) { + self.subsystem = subsystem + self.category = category + self.logger = OSLog(subsystem: subsystem, category: category) + } + + func debug(_ message: String) { + #if DEBUG + os_log("%{public}@", log: logger, type: .debug, message) + #endif + } + + func info(_ message: String) { + #if DEBUG + os_log("%{public}@", log: logger, type: .info, message) + #endif + } + + func error(_ message: String) { + #if DEBUG + os_log("%{public}@", log: logger, type: .error, message) + #endif + } + + func fault(_ message: String) { + #if DEBUG + os_log("%{public}@", log: logger, type: .fault, message) + #endif + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/Logger.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/Logger.swift new file mode 100755 index 0000000..20739d0 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Logger/Logger.swift @@ -0,0 +1,15 @@ +// +// Logger.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +public protocol Logger { + func debug(_ message: String) + func info(_ message: String) + func error(_ message: String) + func fault(_ message: String) +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/MainNetworkManager.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/MainNetworkManager.swift new file mode 100755 index 0000000..b93ad2d --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/MainNetworkManager.swift @@ -0,0 +1,59 @@ +// +// MainNetworkManager.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +// Main implementation of Network Manager +struct MainNetworkManager: NetworkManager { + + // Generic request function + private func request( + url: URL, + method: HTTPMethod, + body: Data? = nil + ) async throws -> T { + var request = URLRequest(url: url) + request.httpMethod = method.rawValue + request.httpBody = body + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + + let (data, response) = try await URLSession.shared.data(for: request) + + guard let httpResponse = response as? HTTPURLResponse, 200..<300 ~= httpResponse.statusCode else { + throw NetworkError.requestFailed + } + + do { + let decodedResponse = try JSONDecoder().decode(T.self, from: data) + return decodedResponse + } catch { + throw NetworkError.decodingFailed + } + } + + // GET Request + func get( + urlString: String + ) async throws -> T { + guard let url = URL(string: urlString) else { + throw NetworkError.invalidURL + } + return try await request(url: url, method: .GET) + } + + // POST Request + func post( + urlString: String, + body: U + ) async throws -> T { + guard let url = URL(string: urlString) else { + throw NetworkError.invalidURL + } + let bodyData = try JSONEncoder().encode(body) + return try await request(url: url, method: .POST, body: bodyData) + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/NetworkManager.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/NetworkManager.swift new file mode 100755 index 0000000..97a5b05 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Managers/Network Manager/NetworkManager.swift @@ -0,0 +1,28 @@ +// +// NetworkManager.swift +// RestRoomFinder +// NetworkManager class that is async-await based +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +// Enum for HTTP Methods +enum HTTPMethod: String { + case GET + case POST +} + +// Enum for Network Errors +enum NetworkError: Error { + case invalidURL + case requestFailed + case invalidResponse + case decodingFailed +} + +// Protocol for Network Manager +protocol NetworkManager { + func get(urlString: String) async throws -> T + func post(urlString: String, body: U) async throws -> T +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Models/Restroom.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Models/Restroom.swift new file mode 100755 index 0000000..f672696 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Models/Restroom.swift @@ -0,0 +1,42 @@ +// +// Restroom.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +struct Restroom: Decodable, Identifiable { + let id: Int + let name: String? + let distance: Double + let street: String + let city: String + let state: String + let accessible: Bool + let unisex: Bool + let directions: String? + let comment: String? + let latitude: Double + let longitude: Double + + var addess: String { + "\(street), \(city) \(state)" + } + + static let example = Restroom( + id: 451, + name: "Finca Son Verdera Mallorca", + distance: 0.00014083525406852245, + street: "en el campo", + city: "San Francisco", + state: "CA", + accessible: true, + unisex: true, + directions: "http://www.finca-sonverdera.de", + comment: "also wlan access", + latitude: 37.7749295, + longitude: -122.4194155 + ) +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/RestRoomFinderApp.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/RestRoomFinderApp.swift new file mode 100755 index 0000000..00caef5 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/RestRoomFinderApp.swift @@ -0,0 +1,41 @@ +// +// RestRoomFinderApp.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import SwiftUI + +@main +struct RestRoomFinderApp: App { + + init() { + configureTheme() + } + + var body: some Scene { + + let store = Store( + reducer: appReducer, + state: AppState(), + middlewares: [restroomMiddleware()] + ) + + WindowGroup { + HomeScreen() + .environmentObject(store) + } + } + + private func configureTheme() { + UINavigationBar + .appearance() + .backgroundColor = UIColor( + displayP3Red: 44/255, + green: 62/255, + blue: 80/255, + alpha: 1.0 + ) + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Services/RestroomService.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Services/RestroomService.swift new file mode 100755 index 0000000..39da3a8 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Services/RestroomService.swift @@ -0,0 +1,23 @@ +// +// RestroomService.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +struct RestroomService { + + func getRestRoomByLatLong(lat: Double, long: Double) async throws -> [Restroom]? { + let urlString = Constants.Urls.restroomsByLatAndLng(lat: lat, lng: long) + + logger.debug(urlString) + + let restrooms: [Restroom] = try await networkManager.get(urlString: urlString) + return restrooms + } + + let logger: Logger + let networkManager: NetworkManager +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Actions/Actions.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Actions/Actions.swift new file mode 100755 index 0000000..2259c1d --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Actions/Actions.swift @@ -0,0 +1,19 @@ +// +// Actions.swift +// RestRoomFinder +// +// Created by Yilong Chen on 10/15/24. +// + +import Foundation + +protocol Action { } + +struct FetchRestroomsAction: Action { + let latitude: Double + let longitude: Double +} + +struct SetRestroomsAction: Action { + let restrooms: [Restroom] +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Middlewares/RestroomsMiddleware.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Middlewares/RestroomsMiddleware.swift new file mode 100755 index 0000000..e51272a --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Middlewares/RestroomsMiddleware.swift @@ -0,0 +1,37 @@ +// +// RestroomsMiddleware.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +func restroomMiddleware() -> Middleware { + return { + state, + action, + dispatch in + switch action { + case let action as FetchRestroomsAction: + fetchRestrooms(action: action, dispatch: dispatch) + default: + break + } + } +} + +private func fetchRestrooms(action: FetchRestroomsAction, dispatch: @escaping Dispatcher) { + let logger = ConsoleLogger(category: "restRoomMiddleware") + Task { + do { + let restrooms = try await RestroomService( + logger: logger, + networkManager: MainNetworkManager() + ).getRestRoomByLatLong(lat: action.latitude, long: action.longitude) + dispatch(SetRestroomsAction(restrooms: restrooms ?? [])) + } catch { + logger.error(error.localizedDescription) + } + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/AppReducer.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/AppReducer.swift new file mode 100755 index 0000000..fcd9fe2 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/AppReducer.swift @@ -0,0 +1,18 @@ +// +// AppReducer.swift +// CombiningReducers +// +// Created by Yilong Chen on 9/15/24. +// + +import Foundation + +func appReducer( + _ state: AppState, + _ action: Action +) -> AppState { + + var state = state + state.restrooms = restroomsReducer(state.restrooms, action) + return state +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/RestroomReducer.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/RestroomReducer.swift new file mode 100755 index 0000000..5419f9d --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Reducers/RestroomReducer.swift @@ -0,0 +1,22 @@ +// +// RestroomReducer.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import Foundation + +func restroomsReducer( + _ state: RestRoomState, + _ action: Action +) -> RestRoomState { + var state = state + switch action { + case let action as SetRestroomsAction: + state.restrooms = action.restrooms + default: + break + } + return state +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Store.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Store.swift new file mode 100755 index 0000000..5852f9d --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Store/Store.swift @@ -0,0 +1,49 @@ +// +// Store.swift +// HelloRedux +// +// Created by Yilong Chen on 9/14/24. +// + +import Foundation + +typealias Dispatcher = (Action) -> Void + +typealias Reducer = (_ state: State, _ action: Action) -> State +typealias Middleware = (StoreState, Action, @escaping Dispatcher) -> Void + +protocol ReduxState { } + +struct AppState: ReduxState { + var restrooms: RestRoomState = RestRoomState() +} + +struct RestRoomState: ReduxState { + var restrooms: [Restroom] = [] +} + +class Store: ObservableObject { + + var reducer: Reducer + @Published var state: StoreState + var middlewares: [Middleware] + + init(reducer: @escaping Reducer, state: StoreState, + middlewares: [Middleware] = []) { + self.reducer = reducer + self.state = state + self.middlewares = middlewares + } + + func dispatch(action: Action) { + DispatchQueue.main.async { + self.state = self.reducer(self.state, action) + } + + // run all middlewares + middlewares.forEach { middleware in + middleware(state, action, dispatch) + } + } + +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Utils/Constants.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Utils/Constants.swift new file mode 100755 index 0000000..bb893ae --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Utils/Constants.swift @@ -0,0 +1,11 @@ + + +import Foundation + +struct Constants { + struct Urls { + static func restroomsByLatAndLng(lat: Double, lng: Double) -> String { + "https://www.refugerestrooms.org/api/v1/restrooms/by_location?lat=\(lat)&lng=\(lng)" + } + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/HomeScreen.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/HomeScreen.swift new file mode 100755 index 0000000..76347c4 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/HomeScreen.swift @@ -0,0 +1,82 @@ +// +// Actions.swift +// RestRoomFinder +// +// Created by Yilong Chen on 10/15/24. +// + +import SwiftUI +import Combine + +struct HomeScreen: View { + + @EnvironmentObject var store: Store + + @ObservedObject private var locationManager = LocationManager() + @State private var cancellables: AnyCancellable? = nil + + struct Props { + let restrooms: [Restroom] + let onFetchRestroomsByLatLong: (Double, Double) -> Void + } + + private func map(state: RestRoomState) -> Props { + Props(restrooms: state.restrooms) { lat, long in + store.dispatch(action: FetchRestroomsAction(latitude: lat, longitude: long)) + } + } + + var body: some View { + let props = map(state: store.state.restrooms) + VStack(alignment: .leading) { + HStack { + EmptyView() + } + .frame(maxWidth: .infinity, maxHeight: 44) + Spacer() + HStack { + Text("Restrooms") + .foregroundColor(.white) + .font(.largeTitle) + Spacer() + Button { + locationManager.updateLocation() + } label: { + Image(systemName: "arrow.clockwise.circle") + .font(.title) + .foregroundColor(.white) + } + } + .padding() + List(props.restrooms) { restroom in + RestroomListRow(restroom: restroom) + } + .buttonStyle(PlainButtonStyle()) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(Color(#colorLiteral(red: 0.880972445, green: 0.3729454875, blue: 0.2552506924, alpha: 1))) + .edgesIgnoringSafeArea(.all) + .onAppear { + self.cancellables = locationManager.$location.sink { location in + if let location { + props.onFetchRestroomsByLatLong( + location.coordinate.latitude, + location.coordinate.longitude + ) + } + } + } + } +} + +struct HomeScreen_Previews: PreviewProvider { + static var previews: some View { + let store = Store( + reducer: appReducer, + state: AppState(), + middlewares: [restroomMiddleware()] + ) + HomeScreen() + .environmentObject(store) + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/RestroomListRow.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/RestroomListRow.swift new file mode 100755 index 0000000..bbe8302 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinder/Views/RestroomListRow.swift @@ -0,0 +1,60 @@ +// +// RestroomListRow.swift +// RestRoomFinder +// +// Created by Yilong Chen on 09/06/2024. +// + +import SwiftUI + +struct RestroomListRow: View { + let restroom: Restroom + // Should have been injected, infact, should be in the viewModel? + let logger = ConsoleLogger(category: "URL") + var body: some View { + VStack(alignment: .leading, spacing: 10) { + HStack { + Text(restroom.name ?? "Name not available") + .font(.headline) + Spacer() + Text(String(format: "%.2f miles", restroom.distance)) + } + .padding(.top, 10) + Text(restroom.addess) + .font(.subheadline) + .opacity(0.5) + Button("Directions") { + guard let targetURL = URL(string: "https://maps.apple.com/?address=\(restroom.addess.encodeURL() ?? "")") else { + logger.debug("https://maps.apple.com/?address=\(restroom.addess.encodeURL() ?? "")") + return + } + logger.debug(targetURL.absoluteString) + if UIApplication.shared.canOpenURL(targetURL) { + UIApplication.shared.open(targetURL) + } else { + logger.error("Could not open URL") + } + } + .font(.caption) + .foregroundColor(.white) + .padding(6) + .background(Color(#colorLiteral(red: 0.184266597, green: 0.8003296256, blue: 0.4435204864, alpha: 1))) + .cornerRadius(6) + + Text(restroom.comment ?? "") + .font(.footnote) + + HStack { + Text(restroom.accessible ? "♿️" : "") + } + } + } +} + +struct RestroomListRow_Previews: PreviewProvider { + static var previews: some View { + RestroomListRow( + restroom: .example + ) + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderTests/RestRoomFinderTests.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderTests/RestRoomFinderTests.swift new file mode 100755 index 0000000..cefef23 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderTests/RestRoomFinderTests.swift @@ -0,0 +1,36 @@ +// +// RestRoomFinderTests.swift +// RestRoomFinderTests +// +// Created by Yilong Chen on 09/06/2024. +// + +import XCTest +@testable import RestRoomFinder + +final class RestRoomFinderTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITests.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITests.swift new file mode 100755 index 0000000..e28b2b2 --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITests.swift @@ -0,0 +1,41 @@ +// +// RestRoomFinderUITests.swift +// RestRoomFinderUITests +// +// Created by Yilong Chen on 09/06/2024. +// + +import XCTest + +final class RestRoomFinderUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITestsLaunchTests.swift b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITestsLaunchTests.swift new file mode 100755 index 0000000..42de6ce --- /dev/null +++ b/SwiftUI/SwiftUIRedux_RestRoomFinder/RestRoomFinderUITests/RestRoomFinderUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// RestRoomFinderUITestsLaunchTests.swift +// RestRoomFinderUITests +// +// Created by Yilong Chen on 09/06/2024. +// + +import XCTest + +final class RestRoomFinderUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData.xcodeproj/project.pbxproj b/SwiftUI/SwiftUI_CoreData/HelloCoreData.xcodeproj/project.pbxproj new file mode 100755 index 0000000..4c8eb2f --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 8D182DA025D1E37100E05852 /* HelloCoreDataApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D182D9F25D1E37100E05852 /* HelloCoreDataApp.swift */; }; + 8D182DA225D1E37100E05852 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D182DA125D1E37100E05852 /* ContentView.swift */; }; + 8D182DA425D1E37200E05852 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D182DA325D1E37200E05852 /* Assets.xcassets */; }; + 8D182DA725D1E37200E05852 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8D182DA625D1E37200E05852 /* Preview Assets.xcassets */; }; + 8D182DB125D1E67300E05852 /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D182DB025D1E67300E05852 /* CoreDataManager.swift */; }; + 8D182DB625D1E6C800E05852 /* HelloCoreData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 8D182DB425D1E6C800E05852 /* HelloCoreData.xcdatamodeld */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 8D182D9C25D1E37100E05852 /* HelloCoreData.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloCoreData.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D182D9F25D1E37100E05852 /* HelloCoreDataApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelloCoreDataApp.swift; sourceTree = ""; }; + 8D182DA125D1E37100E05852 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 8D182DA325D1E37200E05852 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 8D182DA625D1E37200E05852 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 8D182DA825D1E37200E05852 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8D182DB025D1E67300E05852 /* CoreDataManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataManager.swift; sourceTree = ""; }; + 8D182DB525D1E6C800E05852 /* HelloCoreData.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = HelloCoreData.xcdatamodel; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D182D9925D1E37100E05852 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8D182D9325D1E37100E05852 = { + isa = PBXGroup; + children = ( + 8D182D9E25D1E37100E05852 /* HelloCoreData */, + 8D182D9D25D1E37100E05852 /* Products */, + ); + sourceTree = ""; + }; + 8D182D9D25D1E37100E05852 /* Products */ = { + isa = PBXGroup; + children = ( + 8D182D9C25D1E37100E05852 /* HelloCoreData.app */, + ); + name = Products; + sourceTree = ""; + }; + 8D182D9E25D1E37100E05852 /* HelloCoreData */ = { + isa = PBXGroup; + children = ( + 8D182DAF25D1E66500E05852 /* Managers */, + 8D182D9F25D1E37100E05852 /* HelloCoreDataApp.swift */, + 8D182DA125D1E37100E05852 /* ContentView.swift */, + 8D182DA325D1E37200E05852 /* Assets.xcassets */, + 8D182DA825D1E37200E05852 /* Info.plist */, + 8D182DA525D1E37200E05852 /* Preview Content */, + 8D182DB425D1E6C800E05852 /* HelloCoreData.xcdatamodeld */, + ); + path = HelloCoreData; + sourceTree = ""; + }; + 8D182DA525D1E37200E05852 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 8D182DA625D1E37200E05852 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 8D182DAF25D1E66500E05852 /* Managers */ = { + isa = PBXGroup; + children = ( + 8D182DB025D1E67300E05852 /* CoreDataManager.swift */, + ); + path = Managers; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D182D9B25D1E37100E05852 /* HelloCoreData */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8D182DAB25D1E37200E05852 /* Build configuration list for PBXNativeTarget "HelloCoreData" */; + buildPhases = ( + 8D182D9825D1E37100E05852 /* Sources */, + 8D182D9925D1E37100E05852 /* Frameworks */, + 8D182D9A25D1E37100E05852 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HelloCoreData; + productName = HelloCoreData; + productReference = 8D182D9C25D1E37100E05852 /* HelloCoreData.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8D182D9425D1E37100E05852 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1230; + LastUpgradeCheck = 1230; + TargetAttributes = { + 8D182D9B25D1E37100E05852 = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 8D182D9725D1E37100E05852 /* Build configuration list for PBXProject "HelloCoreData" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8D182D9325D1E37100E05852; + productRefGroup = 8D182D9D25D1E37100E05852 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D182D9B25D1E37100E05852 /* HelloCoreData */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D182D9A25D1E37100E05852 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D182DA725D1E37200E05852 /* Preview Assets.xcassets in Resources */, + 8D182DA425D1E37200E05852 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D182D9825D1E37100E05852 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D182DB125D1E67300E05852 /* CoreDataManager.swift in Sources */, + 8D182DB625D1E6C800E05852 /* HelloCoreData.xcdatamodeld in Sources */, + 8D182DA225D1E37100E05852 /* ContentView.swift in Sources */, + 8D182DA025D1E37100E05852 /* HelloCoreDataApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8D182DA925D1E37200E05852 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 8D182DAA25D1E37200E05852 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8D182DAC25D1E37200E05852 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"HelloCoreData/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = HelloCoreData/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloCoreData; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8D182DAD25D1E37200E05852 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"HelloCoreData/Preview Content\""; + DEVELOPMENT_TEAM = B2Q8EGNCQA; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = HelloCoreData/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.azamsharp.HelloCoreData; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8D182D9725D1E37100E05852 /* Build configuration list for PBXProject "HelloCoreData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8D182DA925D1E37200E05852 /* Debug */, + 8D182DAA25D1E37200E05852 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8D182DAB25D1E37200E05852 /* Build configuration list for PBXNativeTarget "HelloCoreData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8D182DAC25D1E37200E05852 /* Debug */, + 8D182DAD25D1E37200E05852 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 8D182DB425D1E6C800E05852 /* HelloCoreData.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 8D182DB525D1E6C800E05852 /* HelloCoreData.xcdatamodel */, + ); + currentVersion = 8D182DB525D1E6C800E05852 /* HelloCoreData.xcdatamodel */; + path = HelloCoreData.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = 8D182D9425D1E37100E05852 /* Project object */; +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AccentColor.colorset/Contents.json b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100755 index 0000000..eb87897 --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AppIcon.appiconset/Contents.json b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100755 index 0000000..9221b9b --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/Contents.json b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/ContentView.swift b/SwiftUI/SwiftUI_CoreData/HelloCoreData/ContentView.swift new file mode 100755 index 0000000..3750608 --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/ContentView.swift @@ -0,0 +1,45 @@ +// +// ContentView.swift +// HelloCoreData +// +// Created by Yilong Chen on 2/8/24. +// + +import SwiftUI + +struct ContentView: View { + + let coreDM: CoreDataManager + @State private var movieName: String = "" + @State private var movies: [Movie] = [Movie]() + + private func populateMovies() { + movies = coreDM.getAllMovies() + } + + var body: some View { + VStack { + TextField("Enter movie name", text: $movieName) + .textFieldStyle(RoundedBorderTextFieldStyle()) + Button("Save") { + coreDM.saveMovie(name: movieName) + } + + List(movies, id: \.self) { movie in + Text(movie.title!) + }.listStyle(PlainListStyle()) + + Spacer() + + }.padding() + .onAppear(perform: { + populateMovies() + }) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView(coreDM: CoreDataManager()) + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreData.xcdatamodeld/HelloCoreData.xcdatamodel/contents b/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreData.xcdatamodeld/HelloCoreData.xcdatamodel/contents new file mode 100755 index 0000000..7021bc1 --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreData.xcdatamodeld/HelloCoreData.xcdatamodel/contents @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreDataApp.swift b/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreDataApp.swift new file mode 100755 index 0000000..c382e5e --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/HelloCoreDataApp.swift @@ -0,0 +1,17 @@ +// +// HelloCoreDataApp.swift +// HelloCoreData +// +// Created by Yilong Chen on 2/8/24. +// + +import SwiftUI + +@main +struct HelloCoreDataApp: App { + var body: some Scene { + WindowGroup { + ContentView(coreDM: CoreDataManager()) + } + } +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Info.plist b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Info.plist new file mode 100755 index 0000000..efc211a --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Info.plist @@ -0,0 +1,50 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Managers/CoreDataManager.swift b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Managers/CoreDataManager.swift new file mode 100755 index 0000000..e9b1c1a --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Managers/CoreDataManager.swift @@ -0,0 +1,51 @@ +// +// CoreDataManager.swift +// HelloCoreData +// +// Created by Yilong Chen on 2/8/24. +// + +import CoreData + +class CoreDataManager { + + let persistentContainer: NSPersistentContainer + + init() { + persistentContainer = NSPersistentContainer(name: "HelloCoreData") + persistentContainer.loadPersistentStores { (description, error) in + if let error = error { + fatalError("Core Data store failed to initialize \(error.localizedDescription)") + } + } + + let dirPaths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) + print(dirPaths[0]) + } + + func getAllMovies() -> [Movie] { + + let fetchRequest: NSFetchRequest = Movie.fetchRequest() + + do { + return try persistentContainer.viewContext.fetch(fetchRequest) + } catch { + return [] + } + } + + func saveMovie(name: String) { + + let movie = Movie(context: persistentContainer.viewContext) + + movie.title = name + + do { + try persistentContainer.viewContext.save() + print("Movie Saved Successfully") + } catch { + print("Failed to save movie \(error)") + } + } + +} diff --git a/SwiftUI/SwiftUI_CoreData/HelloCoreData/Preview Content/Preview Assets.xcassets/Contents.json b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100755 index 0000000..73c0059 --- /dev/null +++ b/SwiftUI/SwiftUI_CoreData/HelloCoreData/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/assets/16911993105830.jpg b/assets/16911993105830.jpg new file mode 100644 index 0000000..f4ce580 Binary files /dev/null and b/assets/16911993105830.jpg differ diff --git a/assets/16911993775698.jpg b/assets/16911993775698.jpg new file mode 100644 index 0000000..6cd6b3c Binary files /dev/null and b/assets/16911993775698.jpg differ diff --git a/assets/16911993939541.jpg b/assets/16911993939541.jpg new file mode 100644 index 0000000..ffa3878 Binary files /dev/null and b/assets/16911993939541.jpg differ diff --git a/assets/16911994019477.jpg b/assets/16911994019477.jpg new file mode 100644 index 0000000..d29cb97 Binary files /dev/null and b/assets/16911994019477.jpg differ diff --git a/assets/16911994188320.jpg b/assets/16911994188320.jpg new file mode 100644 index 0000000..988f4c9 Binary files /dev/null and b/assets/16911994188320.jpg differ diff --git a/assets/16911994290631.jpg b/assets/16911994290631.jpg new file mode 100644 index 0000000..a6d2ad1 Binary files /dev/null and b/assets/16911994290631.jpg differ diff --git a/assets/16911994377956.jpg b/assets/16911994377956.jpg new file mode 100644 index 0000000..953d689 Binary files /dev/null and b/assets/16911994377956.jpg differ diff --git a/assets/16911994601308.jpg b/assets/16911994601308.jpg new file mode 100644 index 0000000..ebec05d Binary files /dev/null and b/assets/16911994601308.jpg differ diff --git a/assets/16911994672006.jpg b/assets/16911994672006.jpg new file mode 100644 index 0000000..e219e05 Binary files /dev/null and b/assets/16911994672006.jpg differ diff --git a/assets/16911994768336.jpg b/assets/16911994768336.jpg new file mode 100644 index 0000000..af5db85 Binary files /dev/null and b/assets/16911994768336.jpg differ diff --git a/assets/16911994872119.jpg b/assets/16911994872119.jpg new file mode 100644 index 0000000..2d7ea82 Binary files /dev/null and b/assets/16911994872119.jpg differ diff --git a/assets/16911994941254.jpg b/assets/16911994941254.jpg new file mode 100644 index 0000000..ae34d4b Binary files /dev/null and b/assets/16911994941254.jpg differ diff --git a/assets/16911995736181.jpg b/assets/16911995736181.jpg new file mode 100644 index 0000000..85d1f0d Binary files /dev/null and b/assets/16911995736181.jpg differ diff --git a/assets/16911995859741.jpg b/assets/16911995859741.jpg new file mode 100644 index 0000000..e6978a8 Binary files /dev/null and b/assets/16911995859741.jpg differ diff --git a/assets/16911995927355.jpg b/assets/16911995927355.jpg new file mode 100644 index 0000000..a231082 Binary files /dev/null and b/assets/16911995927355.jpg differ diff --git a/assets/16911996015251.jpg b/assets/16911996015251.jpg new file mode 100644 index 0000000..d0d1d7f Binary files /dev/null and b/assets/16911996015251.jpg differ diff --git a/assets/16911996112667.jpg b/assets/16911996112667.jpg new file mode 100644 index 0000000..763feb4 Binary files /dev/null and b/assets/16911996112667.jpg differ diff --git a/assets/16911996216316.jpg b/assets/16911996216316.jpg new file mode 100644 index 0000000..0c02c1f Binary files /dev/null and b/assets/16911996216316.jpg differ diff --git a/assets/16911996296998.jpg b/assets/16911996296998.jpg new file mode 100644 index 0000000..417a0e7 Binary files /dev/null and b/assets/16911996296998.jpg differ diff --git a/assets/16911996385220.jpg b/assets/16911996385220.jpg new file mode 100644 index 0000000..de7c091 Binary files /dev/null and b/assets/16911996385220.jpg differ diff --git a/assets/16911996457612.jpg b/assets/16911996457612.jpg new file mode 100644 index 0000000..f5d50a6 Binary files /dev/null and b/assets/16911996457612.jpg differ diff --git a/assets/16911996525270.jpg b/assets/16911996525270.jpg new file mode 100644 index 0000000..59afb9c Binary files /dev/null and b/assets/16911996525270.jpg differ diff --git a/assets/16911996627336.jpg b/assets/16911996627336.jpg new file mode 100644 index 0000000..466aa6a Binary files /dev/null and b/assets/16911996627336.jpg differ diff --git a/assets/16911996707498.jpg b/assets/16911996707498.jpg new file mode 100644 index 0000000..9df567e Binary files /dev/null and b/assets/16911996707498.jpg differ diff --git a/assets/16911996765839.jpg b/assets/16911996765839.jpg new file mode 100644 index 0000000..19a1419 Binary files /dev/null and b/assets/16911996765839.jpg differ diff --git a/assets/16911996818935.jpg b/assets/16911996818935.jpg new file mode 100644 index 0000000..8289f82 Binary files /dev/null and b/assets/16911996818935.jpg differ diff --git a/assets/16911997093380.jpg b/assets/16911997093380.jpg new file mode 100644 index 0000000..fe84de9 Binary files /dev/null and b/assets/16911997093380.jpg differ diff --git a/assets/16912025406113.jpg b/assets/16912025406113.jpg new file mode 100644 index 0000000..9cbff87 Binary files /dev/null and b/assets/16912025406113.jpg differ diff --git a/assets/16912026477007.jpg b/assets/16912026477007.jpg new file mode 100644 index 0000000..ad49b4c Binary files /dev/null and b/assets/16912026477007.jpg differ diff --git a/assets/16912073172453.jpg b/assets/16912073172453.jpg new file mode 100644 index 0000000..3a29045 Binary files /dev/null and b/assets/16912073172453.jpg differ diff --git a/assets/16912073267482.jpg b/assets/16912073267482.jpg new file mode 100644 index 0000000..c0f54e7 Binary files /dev/null and b/assets/16912073267482.jpg differ diff --git a/assets/16912073397523.jpg b/assets/16912073397523.jpg new file mode 100644 index 0000000..f93eb4f Binary files /dev/null and b/assets/16912073397523.jpg differ diff --git a/assets/16912073494698.jpg b/assets/16912073494698.jpg new file mode 100644 index 0000000..6c404b9 Binary files /dev/null and b/assets/16912073494698.jpg differ diff --git a/assets/16912073606938.jpg b/assets/16912073606938.jpg new file mode 100644 index 0000000..eca6fbe Binary files /dev/null and b/assets/16912073606938.jpg differ diff --git a/assets/16912073940590.jpg b/assets/16912073940590.jpg new file mode 100644 index 0000000..1f65875 Binary files /dev/null and b/assets/16912073940590.jpg differ diff --git a/assets/16912074008587.jpg b/assets/16912074008587.jpg new file mode 100644 index 0000000..728e035 Binary files /dev/null and b/assets/16912074008587.jpg differ diff --git a/assets/16912074108843.jpg b/assets/16912074108843.jpg new file mode 100644 index 0000000..6b91d63 Binary files /dev/null and b/assets/16912074108843.jpg differ diff --git a/assets/16912074297283.jpg b/assets/16912074297283.jpg new file mode 100644 index 0000000..a7e5d97 Binary files /dev/null and b/assets/16912074297283.jpg differ diff --git a/assets/16912074367818.jpg b/assets/16912074367818.jpg new file mode 100644 index 0000000..7142165 Binary files /dev/null and b/assets/16912074367818.jpg differ diff --git a/assets/CleanArchitecture/CleanArchitectureQ1.jpg b/assets/CleanArchitecture/CleanArchitectureQ1.jpg new file mode 100755 index 0000000..7efd3e7 Binary files /dev/null and b/assets/CleanArchitecture/CleanArchitectureQ1.jpg differ diff --git a/assets/CleanArchitecture/CleanArchitectureQ2.jpg b/assets/CleanArchitecture/CleanArchitectureQ2.jpg new file mode 100755 index 0000000..31399ea Binary files /dev/null and b/assets/CleanArchitecture/CleanArchitectureQ2.jpg differ diff --git a/assets/CleanArchitecture/CleanArchitectureQ3.jpg b/assets/CleanArchitecture/CleanArchitectureQ3.jpg new file mode 100755 index 0000000..109c39d Binary files /dev/null and b/assets/CleanArchitecture/CleanArchitectureQ3.jpg differ diff --git a/assets/MVVM_Clean_SOLID/banner_cn.png b/assets/MVVM_Clean_SOLID/banner_cn.png new file mode 100644 index 0000000..3f6286f Binary files /dev/null and b/assets/MVVM_Clean_SOLID/banner_cn.png differ diff --git a/assets/MVVM_Clean_SOLID/banner_en.png b/assets/MVVM_Clean_SOLID/banner_en.png new file mode 100644 index 0000000..23d3c45 Binary files /dev/null and b/assets/MVVM_Clean_SOLID/banner_en.png differ diff --git a/assets/MVVM_Clean_SOLID/cn.png b/assets/MVVM_Clean_SOLID/cn.png new file mode 100644 index 0000000..de6a5d6 Binary files /dev/null and b/assets/MVVM_Clean_SOLID/cn.png differ diff --git a/assets/MVVM_Clean_SOLID/en.png b/assets/MVVM_Clean_SOLID/en.png new file mode 100644 index 0000000..f601787 Binary files /dev/null and b/assets/MVVM_Clean_SOLID/en.png differ diff --git a/assets/MVVM_Clean_SOLID/tca_horizontal_layer.png b/assets/MVVM_Clean_SOLID/tca_horizontal_layer.png new file mode 100644 index 0000000..c4074cb Binary files /dev/null and b/assets/MVVM_Clean_SOLID/tca_horizontal_layer.png differ diff --git a/assets/MVVM_Clean_SOLID/tca_onion_layering.png b/assets/MVVM_Clean_SOLID/tca_onion_layering.png new file mode 100644 index 0000000..9561666 Binary files /dev/null and b/assets/MVVM_Clean_SOLID/tca_onion_layering.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI.jpg b/assets/Property_Wrapper_in_SwiftUI.jpg new file mode 100644 index 0000000..6d85448 Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI.jpg differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios16_code.png b/assets/Property_Wrapper_in_SwiftUI/ios16_code.png new file mode 100755 index 0000000..208389f Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios16_code.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios16_overview.png b/assets/Property_Wrapper_in_SwiftUI/ios16_overview.png new file mode 100755 index 0000000..d0c7ef9 Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios16_overview.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios16_pros_cons.png b/assets/Property_Wrapper_in_SwiftUI/ios16_pros_cons.png new file mode 100755 index 0000000..92e2b7e Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios16_pros_cons.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios17_code.png b/assets/Property_Wrapper_in_SwiftUI/ios17_code.png new file mode 100755 index 0000000..27376d1 Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios17_code.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios17_overview.png b/assets/Property_Wrapper_in_SwiftUI/ios17_overview.png new file mode 100755 index 0000000..c7c30e4 Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios17_overview.png differ diff --git a/assets/Property_Wrapper_in_SwiftUI/ios17_pros_cons.png b/assets/Property_Wrapper_in_SwiftUI/ios17_pros_cons.png new file mode 100755 index 0000000..a2cd854 Binary files /dev/null and b/assets/Property_Wrapper_in_SwiftUI/ios17_pros_cons.png differ diff --git a/assets/SCRUM_PROCESS.jpg b/assets/SCRUM_PROCESS.jpg new file mode 100644 index 0000000..8a51787 Binary files /dev/null and b/assets/SCRUM_PROCESS.jpg differ diff --git a/assets/SwiftUI_and_Combine.png b/assets/SwiftUI_and_Combine.png new file mode 100644 index 0000000..dd6353c Binary files /dev/null and b/assets/SwiftUI_and_Combine.png differ diff --git a/assets/SwiftUI_and_Combine.xmind b/assets/SwiftUI_and_Combine.xmind new file mode 100644 index 0000000..932dde3 Binary files /dev/null and b/assets/SwiftUI_and_Combine.xmind differ diff --git a/assets/SwiftUI_vs_UIKit_Lifecycle_Methods_Difference.jpg b/assets/SwiftUI_vs_UIKit_Lifecycle_Methods_Difference.jpg new file mode 100644 index 0000000..2d6754a Binary files /dev/null and b/assets/SwiftUI_vs_UIKit_Lifecycle_Methods_Difference.jpg differ diff --git a/assets/Swift_practical_Interview_Questions.jpg b/assets/Swift_practical_Interview_Questions.jpg new file mode 100644 index 0000000..53e58dc Binary files /dev/null and b/assets/Swift_practical_Interview_Questions.jpg differ diff --git a/assets/Swift_theory_Interview_Questions.jpg b/assets/Swift_theory_Interview_Questions.jpg new file mode 100644 index 0000000..42766f3 Binary files /dev/null and b/assets/Swift_theory_Interview_Questions.jpg differ diff --git a/assets/TCA_Each_View_has_its_Store_architecture_design_pattern.png b/assets/TCA_Each_View_has_its_Store_architecture_design_pattern.png new file mode 100644 index 0000000..3d7c402 Binary files /dev/null and b/assets/TCA_Each_View_has_its_Store_architecture_design_pattern.png differ diff --git a/assets/TCA_schema_architecture_design_pattern.jpg b/assets/TCA_schema_architecture_design_pattern.jpg new file mode 100644 index 0000000..c97a232 Binary files /dev/null and b/assets/TCA_schema_architecture_design_pattern.jpg differ diff --git a/assets/VIPER_architecture_design_pattern/1.jpg b/assets/VIPER_architecture_design_pattern/1.jpg new file mode 100755 index 0000000..35695bc Binary files /dev/null and b/assets/VIPER_architecture_design_pattern/1.jpg differ diff --git a/assets/VIPER_architecture_design_pattern/VIPER_architecture_design_pattern_model.jpg b/assets/VIPER_architecture_design_pattern/VIPER_architecture_design_pattern_model.jpg new file mode 100755 index 0000000..659dba6 Binary files /dev/null and b/assets/VIPER_architecture_design_pattern/VIPER_architecture_design_pattern_model.jpg differ diff --git a/assets/VIPER_architecture_design_pattern/viper_architecture_design_pattern_en.jpg b/assets/VIPER_architecture_design_pattern/viper_architecture_design_pattern_en.jpg new file mode 100755 index 0000000..13aca19 Binary files /dev/null and b/assets/VIPER_architecture_design_pattern/viper_architecture_design_pattern_en.jpg differ diff --git a/assets/VIPER_architecture_design_pattern_model.gif b/assets/VIPER_architecture_design_pattern_model.gif new file mode 100644 index 0000000..75ceebd Binary files /dev/null and b/assets/VIPER_architecture_design_pattern_model.gif differ diff --git a/assets/asynchronous_APIs_in_iOS/cn.jpg b/assets/asynchronous_APIs_in_iOS/cn.jpg new file mode 100755 index 0000000..bfa7f73 Binary files /dev/null and b/assets/asynchronous_APIs_in_iOS/cn.jpg differ diff --git a/assets/asynchronous_APIs_in_iOS/en.jpg b/assets/asynchronous_APIs_in_iOS/en.jpg new file mode 100755 index 0000000..3974638 Binary files /dev/null and b/assets/asynchronous_APIs_in_iOS/en.jpg differ diff --git a/assets/closure_vs_block/banner.jpg b/assets/closure_vs_block/banner.jpg new file mode 100755 index 0000000..8b0092d Binary files /dev/null and b/assets/closure_vs_block/banner.jpg differ diff --git a/assets/closure_vs_block/closure_vs_block_map.jpg b/assets/closure_vs_block/closure_vs_block_map.jpg new file mode 100755 index 0000000..186317f Binary files /dev/null and b/assets/closure_vs_block/closure_vs_block_map.jpg differ diff --git a/assets/closure_vs_block/closure_vs_block_question1.jpg b/assets/closure_vs_block/closure_vs_block_question1.jpg new file mode 100755 index 0000000..6fc055e Binary files /dev/null and b/assets/closure_vs_block/closure_vs_block_question1.jpg differ diff --git a/assets/closure_vs_block/closure_vs_block_question2.jpg b/assets/closure_vs_block/closure_vs_block_question2.jpg new file mode 100755 index 0000000..5e8cc05 Binary files /dev/null and b/assets/closure_vs_block/closure_vs_block_question2.jpg differ diff --git a/assets/closure_vs_block/closure_vs_block_question3.jpg b/assets/closure_vs_block/closure_vs_block_question3.jpg new file mode 100755 index 0000000..7e25941 Binary files /dev/null and b/assets/closure_vs_block/closure_vs_block_question3.jpg differ diff --git "a/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/data.plist" "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/data.plist" new file mode 100644 index 0000000..83d27d7 Binary files /dev/null and "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/data.plist" differ diff --git "a/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/image3.tiff" "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/image3.tiff" new file mode 100644 index 0000000..bbd859f Binary files /dev/null and "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/image3.tiff" differ diff --git "a/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/preview.jpeg" "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/preview.jpeg" new file mode 100644 index 0000000..b33f82a Binary files /dev/null and "b/assets/iTeaTime-omnigraffle-\346\250\241\347\211\210.graffle/preview.jpeg" differ diff --git a/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png b/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png new file mode 100755 index 0000000..484939d Binary files /dev/null and b/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.png differ diff --git a/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.xmind b/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.xmind new file mode 100644 index 0000000..35b9143 Binary files /dev/null and b/assets/mindmap_of_Behavioral_based_interviewing_Competency_Based.xmind differ diff --git a/assets/mindmap_of_Swift_interview_question.xmind b/assets/mindmap_of_Swift_interview_question.xmind new file mode 100644 index 0000000..35b9143 Binary files /dev/null and b/assets/mindmap_of_Swift_interview_question.xmind differ diff --git a/assets/mvp_architecture_design_pattern.graffle b/assets/mvp_architecture_design_pattern.graffle new file mode 100644 index 0000000..0178f11 Binary files /dev/null and b/assets/mvp_architecture_design_pattern.graffle differ diff --git a/assets/mvp_architecture_design_pattern.png b/assets/mvp_architecture_design_pattern.png new file mode 100644 index 0000000..82c7451 Binary files /dev/null and b/assets/mvp_architecture_design_pattern.png differ diff --git a/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_QA.jpg b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_QA.jpg new file mode 100755 index 0000000..0750943 Binary files /dev/null and b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_QA.jpg differ diff --git a/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_cn.jpg b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_cn.jpg new file mode 100755 index 0000000..a895df8 Binary files /dev/null and b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_cn.jpg differ diff --git a/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_en.jpg b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_en.jpg new file mode 100755 index 0000000..f30ffb9 Binary files /dev/null and b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_en.jpg differ diff --git a/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_presenters_replace_controller.jpg b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_presenters_replace_controller.jpg new file mode 100755 index 0000000..be32223 Binary files /dev/null and b/assets/mvp_architecture_design_pattern/mvp_architecture_design_pattern_presenters_replace_controller.jpg differ diff --git a/assets/mvp_architecture_design_pattern_presenters_replace_controller.gif b/assets/mvp_architecture_design_pattern_presenters_replace_controller.gif new file mode 100644 index 0000000..58c6be0 Binary files /dev/null and b/assets/mvp_architecture_design_pattern_presenters_replace_controller.gif differ diff --git a/assets/mvvm_architecture_design_pattern.graffle b/assets/mvvm_architecture_design_pattern.graffle new file mode 100644 index 0000000..2987a08 Binary files /dev/null and b/assets/mvvm_architecture_design_pattern.graffle differ diff --git a/assets/mvvm_architecture_design_pattern.png b/assets/mvvm_architecture_design_pattern.png new file mode 100644 index 0000000..5babe38 Binary files /dev/null and b/assets/mvvm_architecture_design_pattern.png differ diff --git a/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_cn.jpg b/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_cn.jpg new file mode 100755 index 0000000..0de7d07 Binary files /dev/null and b/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_cn.jpg differ diff --git a/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_en.jpg b/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_en.jpg new file mode 100755 index 0000000..e295b60 Binary files /dev/null and b/assets/mvvm_architecture_design_pattern/mvvm_architecture_design_pattern_en.jpg differ diff --git a/assets/pair_programming.jpg b/assets/pair_programming.jpg new file mode 100644 index 0000000..3895a27 Binary files /dev/null and b/assets/pair_programming.jpg differ diff --git a/assets/pair_programming_process_driver-navigator-diagram.png b/assets/pair_programming_process_driver-navigator-diagram.png new file mode 100644 index 0000000..0ef17c9 Binary files /dev/null and b/assets/pair_programming_process_driver-navigator-diagram.png differ diff --git a/assets/pair_programming_process_softwarequal-pair_programming_styles-f.png b/assets/pair_programming_process_softwarequal-pair_programming_styles-f.png new file mode 100644 index 0000000..20b8abc Binary files /dev/null and b/assets/pair_programming_process_softwarequal-pair_programming_styles-f.png differ diff --git a/assets/redux_architecture_design_pattern.graffle b/assets/redux_architecture_design_pattern.graffle new file mode 100644 index 0000000..96a5b98 Binary files /dev/null and b/assets/redux_architecture_design_pattern.graffle differ diff --git a/assets/redux_architecture_design_pattern.png b/assets/redux_architecture_design_pattern.png new file mode 100644 index 0000000..97a53ac Binary files /dev/null and b/assets/redux_architecture_design_pattern.png differ diff --git a/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_QA.png b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_QA.png new file mode 100755 index 0000000..7bf6622 Binary files /dev/null and b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_QA.png differ diff --git a/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy1.png b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy1.png new file mode 100755 index 0000000..cfb1ba2 Binary files /dev/null and b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy1.png differ diff --git a/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy2.png b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy2.png new file mode 100755 index 0000000..563722d Binary files /dev/null and b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_copy2.png differ diff --git a/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_en.png b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_en.png new file mode 100755 index 0000000..02821c5 Binary files /dev/null and b/assets/redux_architecture_design_pattern/redux_architecture_design_pattern_en.png differ diff --git a/assets/redux_architecture_design_pattern_copy.graffle b/assets/redux_architecture_design_pattern_copy.graffle new file mode 100644 index 0000000..af58e0e Binary files /dev/null and b/assets/redux_architecture_design_pattern_copy.graffle differ diff --git a/assets/redux_architecture_design_pattern_copy.png b/assets/redux_architecture_design_pattern_copy.png new file mode 100644 index 0000000..e55d16f Binary files /dev/null and b/assets/redux_architecture_design_pattern_copy.png differ diff --git a/assets/redux_swiftui_architecture_design_pattern.graffle b/assets/redux_swiftui_architecture_design_pattern.graffle new file mode 100644 index 0000000..7e0c911 Binary files /dev/null and b/assets/redux_swiftui_architecture_design_pattern.graffle differ diff --git a/assets/redux_swiftui_architecture_design_pattern.png b/assets/redux_swiftui_architecture_design_pattern.png new file mode 100644 index 0000000..7d2b271 Binary files /dev/null and b/assets/redux_swiftui_architecture_design_pattern.png differ diff --git a/assets/solid/1.jpg b/assets/solid/1.jpg new file mode 100755 index 0000000..e2e1ccb Binary files /dev/null and b/assets/solid/1.jpg differ diff --git a/assets/solid/10.jpg b/assets/solid/10.jpg new file mode 100755 index 0000000..a039a54 Binary files /dev/null and b/assets/solid/10.jpg differ diff --git a/assets/solid/11.jpg b/assets/solid/11.jpg new file mode 100755 index 0000000..9056ad3 Binary files /dev/null and b/assets/solid/11.jpg differ diff --git a/assets/solid/12.jpg b/assets/solid/12.jpg new file mode 100755 index 0000000..5baa6e4 Binary files /dev/null and b/assets/solid/12.jpg differ diff --git a/assets/solid/13.jpg b/assets/solid/13.jpg new file mode 100755 index 0000000..e53040a Binary files /dev/null and b/assets/solid/13.jpg differ diff --git a/assets/solid/14.jpg b/assets/solid/14.jpg new file mode 100755 index 0000000..d31a4d4 Binary files /dev/null and b/assets/solid/14.jpg differ diff --git a/assets/solid/2.jpg b/assets/solid/2.jpg new file mode 100755 index 0000000..d41b142 Binary files /dev/null and b/assets/solid/2.jpg differ diff --git a/assets/solid/3.jpg b/assets/solid/3.jpg new file mode 100755 index 0000000..2edc759 Binary files /dev/null and b/assets/solid/3.jpg differ diff --git a/assets/solid/4.jpg b/assets/solid/4.jpg new file mode 100755 index 0000000..8d3d903 Binary files /dev/null and b/assets/solid/4.jpg differ diff --git a/assets/solid/5.jpg b/assets/solid/5.jpg new file mode 100755 index 0000000..daeda24 Binary files /dev/null and b/assets/solid/5.jpg differ diff --git a/assets/solid/6.jpg b/assets/solid/6.jpg new file mode 100755 index 0000000..8773ffa Binary files /dev/null and b/assets/solid/6.jpg differ diff --git a/assets/solid/7.jpg b/assets/solid/7.jpg new file mode 100755 index 0000000..3236119 Binary files /dev/null and b/assets/solid/7.jpg differ diff --git a/assets/solid/8.jpg b/assets/solid/8.jpg new file mode 100755 index 0000000..8f784a6 Binary files /dev/null and b/assets/solid/8.jpg differ diff --git a/assets/solid/9.jpg b/assets/solid/9.jpg new file mode 100755 index 0000000..a9c580b Binary files /dev/null and b/assets/solid/9.jpg differ diff --git a/assets/swift-combine.jpg b/assets/swift-combine.jpg new file mode 100644 index 0000000..ee30f6f Binary files /dev/null and b/assets/swift-combine.jpg differ diff --git a/assets/swift_map_type_diff/swift_map_type_diff_cn.jpg b/assets/swift_map_type_diff/swift_map_type_diff_cn.jpg new file mode 100755 index 0000000..8bf0dc1 Binary files /dev/null and b/assets/swift_map_type_diff/swift_map_type_diff_cn.jpg differ diff --git a/assets/swift_map_type_diff/swift_map_type_diff_en.jpg b/assets/swift_map_type_diff/swift_map_type_diff_en.jpg new file mode 100755 index 0000000..62d0551 Binary files /dev/null and b/assets/swift_map_type_diff/swift_map_type_diff_en.jpg differ diff --git a/assets/tca_architecture_design_pattern.graffle b/assets/tca_architecture_design_pattern.graffle new file mode 100644 index 0000000..afe6c63 Binary files /dev/null and b/assets/tca_architecture_design_pattern.graffle differ diff --git a/assets/tca_architecture_design_pattern.png b/assets/tca_architecture_design_pattern.png new file mode 100644 index 0000000..9d2ac3f Binary files /dev/null and b/assets/tca_architecture_design_pattern.png differ diff --git a/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_QA.png b/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_QA.png new file mode 100755 index 0000000..e5c50a0 Binary files /dev/null and b/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_QA.png differ diff --git a/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_en.png b/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_en.png new file mode 100755 index 0000000..8bdb758 Binary files /dev/null and b/assets/tca_architecture_design_pattern/tca_architecture_design_pattern_en.png differ diff --git a/assets/viper_architecture_design_pattern.graffle b/assets/viper_architecture_design_pattern.graffle new file mode 100644 index 0000000..0d38a2a Binary files /dev/null and b/assets/viper_architecture_design_pattern.graffle differ diff --git a/assets/viper_architecture_design_pattern.png b/assets/viper_architecture_design_pattern.png new file mode 100644 index 0000000..b82b5e4 Binary files /dev/null and b/assets/viper_architecture_design_pattern.png differ diff --git a/banner-coding-challenge.png b/banner-coding-challenge.png new file mode 100644 index 0000000..1f1323a Binary files /dev/null and b/banner-coding-challenge.png differ diff --git a/banner.png b/banner.png new file mode 100644 index 0000000..1b4ee78 Binary files /dev/null and b/banner.png differ diff --git a/cross-platform/ReactNativeDemo/.expo/README.md b/cross-platform/ReactNativeDemo/.expo/README.md new file mode 100644 index 0000000..f7eb5fe --- /dev/null +++ b/cross-platform/ReactNativeDemo/.expo/README.md @@ -0,0 +1,8 @@ +> Why do I have a folder named ".expo" in my project? +The ".expo" folder is created when an Expo project is started using "expo start" command. +> What do the files contain? +- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. +- "settings.json": contains the server configuration that is used to serve the application manifest. +> Should I commit the ".expo" folder? +No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. +Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/cross-platform/ReactNativeDemo/.expo/devices.json b/cross-platform/ReactNativeDemo/.expo/devices.json new file mode 100644 index 0000000..5efff6c --- /dev/null +++ b/cross-platform/ReactNativeDemo/.expo/devices.json @@ -0,0 +1,3 @@ +{ + "devices": [] +} diff --git a/cross-platform/ReactNativeDemo/.expo/prebuild/cached-packages.json b/cross-platform/ReactNativeDemo/.expo/prebuild/cached-packages.json new file mode 100644 index 0000000..99a0a7b --- /dev/null +++ b/cross-platform/ReactNativeDemo/.expo/prebuild/cached-packages.json @@ -0,0 +1,4 @@ +{ + "dependencies": "3c47043f44c7ed093572a2ab9d39862c2e5b263a", + "devDependencies": "83c4c343b98be7074170957c1a1b3b163b43f0b1" +} diff --git a/cross-platform/ReactNativeDemo/.gitignore b/cross-platform/ReactNativeDemo/.gitignore new file mode 100644 index 0000000..ffc6cd4 --- /dev/null +++ b/cross-platform/ReactNativeDemo/.gitignore @@ -0,0 +1,149 @@ +*.xcuserstate +*.DS_Store +*.xcbkptlist +01《招聘一个靠谱的iOS》面试题参考答案/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate +01《招聘一个靠谱的iOS》面试题参考答案/Demo_38_block_edit_var/Demo_38_block_edit_var.xcodeproj/project.xcworkspace/xcuserdata/chenyilong.xcuserdatad/UserInterfaceState.xcuserstate + +!**/*.xcscheme +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +**/.xcode.env.local +/poackages/react-native/sdks/downloads/ + +# Gradle +/build/ +/packages/react-native-gradle-plugin/build/ +/packages/rn-tester/build +/packages/rn-tester/android/app/.cxx/ +/packages/rn-tester/android/app/build/ +/packages/rn-tester/android/app/gradle/ +/packages/rn-tester/android/app/gradlew +/packages/rn-tester/android/app/gradlew.bat +/packages/react-native/ReactAndroid/build/ +/packages/react-native/ReactAndroid/.cxx/ +/packages/react-native/ReactAndroid/gradle/ +/packages/react-native/ReactAndroid/gradlew +/packages/react-native/ReactAndroid/gradlew.bat +/packages/react-native/ReactAndroid/external-artifacts/build/ +/packages/react-native/ReactAndroid/external-artifacts/artifacts/ +/packages/react-native/ReactAndroid/flipper-integration/build/ +/packages/react-native/ReactAndroid/hermes-engine/build/ +/packages/react-native/ReactAndroid/hermes-engine/.cxx/ +/packages/react-native/template/android/app/build/ +/packages/react-native/template/android/build/ + +# Buck +.buckd +buck-out +/.lsp.buckd +/.lsp-buck-out +/packages/react-native/ReactAndroid/src/main/jni/prebuilt/lib/ +/packages/react-native/ReactAndroid/src/main/gen + +# Android Studio +.project +.settings +.classpath + +# Watchman +.watchmanconfig + +# Android +.idea +.gradle +local.properties +*.iml +/packages/react-native/android/* +!/packages/react-native/android/README.md + +# Node +node_modules +*.log +.nvm +package-lock.json + +# OS X +.DS_Store + +# Test generated files +/packages/react-native/ReactAndroid/src/androidTest/assets/AndroidTestBundle.js +*.js.meta + +/coverage +/third-party + +# Test Reports +/reports + +# Stack Dumps generated when programs crash (Ex. bash.exe.stackdump on Win) +*.stackdump + +# Root dir shouldn't have Xcode project +/*.xcodeproj + +# ReactCommon subdir shouldn't have Xcode project +/packages/react-native/ReactCommon/**/*.xcodeproj + +# Libs that shouldn't have Xcode project +/packages/react-native/Libraries/FBLazyVector/**/*.xcodeproj +/packages/react-native/Libraries/RCTRequired/**/*.xcodeproj +/packages/react-native/React/CoreModules/**/*.xcodeproj +/packages/react-native/React/FBReactNativeSpec/**/*.xcodeproj +/packages/react-native-codegen/**/*.xcodeproj + +# Ruby Gems (Bundler) +/packages/react-native/vendor +/packages/react-native/template/vendor +.ruby-version +/**/.ruby-version + +# iOS / CocoaPods +/packages/react-native/template/ios/build/ +/packages/react-native/template/ios/Pods/ +/packages/react-native/template/ios/Podfile.lock +/packages/rn-tester/Gemfile.lock + +# Ignore RNTester specific Pods, but keep the __offline_mirrors__ here. +/packages/rn-tester/Pods/* +!/packages/rn-tester/Pods/__offline_mirrors_hermes__ +!/packages/rn-tester/Pods/__offline_mirrors_jsc__ + +# @react-native/codegen +/packages/react-native/React/FBReactNativeSpec/FBReactNativeSpec +/packages/react-native-codegen/lib +/packages/react-native-codegen/tmp/ +/packages/react-native/ReactCommon/react/renderer/components/rncore/ +/packages/rn-tester/NativeModuleExample/ScreenshotManagerSpec* +/**/RCTThirdPartyFabricComponentsProvider.* + +# @react-native/codegen-typescript-test +/packages/react-native-codegen-typescript-test/lib + +# Additional SDKs +/packages/react-native/sdks/download +/packages/react-native/sdks/hermes +/packages/react-native/sdks/hermesc + +# Visual studio +.vscode +.vs + +# Android memory profiler files +*.hprof + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/App.tsx b/cross-platform/ReactNativeDemo/App.tsx new file mode 100644 index 0000000..cdd6f40 --- /dev/null +++ b/cross-platform/ReactNativeDemo/App.tsx @@ -0,0 +1,41 @@ +import React, { useCallback, useState } from 'react'; +import { TouchableWithoutFeedback, View, Text, StyleSheet, NativeModules} from 'react-native'; +const { RandomColorGeneratorModule } = NativeModules; + +enum RNColorGeneratorOption { + HEX = 0, + RGB, +} + +const styles = StyleSheet.create({ + app: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'white', + }, +}); + +const App = () => { + + const [backgroundColor, setBackgroundColor] = useState('white'); + const randomHex = useCallback(() => { + const option = RNColorGeneratorOption.HEX; + const color = RandomColorGeneratorModule.generate(option); + return color; + }, []); + + const onPress = useCallback(() => { + setBackgroundColor(randomHex()); + }, [randomHex]); + + return ( + + + Try click me! 🎉 --- YILONG CHEN + + + ); +}; + +export default App; \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/LICENSE b/cross-platform/ReactNativeDemo/LICENSE new file mode 100644 index 0000000..a32309c --- /dev/null +++ b/cross-platform/ReactNativeDemo/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 ChenYilong(open to work) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule.podspec b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule.podspec new file mode 100755 index 0000000..ccc82e6 --- /dev/null +++ b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule.podspec @@ -0,0 +1,20 @@ +require 'json' +package = JSON.parse(File.read('./package.json')) + +Pod::Spec.new do |s| + s.name = "RCTRandomColorGeneratorModule" + s.dependency "React-Core" + + s.version = package["version"] + s.license = package["license"] + s.summary = package["description"] + s.authors = package["author"] + s.homepage = package["homepage"] + + s.ios.deployment_target = "10.0" + s.tvos.deployment_target = "11.0" + s.requires_arc = true + + s.source = { :git => package["repository"]["url"], :tag => s.version } + s.source_files = "RCTRandomColorGeneratorModule/**/*.{h,m}" +end diff --git a/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.xcodeproj/project.pbxproj b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.xcodeproj/project.pbxproj new file mode 100644 index 0000000..721b089 --- /dev/null +++ b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.xcodeproj/project.pbxproj @@ -0,0 +1,291 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 9A4F30B628BC80B000452976 /* RCTRandomColorGeneratorModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A4F30B528BC80B000452976 /* RCTRandomColorGeneratorModule.m */; }; + 9A4F30B728BC80B000452976 /* RCTRandomColorGeneratorModule.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9A4F30B428BC80B000452976 /* RCTRandomColorGeneratorModule.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9A4F30AF28BC80B000452976 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 9A4F30B728BC80B000452976 /* RCTRandomColorGeneratorModule.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 9A4F30B128BC80B000452976 /* libRCTRandomColorGeneratorModule.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTRandomColorGeneratorModule.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A4F30B428BC80B000452976 /* RCTRandomColorGeneratorModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTRandomColorGeneratorModule.h; sourceTree = ""; }; + 9A4F30B528BC80B000452976 /* RCTRandomColorGeneratorModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTRandomColorGeneratorModule.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 9A4F30AE28BC80B000452976 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9A4F30A828BC80B000452976 = { + isa = PBXGroup; + children = ( + 9A4F30B328BC80B000452976 /* RCTRandomColorGeneratorModule */, + 9A4F30B228BC80B000452976 /* Products */, + ); + sourceTree = ""; + }; + 9A4F30B228BC80B000452976 /* Products */ = { + isa = PBXGroup; + children = ( + 9A4F30B128BC80B000452976 /* libRCTRandomColorGeneratorModule.a */, + ); + name = Products; + sourceTree = ""; + }; + 9A4F30B328BC80B000452976 /* RCTRandomColorGeneratorModule */ = { + isa = PBXGroup; + children = ( + 9A4F30B428BC80B000452976 /* RCTRandomColorGeneratorModule.h */, + 9A4F30B528BC80B000452976 /* RCTRandomColorGeneratorModule.m */, + ); + path = RCTRandomColorGeneratorModule; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 9A4F30B028BC80B000452976 /* RCTRandomColorGeneratorModule */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A4F30BA28BC80B000452976 /* Build configuration list for PBXNativeTarget "RCTRandomColorGeneratorModule" */; + buildPhases = ( + 9A4F30AD28BC80B000452976 /* Sources */, + 9A4F30AE28BC80B000452976 /* Frameworks */, + 9A4F30AF28BC80B000452976 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RCTRandomColorGeneratorModule; + productName = RCTRandomColorGeneratorModule; + productReference = 9A4F30B128BC80B000452976 /* libRCTRandomColorGeneratorModule.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 9A4F30A928BC80B000452976 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastUpgradeCheck = 1340; + TargetAttributes = { + 9A4F30B028BC80B000452976 = { + CreatedOnToolsVersion = 13.4.1; + }; + }; + }; + buildConfigurationList = 9A4F30AC28BC80B000452976 /* Build configuration list for PBXProject "RCTRandomColorGeneratorModule" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9A4F30A828BC80B000452976; + productRefGroup = 9A4F30B228BC80B000452976 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 9A4F30B028BC80B000452976 /* RCTRandomColorGeneratorModule */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 9A4F30AD28BC80B000452976 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A4F30B628BC80B000452976 /* RCTRandomColorGeneratorModule.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 9A4F30B828BC80B000452976 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 9A4F30B928BC80B000452976 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A4F30BB28BC80B000452976 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 9A4F30BC28BC80B000452976 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = A34NNDTR9F; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 9A4F30AC28BC80B000452976 /* Build configuration list for PBXProject "RCTRandomColorGeneratorModule" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A4F30B828BC80B000452976 /* Debug */, + 9A4F30B928BC80B000452976 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A4F30BA28BC80B000452976 /* Build configuration list for PBXNativeTarget "RCTRandomColorGeneratorModule" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A4F30BB28BC80B000452976 /* Debug */, + 9A4F30BC28BC80B000452976 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 9A4F30A928BC80B000452976 /* Project object */; +} diff --git a/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.h b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.h new file mode 100644 index 0000000..4ebe195 --- /dev/null +++ b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.h @@ -0,0 +1,19 @@ +// +// RCTRandomColorGeneratorModule.h +// RCTRandomColorGeneratorModule +// +// Created by chenyilong on 2022/8/29. +// +#import +#import + +typedef enum { + RNColorGeneratorOptionHEX = 0, + RNColorGeneratorOptionRGB = 1 +} RNColorGeneratorOption; + +@interface RCTRandomColorGeneratorModule : NSObject + +- (NSString *)_generate:(nonnull NSNumber *)option; + +@end diff --git a/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.m b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.m new file mode 100644 index 0000000..52d287c --- /dev/null +++ b/cross-platform/ReactNativeDemo/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule/RCTRandomColorGeneratorModule.m @@ -0,0 +1,39 @@ +// +// RCTRandomColorGeneratorModule.m +// RCTRandomColorGeneratorModule +// +// Created by chenyilong on 2022/8/29. +// + +#import "RCTRandomColorGeneratorModule.h" + +@implementation RCTRandomColorGeneratorModule +RCT_EXPORT_MODULE(); + +RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(generate:(nonnull NSNumber *)option) +{ + + return [self _generate:option]; +} + +- (id)_generate:(nonnull NSNumber *)option { + id result; + if (option.integerValue == RNColorGeneratorOptionHEX) { + NSInteger *baseInt = arc4random() % 16777216; + NSString *hex = [NSString stringWithFormat:@"#%06X", baseInt]; + result = hex; + } else if (option.integerValue == RNColorGeneratorOptionRGB) { + NSString *randomRed = [NSString stringWithFormat:@"%@", [NSNumber numberWithFloat:arc4random_uniform(256)/255.f]]; + NSString *randomGreen = [NSString stringWithFormat:@"%@", [NSNumber numberWithFloat:arc4random_uniform(256)/255.f]]; + NSString *randomBlue = [NSString stringWithFormat:@"%@", [NSNumber numberWithFloat:arc4random_uniform(256)/255.f]]; + NSArray *array = @[ + randomRed, + randomGreen, + randomBlue + ]; + result = array; + } + return result; +} + +@end diff --git a/cross-platform/ReactNativeDemo/READEM_resources_run_preview.gif b/cross-platform/ReactNativeDemo/READEM_resources_run_preview.gif new file mode 100644 index 0000000..7c38af9 Binary files /dev/null and b/cross-platform/ReactNativeDemo/READEM_resources_run_preview.gif differ diff --git a/cross-platform/ReactNativeDemo/README.md b/cross-platform/ReactNativeDemo/README.md new file mode 100644 index 0000000..f43ca5a --- /dev/null +++ b/cross-platform/ReactNativeDemo/README.md @@ -0,0 +1,34 @@ +## Question + +# ReactNativeDemo + +You are asked to write an iOS SDK and an React Native App that uses the SDK. + +The SDK should expose a method that generates a random color in either hex or RGB, for example, if you use hex, the random color is a value between #000000 and #FFFFFF. + +When the app is initialized it should show an empty white screen. When the user taps on the screen, the app should use the iOS SDK to get a random color value, and change the color of the empty screen with that color. + +The completed project should be delivered in a format we can review, such as a github repository. + + +## Answer + +![https://github.com/ChenYilong](READEM_resources_run_preview.gif) + + + + ```shell +cd ReactNativeDemo +npm start +npx react-native run-ios + + + ``` + +or + + + ```shell +npx expo run:ios + ``` + diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/.expo-shared/assets.json b/cross-platform/ReactNativeDemo/RandomColorGenerator/.expo-shared/assets.json new file mode 100644 index 0000000..1e6decf --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/.expo-shared/assets.json @@ -0,0 +1,4 @@ +{ + "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, + "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true +} diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/.gitignore b/cross-platform/ReactNativeDemo/RandomColorGenerator/.gitignore new file mode 100644 index 0000000..ec8a36a --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/.gitignore @@ -0,0 +1,14 @@ +node_modules/ +.expo/ +dist/ +npm-debug.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision +*.orig.* +web-build/ + +# macOS +.DS_Store diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/App.js b/cross-platform/ReactNativeDemo/RandomColorGenerator/App.js new file mode 100644 index 0000000..09f879b --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/App.js @@ -0,0 +1,20 @@ +import { StatusBar } from 'expo-status-bar'; +import { StyleSheet, Text, View } from 'react-native'; + +export default function App() { + return ( + + Open up App.js to start working on your app! + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: '#fff', + alignItems: 'center', + justifyContent: 'center', + }, +}); diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/app.json b/cross-platform/ReactNativeDemo/RandomColorGenerator/app.json new file mode 100644 index 0000000..30c45df --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/app.json @@ -0,0 +1,33 @@ +{ + "expo": { + "name": "RandomColorGenerator", + "slug": "RandomColorGenerator", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "userInterfaceStyle": "light", + "splash": { + "image": "./assets/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "assetBundlePatterns": [ + "**/*" + ], + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#FFFFFF" + } + }, + "web": { + "favicon": "./assets/favicon.png" + } + } +} diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/adaptive-icon.png b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/adaptive-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/adaptive-icon.png differ diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/favicon.png b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/favicon.png new file mode 100644 index 0000000..e75f697 Binary files /dev/null and b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/favicon.png differ diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/icon.png b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/icon.png new file mode 100644 index 0000000..a0b1526 Binary files /dev/null and b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/icon.png differ diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/splash.png b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/splash.png new file mode 100644 index 0000000..0e89705 Binary files /dev/null and b/cross-platform/ReactNativeDemo/RandomColorGenerator/assets/splash.png differ diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/babel.config.js b/cross-platform/ReactNativeDemo/RandomColorGenerator/babel.config.js new file mode 100644 index 0000000..2900afe --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/babel.config.js @@ -0,0 +1,6 @@ +module.exports = function(api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + }; +}; diff --git a/cross-platform/ReactNativeDemo/RandomColorGenerator/package.json b/cross-platform/ReactNativeDemo/RandomColorGenerator/package.json new file mode 100644 index 0000000..e7f72fd --- /dev/null +++ b/cross-platform/ReactNativeDemo/RandomColorGenerator/package.json @@ -0,0 +1,21 @@ +{ + "name": "randomcolorgenerator", + "version": "1.0.0", + "main": "node_modules/expo/AppEntry.js", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web" + }, + "dependencies": { + "expo": "~46.0.9", + "expo-status-bar": "~1.4.0", + "react": "18.0.0", + "react-native": "0.69.5" + }, + "devDependencies": { + "@babel/core": "^7.12.9" + }, + "private": true +} diff --git a/cross-platform/ReactNativeDemo/app.json b/cross-platform/ReactNativeDemo/app.json new file mode 100644 index 0000000..8dee184 --- /dev/null +++ b/cross-platform/ReactNativeDemo/app.json @@ -0,0 +1,16 @@ +{ + "expo": { + "name": "react-native-random-color-generator", + "slug": "react-native-random-color-generator", + "version": "0.0.1", + "description": "random color generator API for React Native on iOS, Android and Windows", + "sdkVersion": "46.0.0", + "platforms": [ + "ios", + "android" + ], + "ios": { + "bundleIdentifier": "com.anonymous.react-native-random-color-generator" + } + } +} diff --git a/cross-platform/ReactNativeDemo/index.js b/cross-platform/ReactNativeDemo/index.js new file mode 100644 index 0000000..1d6e981 --- /dev/null +++ b/cross-platform/ReactNativeDemo/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/cross-platform/ReactNativeDemo/ios/.gitignore b/cross-platform/ReactNativeDemo/ios/.gitignore new file mode 100644 index 0000000..ba2b756 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/.gitignore @@ -0,0 +1,32 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +.xcode.env.local + +# Bundle artifacts +*.jsbundle + +# CocoaPods +/Pods/ +*.lock +.expo/ \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/.xcode.env b/cross-platform/ReactNativeDemo/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/cross-platform/ReactNativeDemo/ios/Podfile b/cross-platform/ReactNativeDemo/ios/Podfile new file mode 100644 index 0000000..f768ebd --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/Podfile @@ -0,0 +1,50 @@ +require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") +require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") +require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules") + +require 'json' +podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} + +platform :ios, podfile_properties['ios.deploymentTarget'] || '12.4' +install! 'cocoapods', + :deterministic_uuids => false + +target 'reactnativerandomcolorgenerator' do + use_expo_modules! + config = use_native_modules! + + use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + + # Flags change depending on the env values. + flags = get_default_flags() + + use_react_native!( + :path => config[:reactNativePath], + :hermes_enabled => flags[:hermes_enabled] || podfile_properties['expo.jsEngine'] == 'hermes', + :fabric_enabled => flags[:fabric_enabled], + # An absolute path to your application root. + :app_path => "#{Dir.pwd}/.." + ) + + # Uncomment to opt-in to using Flipper + # Note that if you have use_frameworks! enabled, Flipper will not work + # + # if !ENV['CI'] + # use_flipper!() + # end + pod 'RCTRandomColorGeneratorModule', :path => '../' + + post_install do |installer| + react_native_post_install(installer) + __apply_Xcode_12_5_M1_post_install_workaround(installer) + end + + post_integrate do |installer| + begin + expo_patch_react_imports!(installer) + rescue => e + Pod::UI.warn e + end + end + +end diff --git a/cross-platform/ReactNativeDemo/ios/Podfile.properties.json b/cross-platform/ReactNativeDemo/ios/Podfile.properties.json new file mode 100644 index 0000000..f6d872e --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/Podfile.properties.json @@ -0,0 +1,3 @@ +{ + "expo.jsEngine": "jsc" +} diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/project.pbxproj b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/project.pbxproj new file mode 100644 index 0000000..1841474 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/project.pbxproj @@ -0,0 +1,638 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 96905EF65AED1B983A6B3ABC /* libPods-reactnativerandomcolorgenerator.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-reactnativerandomcolorgenerator.a */; }; + 9A36217728C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A36217628C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.m */; }; + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + F1EFA6A027A44CCD97657866 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A02332E71F748F6ABD82E9D /* noop-file.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 9A36217828C59CE2000CEC81 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = reactnativerandomcolorgenerator; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* reactnativerandomcolorgenerator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = reactnativerandomcolorgenerator.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = reactnativerandomcolorgenerator/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = reactnativerandomcolorgenerator/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = reactnativerandomcolorgenerator/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = reactnativerandomcolorgenerator/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = reactnativerandomcolorgenerator/main.m; sourceTree = ""; }; + 3A02332E71F748F6ABD82E9D /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "reactnativerandomcolorgenerator/noop-file.swift"; sourceTree = ""; }; + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-reactnativerandomcolorgenerator.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-reactnativerandomcolorgenerator.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6C2E3173556A471DD304B334 /* Pods-reactnativerandomcolorgenerator.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactnativerandomcolorgenerator.debug.xcconfig"; path = "Target Support Files/Pods-reactnativerandomcolorgenerator/Pods-reactnativerandomcolorgenerator.debug.xcconfig"; sourceTree = ""; }; + 7A4D352CD337FB3A3BF06240 /* Pods-reactnativerandomcolorgenerator.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-reactnativerandomcolorgenerator.release.xcconfig"; path = "Target Support Files/Pods-reactnativerandomcolorgenerator/Pods-reactnativerandomcolorgenerator.release.xcconfig"; sourceTree = ""; }; + 9A36217428C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = reactnativerandomcolorgeneratorTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 9A36217628C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = reactnativerandomcolorgeneratorTests.m; sourceTree = ""; }; + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = reactnativerandomcolorgenerator/SplashScreen.storyboard; sourceTree = ""; }; + BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-reactnativerandomcolorgenerator/ExpoModulesProvider.swift"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96905EF65AED1B983A6B3ABC /* libPods-reactnativerandomcolorgenerator.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A36217128C59CE2000CEC81 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* reactnativerandomcolorgenerator */ = { + isa = PBXGroup; + children = ( + BB2F792B24A3F905000567C9 /* Supporting */, + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB71A68108700A75B9A /* main.m */, + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + 3A02332E71F748F6ABD82E9D /* noop-file.swift */, + ); + name = reactnativerandomcolorgenerator; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-reactnativerandomcolorgenerator.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* reactnativerandomcolorgenerator */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 9A36217528C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D65327D7A22EEC0BE12398D9 /* Pods */, + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* reactnativerandomcolorgenerator.app */, + 9A36217428C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 92DBD88DE9BF7D494EA9DA96 /* reactnativerandomcolorgenerator */ = { + isa = PBXGroup; + children = ( + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, + ); + name = reactnativerandomcolorgenerator; + sourceTree = ""; + }; + 9A36217528C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests */ = { + isa = PBXGroup; + children = ( + 9A36217628C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.m */, + ); + path = reactnativerandomcolorgeneratorTests; + sourceTree = ""; + }; + BB2F792B24A3F905000567C9 /* Supporting */ = { + isa = PBXGroup; + children = ( + BB2F792C24A3F905000567C9 /* Expo.plist */, + ); + name = Supporting; + path = reactnativerandomcolorgenerator/Supporting; + sourceTree = ""; + }; + D65327D7A22EEC0BE12398D9 /* Pods */ = { + isa = PBXGroup; + children = ( + 6C2E3173556A471DD304B334 /* Pods-reactnativerandomcolorgenerator.debug.xcconfig */, + 7A4D352CD337FB3A3BF06240 /* Pods-reactnativerandomcolorgenerator.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { + isa = PBXGroup; + children = ( + 92DBD88DE9BF7D494EA9DA96 /* reactnativerandomcolorgenerator */, + ); + name = ExpoModulesProviders; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* reactnativerandomcolorgenerator */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactnativerandomcolorgenerator" */; + buildPhases = ( + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, + FD10A7F022414F080027D42C /* Start Packager */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = reactnativerandomcolorgenerator; + productName = reactnativerandomcolorgenerator; + productReference = 13B07F961A680F5B00A75B9A /* reactnativerandomcolorgenerator.app */; + productType = "com.apple.product-type.application"; + }; + 9A36217328C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9A36217A28C59CE2000CEC81 /* Build configuration list for PBXNativeTarget "reactnativerandomcolorgeneratorTests" */; + buildPhases = ( + 9A36217028C59CE2000CEC81 /* Sources */, + 9A36217128C59CE2000CEC81 /* Frameworks */, + 9A36217228C59CE2000CEC81 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9A36217928C59CE2000CEC81 /* PBXTargetDependency */, + ); + name = reactnativerandomcolorgeneratorTests; + productName = reactnativerandomcolorgeneratorTests; + productReference = 9A36217428C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1250; + }; + 9A36217328C59CE2000CEC81 = { + CreatedOnToolsVersion = 13.4.1; + DevelopmentTeam = A34NNDTR9F; + ProvisioningStyle = Automatic; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactnativerandomcolorgenerator" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* reactnativerandomcolorgenerator */, + 9A36217328C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A36217228C59CE2000CEC81 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; + }; + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-reactnativerandomcolorgenerator-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-reactnativerandomcolorgenerator/Pods-reactnativerandomcolorgenerator-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-reactnativerandomcolorgenerator/Pods-reactnativerandomcolorgenerator-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + FD10A7F022414F080027D42C /* Start Packager */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "Start Packager"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `node --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `node --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, + F1EFA6A027A44CCD97657866 /* noop-file.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9A36217028C59CE2000CEC81 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A36217728C59CE2000CEC81 /* reactnativerandomcolorgeneratorTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 9A36217928C59CE2000CEC81 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* reactnativerandomcolorgenerator */; + targetProxy = 9A36217828C59CE2000CEC81 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-reactnativerandomcolorgenerator.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = reactnativerandomcolorgenerator/reactnativerandomcolorgenerator.entitlements; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = reactnativerandomcolorgenerator/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.react-native-random-color-generator"; + PRODUCT_NAME = reactnativerandomcolorgenerator; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-reactnativerandomcolorgenerator.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = reactnativerandomcolorgenerator/reactnativerandomcolorgenerator.entitlements; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = reactnativerandomcolorgenerator/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.react-native-random-color-generator"; + PRODUCT_NAME = reactnativerandomcolorgenerator; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = NO; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 9A36217B28C59CE2000CEC81 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = A34NNDTR9F; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = com.RCTRandomColorGeneratorModule.chenyilong.reactnativerandomcolorgeneratorTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactnativerandomcolorgenerator.app/reactnativerandomcolorgenerator"; + }; + name = Debug; + }; + 9A36217C28C59CE2000CEC81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = A34NNDTR9F; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; + PRODUCT_BUNDLE_IDENTIFIER = com.RCTRandomColorGeneratorModule.chenyilong.reactnativerandomcolorgeneratorTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/reactnativerandomcolorgenerator.app/reactnativerandomcolorgenerator"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "reactnativerandomcolorgenerator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "reactnativerandomcolorgenerator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9A36217A28C59CE2000CEC81 /* Build configuration list for PBXNativeTarget "reactnativerandomcolorgeneratorTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9A36217B28C59CE2000CEC81 /* Debug */, + 9A36217C28C59CE2000CEC81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgenerator.xcscheme b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgenerator.xcscheme new file mode 100644 index 0000000..7f48eb8 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgenerator.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgeneratorTests.xcscheme b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgeneratorTests.xcscheme new file mode 100644 index 0000000..94ba7b9 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcodeproj/xcshareddata/xcschemes/reactnativerandomcolorgeneratorTests.xcscheme @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/contents.xcworkspacedata b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..23f78c3 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.h b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.h new file mode 100644 index 0000000..f7d2972 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.h @@ -0,0 +1,9 @@ +#import +#import +#import + +#import + +@interface AppDelegate : EXAppDelegateWrapper + +@end diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.mm b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.mm new file mode 100644 index 0000000..a6e13e1 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/AppDelegate.mm @@ -0,0 +1,166 @@ +#import "AppDelegate.h" + +#import +#import +#import +#import +#import + +#import + +#if RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import +#import + +#import + +static NSString *const kRNConcurrentRoot = @"concurrentRoot"; + +@interface AppDelegate () { + RCTTurboModuleManager *_turboModuleManager; + RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; + std::shared_ptr _reactNativeConfig; + facebook::react::ContextContainer::Shared _contextContainer; +} +@end +#endif + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + RCTAppSetupPrepareApp(application); + + RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions]; + +#if RCT_NEW_ARCH_ENABLED + _contextContainer = std::make_shared(); + _reactNativeConfig = std::make_shared(); + _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); + _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; + bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; +#endif + + NSDictionary *initProps = [self prepareInitialProps]; + UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@"main" initialProperties:initProps]; + + rootView.backgroundColor = [UIColor whiteColor]; + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [self.reactDelegate createRootViewController]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + + [super application:application didFinishLaunchingWithOptions:launchOptions]; + + return YES; +} + +- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge +{ + // If you'd like to export some custom RCTBridgeModules, add them here! + return @[]; +} + +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled +{ + // Switch this bool to turn on and off the concurrent root + return true; +} + +- (NSDictionary *)prepareInitialProps +{ + NSMutableDictionary *initProps = [NSMutableDictionary new]; +#if RCT_NEW_ARCH_ENABLED + initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); +#endif + return initProps; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +// Linking API +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { + return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; +} + +// Universal Links +- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { + BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; + return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken +{ + return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error +{ + return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler +{ + return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; +} + +#if RCT_NEW_ARCH_ENABLED + +#pragma mark - RCTCxxBridgeDelegate + +- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge +{ + _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge + delegate:self + jsInvoker:bridge.jsCallInvoker]; + return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); +} + +#pragma mark RCTTurboModuleManagerDelegate + +- (Class)getModuleClassFromName:(const char *)name +{ + return RCTCoreModulesClassProvider(name); +} + +- (std::shared_ptr)getTurboModule:(const std::string &)name + jsInvoker:(std::shared_ptr)jsInvoker +{ + return nullptr; +} + +- (std::shared_ptr)getTurboModule:(const std::string &)name + initParams: + (const facebook::react::ObjCTurboModule::InitParams &)params +{ + return nullptr; +} + +- (id)getModuleInstanceFromClass:(Class)moduleClass +{ + return RCTAppSetupDefaultModuleFromClass(moduleClass); +} + +#endif + +@end diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/AppIcon.appiconset/Contents.json b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..bf722cb --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "expo" + } +} \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/Contents.json b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/Contents.json new file mode 100644 index 0000000..ed285c2 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "expo" + } +} diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/Contents.json b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/Contents.json new file mode 100644 index 0000000..3cf8489 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images": [ + { + "idiom": "universal", + "filename": "image.png", + "scale": "1x" + }, + { + "idiom": "universal", + "scale": "2x" + }, + { + "idiom": "universal", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/image.png b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/image.png new file mode 100644 index 0000000..33ddf20 Binary files /dev/null and b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Images.xcassets/SplashScreenBackground.imageset/image.png differ diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Info.plist b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Info.plist new file mode 100644 index 0000000..d6bd091 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Info.plist @@ -0,0 +1,78 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + react-native-random-color-generator + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 0.0.1 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLSchemes + + com.anonymous.react-native-random-color-generator + + + + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + armv7 + + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDefault + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Light + UIViewControllerBasedStatusBarAppearance + + + \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/SplashScreen.storyboard b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/SplashScreen.storyboard new file mode 100644 index 0000000..1227a2b --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/SplashScreen.storyboard @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Supporting/Expo.plist b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Supporting/Expo.plist new file mode 100644 index 0000000..3fb00c2 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/Supporting/Expo.plist @@ -0,0 +1,16 @@ + + + + + EXUpdatesCheckOnLaunch + ALWAYS + EXUpdatesEnabled + + EXUpdatesLaunchWaitMs + 0 + EXUpdatesSDKVersion + 46.0.0 + EXUpdatesURL + https://exp.host/@anonymous/react-native-random-color-generator + + \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/main.m b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/main.m new file mode 100644 index 0000000..25181b6 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/main.m @@ -0,0 +1,10 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} + diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/noop-file.swift b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/noop-file.swift new file mode 100644 index 0000000..b2ffafb --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/noop-file.swift @@ -0,0 +1,4 @@ +// +// @generated +// A blank Swift file must be created for native modules with Swift files to work correctly. +// diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/reactnativerandomcolorgenerator.entitlements b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/reactnativerandomcolorgenerator.entitlements new file mode 100644 index 0000000..018a6e2 --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgenerator/reactnativerandomcolorgenerator.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + \ No newline at end of file diff --git a/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgeneratorTests/reactnativerandomcolorgeneratorTests.m b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgeneratorTests/reactnativerandomcolorgeneratorTests.m new file mode 100644 index 0000000..735161c --- /dev/null +++ b/cross-platform/ReactNativeDemo/ios/reactnativerandomcolorgeneratorTests/reactnativerandomcolorgeneratorTests.m @@ -0,0 +1,36 @@ +// +// reactnativerandomcolorgeneratorTests.m +// reactnativerandomcolorgeneratorTests +// +// Created by chenyilong on 2022/9/5. +// + +#import + +@interface reactnativerandomcolorgeneratorTests : XCTestCase + +@end + +@implementation reactnativerandomcolorgeneratorTests + +- (void)setUp { + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. +} + +- (void)testExample { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git a/cross-platform/ReactNativeDemo/jest.config.js b/cross-platform/ReactNativeDemo/jest.config.js new file mode 100644 index 0000000..ebf30ef --- /dev/null +++ b/cross-platform/ReactNativeDemo/jest.config.js @@ -0,0 +1,4 @@ +module.exports = { + preset: 'react-native', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'] +}; diff --git a/cross-platform/ReactNativeDemo/metro.config.js b/cross-platform/ReactNativeDemo/metro.config.js new file mode 100644 index 0000000..9430b0f --- /dev/null +++ b/cross-platform/ReactNativeDemo/metro.config.js @@ -0,0 +1,4 @@ +// Learn more https://docs.expo.io/guides/customizing-metro +const { getDefaultConfig } = require('expo/metro-config'); + +module.exports = getDefaultConfig(__dirname); diff --git a/cross-platform/ReactNativeDemo/package.json b/cross-platform/ReactNativeDemo/package.json new file mode 100755 index 0000000..836b0f2 --- /dev/null +++ b/cross-platform/ReactNativeDemo/package.json @@ -0,0 +1,91 @@ +{ + "name": "react-native-random-color-generator", + "version": "0.0.1", + "license": "MIT", + "description": "random color generator API for React Native on iOS, Android and Windows", + "author": "YILONG CHEN ", + "homepage": "https://github.com/ChenYilong/ReactNativeDemo", + "repository": { + "type": "git", + "url": "https://github.com/ChenYilong/ReactNativeDemo.git" + }, + "keywords": [ + "react-native", + "react native", + "react-native-windows" + ], + "types": "dist/typescript/index.d.ts", + "main": "dist/commonjs/index.js", + "module": "dist/module/index.js", + "files": [ + "/android", + "!/android/build", + "/dist", + "/ios", + "/windows", + "/src", + "/*.podspec", + "mock.js" + ], + "scripts": { + "format": "prettier '**/*' -u -w", + "lint": "eslint \"./**/*.{js,ts,tsx}\"", + "setup-hooks": "git config --local core.hooksPath .hooks", + "prepack": "bob build", + "typecheck": "tsc --project ./ --noEmit", + "start": "expo start --dev-client", + "android": "expo run:android", + "ios": "expo run:ios" + }, + "react-native-builder-bob": { + "source": "src", + "output": "dist", + "targets": [ + "commonjs", + "module", + "typescript" + ] + }, + "lint-staged": { + "**/*.{js,ts,tsx}": "eslint", + "*": "prettier -u -w" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-native": ">=0.63.3", + "react-native-windows": ">=0.62.0" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + }, + "devDependencies": { + "@babel/core": "^7.12.9", + "@types/jest": "^29.0.0", + "@types/react": "^18.0.18", + "@types/react-native": "^0.69.6", + "@types/react-test-renderer": "^18.0.0", + "@typescript-eslint/eslint-plugin": "^5.30.7", + "@typescript-eslint/parser": "^5.30.7", + "eslint": "^8.20.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "lint-staged": "^13.0.3", + "prettier": "^2.7.1", + "prettier-plugin-organize-imports": "^3.0.0", + "react": "^18.0.0", + "react-native": "^0.69.2", + "react-native-builder-bob": "^0.18.3", + "typescript": "^4.8.2" + }, + "dependencies": { + "expo": "~46.0.9", + "expo-splash-screen": "~0.16.2", + "expo-status-bar": "~1.4.0", + "react": "18.0.0", + "react-dom": "18.0.0", + "react-native": "0.69.5", + "react-native-web": "~0.18.7" + } +} diff --git a/cross-platform/ReactNativeDemo/tsconfig.json b/cross-platform/ReactNativeDemo/tsconfig.json new file mode 100644 index 0000000..e12e2a1 --- /dev/null +++ b/cross-platform/ReactNativeDemo/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "isolatedModules": true, + "jsx": "react-native", + "lib": [ + "es2017" + ], + "types": [ + "react-native", + "jest" + ], + "moduleResolution": "node", + "noEmit": true, + "strict": true, + "target": "esnext" + }, + "exclude": [ + "node_modules", + "babel.config.js", + "metro.config.js", + "jest.config.js" + ], + "extends": "expo/tsconfig.base" +} diff --git a/cross-platform/ReactNativeDemo/yarn.lock b/cross-platform/ReactNativeDemo/yarn.lock new file mode 100644 index 0000000..3fc1fb2 --- /dev/null +++ b/cross-platform/ReactNativeDemo/yarn.lock @@ -0,0 +1,8197 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.13.tgz#6aff7b350a1e8c3e40b029e46cbe78e24a913483" + integrity sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw== + +"@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.18.5": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.13.tgz#9be8c44512751b05094a4d3ab05fc53a47ce00ac" + integrity sha512-ZisbOvRRusFktksHSG6pjj1CSvkPkcZq/KHD45LAkVP/oiHJkNBZWfpvlLmX8OtHDG8IuzsFlVRWo08w7Qxn0A== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.13" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.13" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.13" + "@babel/types" "^7.18.13" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.14.0", "@babel/generator@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" + integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== + dependencies: + "@babel/types" "^7.18.13" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz#63e771187bd06d234f95fdf8bd5f8b6429de6298" + integrity sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" + integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.18.11" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz#bff23ace436e3f6aefb61f85ffae2291c80ed1fb" + integrity sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w== + dependencies: + "@babel/helper-function-name" "^7.18.9" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.11" + "@babel/types" "^7.18.10" + +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.18.10", "@babel/parser@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0", "@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.12.9": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.10.tgz#788650d01e518a8a722eb8b3055dd9d73ecb7a35" + integrity sha512-wdGTwWF5QtpTY/gbBtQLAiCnoxfD4qMbN87NYZle1dOZ9Os8Y6zXcKrIaOU8W+TIvFUWVGG9tUgNww3CjXRVVw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.18.6" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-default-from" "^7.18.6" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0", "@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.0.0", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.18.6.tgz#2e45af22835d0b0f8665da2bfd4463649ce5dbc1" + integrity sha512-fqyLgjcxf/1yhyZ6A+yo1u9gJ7eleFQod2lkaUsF9DQ7sbbY3Ligym3L0+I2c0WmqNKDpoD9UTb1AKP3qRMOAQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.2.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.0.0", "@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz#9e03bc4a94475d62b7f4114938e6c5c33372cbf5" + integrity sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.0.0", "@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.9.tgz#5b4cc521426263b5ce08893a2db41097ceba35bf" + integrity sha512-+G6rp2zRuOAInY5wcggsx4+QVao1qPM0osC9fTUVlAV3zOrzTCnrMAFVnR6+a3T8wz1wFIH7KhYMcMB3u1n80A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz#06e9ae8a14d2bc19ce6e3c447d842032a50598fc" + integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.12.17", "@babel/plugin-transform-react-jsx@^7.18.6": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz#ea47b2c4197102c196cbd10db9b3bb20daa820f1" + integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.18.10" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" + integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + +"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.5.0": + version "7.18.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.12.tgz#712e9a71b9e00fde9f8c0238e0cceee86ab2f8fd" + integrity sha512-2vjjam0cum0miPkenUbQswKowuxs/NjMwIKEq0zwegRxXk12C9YOF9STXnaUptITOtOJHKHpzvvWYOjbm6tc0w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-typescript" "^7.18.6" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.12.9", "@babel/preset-env@^7.18.2": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.17.12": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.17.12": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.17.12": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/register@^7.13.16": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.18.6", "@babel/runtime@^7.8.4": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.18.6": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.14.0", "@babel/traverse@^7.18.11", "@babel/traverse@^7.18.13", "@babel/traverse@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" + integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.13" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.13" + "@babel/types" "^7.18.13" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.4.4": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" + integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== + dependencies: + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@eslint/eslintrc@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz#de0807bfeffc37b964a7d0400e0c348ce5a2543d" + integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@expo/bunyan@4.0.0", "@expo/bunyan@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.0.tgz#be0c1de943c7987a9fbd309ea0b1acd605890c7b" + integrity sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA== + dependencies: + uuid "^8.0.0" + optionalDependencies: + mv "~2" + safe-json-stringify "~1" + +"@expo/cli@0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.2.11.tgz#25d8db8e46c6f02ef3edc189fdb6e29c922dd377" + integrity sha512-TIlylp3nghiEdlVliZRcBg8Yb++tnU92HinuQQZznVGFXFCoqJ210SPUJS1j3rxxltt8NhIJjL9OTO7PYRqnsQ== + dependencies: + "@babel/runtime" "^7.14.0" + "@expo/code-signing-certificates" "^0.0.2" + "@expo/config" "~7.0.1" + "@expo/config-plugins" "~5.0.1" + "@expo/dev-server" "~0.1.119" + "@expo/devcert" "^1.0.0" + "@expo/json-file" "^8.2.35" + "@expo/metro-config" "~0.3.18" + "@expo/osascript" "^2.0.31" + "@expo/package-manager" "~0.0.53" + "@expo/plist" "^0.0.18" + "@expo/prebuild-config" "~5.0.3" + "@expo/rudder-sdk-node" "1.1.1" + "@expo/spawn-async" "1.5.0" + "@expo/xcpretty" "^4.2.1" + "@urql/core" "2.3.6" + "@urql/exchange-retry" "0.3.0" + accepts "^1.3.8" + arg "4.1.0" + better-opn "~3.0.2" + bplist-parser "^0.3.1" + cacache "^15.3.0" + chalk "^4.0.0" + ci-info "^3.3.0" + debug "^4.3.4" + env-editor "^0.4.1" + form-data "^3.0.1" + freeport-async "2.0.0" + fs-extra "~8.1.0" + getenv "^1.0.0" + graphql "15.8.0" + graphql-tag "^2.10.1" + internal-ip "4.3.0" + is-root "^2.1.0" + js-yaml "^3.13.1" + json-schema-deref-sync "^0.13.0" + md5-file "^3.2.3" + md5hex "^1.0.0" + minipass "3.1.6" + node-fetch "^2.6.7" + node-forge "^1.3.1" + npm-package-arg "^7.0.0" + ora "3.4.0" + pretty-bytes "5.6.0" + progress "2.0.3" + prompts "^2.3.2" + qrcode-terminal "0.11.0" + requireg "^0.2.2" + resolve-from "^5.0.0" + semver "^6.3.0" + send "^0.18.0" + slugify "^1.3.4" + structured-headers "^0.4.1" + tar "^6.0.5" + tempy "^0.7.1" + terminal-link "^2.1.1" + text-table "^0.2.0" + url-join "4.0.0" + uuid "^3.4.0" + wrap-ansi "^7.0.0" + +"@expo/code-signing-certificates@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz#65cd615800e6724b54831c966dd1a90145017246" + integrity sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg== + dependencies: + node-forge "^1.2.1" + nullthrows "^1.1.1" + +"@expo/config-plugins@~5.0.0", "@expo/config-plugins@~5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-5.0.1.tgz#66bc8d15785bdcd3598e466344f8c0518390179d" + integrity sha512-1OfnsOrfeSkB0VZfT01UjQ5Uq6p+yYbq8yNkj0e99K/6NLHpyvIxj+5tZIV0nQXgkOcqBIABL2uA7lwB8CkaBQ== + dependencies: + "@expo/config-types" "^46.0.0" + "@expo/json-file" "8.2.36" + "@expo/plist" "0.0.18" + "@expo/sdk-runtime-versions" "^1.0.0" + "@react-native/normalize-color" "^2.0.0" + chalk "^4.1.2" + debug "^4.3.1" + find-up "~5.0.0" + getenv "^1.0.0" + glob "7.1.6" + resolve-from "^5.0.0" + semver "^7.3.5" + slash "^3.0.0" + xcode "^3.0.1" + xml2js "0.4.23" + +"@expo/config-types@^46.0.0", "@expo/config-types@^46.0.1": + version "46.0.2" + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-46.0.2.tgz#191f225ebfcbe624868ddc40efae79593f948dd8" + integrity sha512-PXkmOgNwRyBfgVT1HmFZhfh3Qm7WKKyV6mk3/5HJ/LzPh1t+Zs2JrWX8U2YncTLV1QzV7nV8tnkyvszzqnZEzQ== + +"@expo/config@7.0.1", "@expo/config@~7.0.0", "@expo/config@~7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.1.tgz#d8e2e5410bb0b8e305690bbc76e6bb76f6a6de31" + integrity sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA== + dependencies: + "@babel/code-frame" "~7.10.4" + "@expo/config-plugins" "~5.0.1" + "@expo/config-types" "^46.0.1" + "@expo/json-file" "8.2.36" + getenv "^1.0.0" + glob "7.1.6" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + semver "7.3.2" + slugify "^1.3.4" + sucrase "^3.20.0" + +"@expo/configure-splash-screen@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz#07d97ee512fd859fcc09506ba3762fd6263ebc39" + integrity sha512-4DyPoNXJqx9bN4nEwF3HQreo//ECu7gDe1Xor3dnnzFm9P/VDxAKdbEhA0n+R6fgkNfT2onVHWijqvdpTS3Xew== + dependencies: + color-string "^1.5.3" + commander "^5.1.0" + fs-extra "^9.0.0" + glob "^7.1.6" + lodash "^4.17.15" + pngjs "^5.0.0" + xcode "^3.0.0" + xml-js "^1.6.11" + +"@expo/dev-server@~0.1.119": + version "0.1.119" + resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.1.119.tgz#d85036d8ddfd5668fd50ef373616b55580dc7670" + integrity sha512-DcVnj4/YA+b+Ljsz2qffHHN5LbouXFKeE9ER0Yjq5vIb2moV1q3U6LezndFLCf42Uev7C2vSa8YCcP3WOpxuMw== + dependencies: + "@expo/bunyan" "4.0.0" + "@expo/metro-config" "~0.3.18" + "@expo/osascript" "2.0.33" + body-parser "1.19.0" + chalk "^4.0.0" + connect "^3.7.0" + fs-extra "9.0.0" + node-fetch "^2.6.0" + open "^8.3.0" + resolve-from "^5.0.0" + semver "7.3.2" + serialize-error "6.0.0" + temp-dir "^2.0.0" + +"@expo/devcert@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@expo/devcert/-/devcert-1.0.0.tgz#79df9431e806bc546f6399e35934b9876384f0a9" + integrity sha512-cahGyQCmpZmHpn2U04NR9KwsOIZy7Rhsw8Fg4q+A6563lIJxbkrgPnxq/O3NQAh3ohEvOXOOnoFx0b4yycCkpQ== + dependencies: + application-config-path "^0.1.0" + command-exists "^1.2.4" + debug "^3.1.0" + eol "^0.9.1" + get-port "^3.2.0" + glob "^7.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + password-prompt "^1.0.4" + rimraf "^2.6.2" + sudo-prompt "^8.2.0" + tmp "^0.0.33" + tslib "^1.10.0" + +"@expo/image-utils@0.3.20": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.20.tgz#b8777a2ca18e331f084e62ee8e0f047a6fc52c16" + integrity sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A== + dependencies: + "@expo/spawn-async" "1.5.0" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + mime "^2.4.4" + node-fetch "^2.6.0" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "7.3.2" + tempy "0.3.0" + +"@expo/json-file@8.2.36", "@expo/json-file@^8.2.35": + version "8.2.36" + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-8.2.36.tgz#62a505cb7f30a34d097386476794680a3f7385ff" + integrity sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ== + dependencies: + "@babel/code-frame" "~7.10.4" + json5 "^1.0.1" + write-file-atomic "^2.3.0" + +"@expo/metro-config@~0.3.18": + version "0.3.22" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.3.22.tgz#fa4a0729ec8ecbc9c9fb79c63ecc66a299505c82" + integrity sha512-R81sLbaeUBjN8IXcxiVx7GcpSj8z7szILl1b5yJDb38WdIFwxhrseA5wXaTT1yMhI+59w6n99T2qtFV2yD5qYA== + dependencies: + "@expo/config" "7.0.1" + "@expo/json-file" "8.2.36" + chalk "^4.1.0" + debug "^4.3.2" + find-yarn-workspace-root "~2.0.0" + getenv "^1.0.0" + resolve-from "^5.0.0" + sucrase "^3.20.0" + +"@expo/osascript@2.0.33", "@expo/osascript@^2.0.31": + version "2.0.33" + resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.0.33.tgz#e9dcc8da54466c11939074aa71a006024ea884b1" + integrity sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ== + dependencies: + "@expo/spawn-async" "^1.5.0" + exec-async "^2.2.0" + +"@expo/package-manager@~0.0.53": + version "0.0.56" + resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-0.0.56.tgz#214a8db48752cde968827c20c5b54a88187b5422" + integrity sha512-PGk34uz4XDyhoNIlPh2D+BDsiXYuW2jXavTiax8d32uvHlRO6FN0cAsqlWD6fx3H2hRn8cU/leTuc4M7pYovCQ== + dependencies: + "@expo/json-file" "8.2.36" + "@expo/spawn-async" "^1.5.0" + ansi-regex "^5.0.0" + chalk "^4.0.0" + find-up "^5.0.0" + find-yarn-workspace-root "~2.0.0" + npm-package-arg "^7.0.0" + rimraf "^3.0.2" + split "^1.0.1" + sudo-prompt "9.1.1" + +"@expo/plist@0.0.18", "@expo/plist@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.0.18.tgz#9abcde78df703a88f6d9fa1a557ee2f045d178b0" + integrity sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w== + dependencies: + "@xmldom/xmldom" "~0.7.0" + base64-js "^1.2.3" + xmlbuilder "^14.0.0" + +"@expo/prebuild-config@~5.0.0", "@expo/prebuild-config@~5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-5.0.3.tgz#f475797a592f074b5a66f02aef27c6c14c54591e" + integrity sha512-G4j1H3WFjRaiQ+FgFNULrnIm7RsQyjc4xp6lLTP2ydBv79wO3x8wAdeZvaZh7eOkfu9BESpQzACT1uuJTag5jg== + dependencies: + "@expo/config" "7.0.1" + "@expo/config-plugins" "~5.0.1" + "@expo/config-types" "^46.0.0" + "@expo/image-utils" "0.3.20" + "@expo/json-file" "8.2.36" + debug "^4.3.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "7.3.2" + xml2js "0.4.23" + +"@expo/rudder-sdk-node@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz#6aa575f346833eb6290282118766d4919c808c6a" + integrity sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ== + dependencies: + "@expo/bunyan" "^4.0.0" + "@segment/loosely-validate-event" "^2.0.0" + fetch-retry "^4.1.1" + md5 "^2.2.1" + node-fetch "^2.6.1" + remove-trailing-slash "^0.1.0" + uuid "^8.3.2" + +"@expo/sdk-runtime-versions@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz#d7ebd21b19f1c6b0395e50d78da4416941c57f7c" + integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== + +"@expo/spawn-async@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.5.0.tgz#799827edd8c10ef07eb1a2ff9dcfe081d596a395" + integrity sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew== + dependencies: + cross-spawn "^6.0.5" + +"@expo/spawn-async@^1.5.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.0.tgz#3ab6082b24318cccc4e73b13464da91325555500" + integrity sha512-sqPAjOEFTrjaTybrh9SnPFLInDXcoMC06psEFmH68jLTmoipSQCq8GCEfIoHhxRDALWB+DsiwXJSbXlE/iVIIQ== + dependencies: + cross-spawn "^7.0.3" + +"@expo/vector-icons@^13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-13.0.0.tgz#e2989b85e95a82bce216f88cf8fb583ab050ec95" + integrity sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA== + +"@expo/xcpretty@^4.2.1": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.2.2.tgz#7890f86b017015be8a20242ae74fe6ed4b80a92c" + integrity sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw== + dependencies: + "@babel/code-frame" "7.10.4" + chalk "^4.1.0" + find-up "^5.0.0" + js-yaml "^4.1.0" + +"@gar/promisify@^1.0.1": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@graphql-typed-document-node/core@^3.1.0", "@graphql-typed-document-node/core@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" + integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jest/create-cache-key-function@^27.0.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" + integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ== + dependencies: + "@jest/types" "^27.5.1" + +"@jest/expect-utils@^29.0.2": + version "29.0.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.0.2.tgz#00dfcb9e6fe99160c326ba39f7734b984543dea8" + integrity sha512-+wcQF9khXKvAEi8VwROnCWWmHfsJYCZAs5dmuMlJBKk57S6ZN2/FQMIlo01F29fJyT8kV/xblE7g3vkIdTLOjw== + dependencies: + jest-get-type "^29.0.0" + +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^29.0.2": + version "29.0.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.0.2.tgz#5a5391fa7f7f41bf4b201d6d2da30e874f95b6c1" + integrity sha512-5WNMesBLmlkt1+fVkoCjHa0X3i3q8zc4QLTDkdHgCa2gyPZc7rdlZBWgVLqwS1860ZW5xJuCDwAzqbGaXIr/ew== + dependencies: + "@jest/schemas" "^29.0.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/fs@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== + dependencies: + "@gar/promisify" "^1.0.1" + semver "^7.3.5" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@react-native-community/cli-clean@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-8.0.4.tgz#97e16a20e207b95de12e29b03816e8f2b2c80cc7" + integrity sha512-IwS1M1NHg6+qL8PThZYMSIMYbZ6Zbx+lIck9PLBskbosFo24M3lCOflOl++Bggjakp6mR+sRXxLMexid/GeOsQ== + dependencies: + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + execa "^1.0.0" + prompts "^2.4.0" + +"@react-native-community/cli-config@^8.0.6": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-8.0.6.tgz#041eee7dd8fdef595bf7a3f24228c173bf294a44" + integrity sha512-mjVpVvdh8AviiO8xtqeX+BkjqE//NMDnISwsLWSJUfNCwTAPmdR8PGbhgP5O4hWHyJ3WkepTopl0ya7Tfi3ifw== + dependencies: + "@react-native-community/cli-tools" "^8.0.4" + cosmiconfig "^5.1.0" + deepmerge "^3.2.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-8.0.0.tgz#98263dc525e65015e2d6392c940114028f87e8e9" + integrity sha512-u2jq06GZwZ9sRERzd9FIgpW6yv4YOW4zz7Ym/B8eSzviLmy3yI/8mxJtvlGW+J8lBsfMcQoqJpqI6Rl1nZy9yQ== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@^8.0.6": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-8.0.6.tgz#954250155ab2f3a66a54821e071bc4a631d2dfff" + integrity sha512-ZQqyT9mJMVeFEVIwj8rbDYGCA2xXjJfsQjWk2iTRZ1CFHfhPSUuUiG8r6mJmTinAP9t+wYcbbIYzNgdSUKnDMw== + dependencies: + "@react-native-community/cli-config" "^8.0.6" + "@react-native-community/cli-platform-ios" "^8.0.6" + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + command-exists "^1.2.8" + envinfo "^7.7.2" + execa "^1.0.0" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + node-stream-zip "^1.9.1" + ora "^5.4.1" + prompts "^2.4.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + sudo-prompt "^9.0.0" + wcwidth "^1.0.1" + +"@react-native-community/cli-hermes@^8.0.5": + version "8.0.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-8.0.5.tgz#639edc6b0ce73f705e4b737e3de1cc47d42516ff" + integrity sha512-Zm0wM6SfgYAEX1kfJ1QBvTayabvh79GzmjHyuSnEROVNPbl4PeCG4WFbwy489tGwOP9Qx9fMT5tRIFCD8bp6/g== + dependencies: + "@react-native-community/cli-platform-android" "^8.0.5" + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + ip "^1.1.5" + +"@react-native-community/cli-platform-android@^8.0.4", "@react-native-community/cli-platform-android@^8.0.5": + version "8.0.5" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.5.tgz#da11d2678adeca98e83494d68de80e50571b4af4" + integrity sha512-z1YNE4T1lG5o9acoQR1GBvf7mq6Tzayqo/za5sHVSOJAC9SZOuVN/gg/nkBa9a8n5U7qOMFXfwhTMNqA474gXA== + dependencies: + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + execa "^1.0.0" + fs-extra "^8.1.0" + glob "^7.1.3" + jetifier "^1.6.2" + lodash "^4.17.15" + logkitty "^0.7.1" + slash "^3.0.0" + +"@react-native-community/cli-platform-ios@^8.0.4", "@react-native-community/cli-platform-ios@^8.0.6": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.6.tgz#ab80cd4eb3014b8fcfc9bd1b53ec0a9f8e5d1430" + integrity sha512-CMR6mu/LVx6JVfQRDL9uULsMirJT633bODn+IrYmrwSz250pnhON16We8eLPzxOZHyDjm7JPuSgHG3a/BPiRuQ== + dependencies: + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + execa "^1.0.0" + glob "^7.1.3" + js-yaml "^3.13.1" + lodash "^4.17.15" + ora "^5.4.1" + plist "^3.0.2" + +"@react-native-community/cli-plugin-metro@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.4.tgz#a364a50a2e05fc5d0b548759e499e5b681b6e4cc" + integrity sha512-UWzY1eMcEr/6262R2+d0Is5M3L/7Y/xXSDIFMoc5Rv5Wucl3hJM/TxHXmByvHpuJf6fJAfqOskyt4bZCvbI+wQ== + dependencies: + "@react-native-community/cli-server-api" "^8.0.4" + "@react-native-community/cli-tools" "^8.0.4" + chalk "^4.1.2" + metro "^0.70.1" + metro-config "^0.70.1" + metro-core "^0.70.1" + metro-react-native-babel-transformer "^0.70.1" + metro-resolver "^0.70.1" + metro-runtime "^0.70.1" + readline "^1.3.0" + +"@react-native-community/cli-server-api@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-8.0.4.tgz#d45d895a0a6e8b960c9d677188d414a996faa4d3" + integrity sha512-Orr14njx1E70CVrUA8bFdl+mrnbuXUjf1Rhhm0RxUadFpvkHuOi5dh8Bryj2MKtf8eZrpEwZ7tuQPhJEULW16A== + dependencies: + "@react-native-community/cli-debugger-ui" "^8.0.0" + "@react-native-community/cli-tools" "^8.0.4" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.0" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@^8.0.4": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-8.0.4.tgz#994b9d56c84472491c876b71acd4356773fcbe65" + integrity sha512-ePN9lGxh6LRFiotyddEkSmuqpQhnq2iw9oiXYr4EFWpIEy0yCigTuSTiDF68+c8M9B+7bTwkRpz/rMPC4ViO5Q== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + lodash "^4.17.15" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^6.3.0" + shell-quote "^1.7.3" + +"@react-native-community/cli-types@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-8.0.0.tgz#72d24178e5ed1c2d271da43e0a4a4f59178f261a" + integrity sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@^8.0.4": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.6.tgz#7aae37843ab8e44b75c477c1de69f4c902e599ef" + integrity sha512-E36hU/if3quQCfJHGWVkpsCnwtByRCwORuAX0r6yr1ebKktpKeEO49zY9PAu/Z1gfyxCtgluXY0HfRxjKRFXTg== + dependencies: + "@react-native-community/cli-clean" "^8.0.4" + "@react-native-community/cli-config" "^8.0.6" + "@react-native-community/cli-debugger-ui" "^8.0.0" + "@react-native-community/cli-doctor" "^8.0.6" + "@react-native-community/cli-hermes" "^8.0.5" + "@react-native-community/cli-plugin-metro" "^8.0.4" + "@react-native-community/cli-server-api" "^8.0.4" + "@react-native-community/cli-tools" "^8.0.4" + "@react-native-community/cli-types" "^8.0.0" + chalk "^4.1.2" + commander "^2.19.0" + execa "^1.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + leven "^3.1.0" + lodash "^4.17.15" + minimist "^1.2.0" + prompts "^2.4.0" + semver "^6.3.0" + +"@react-native/assets@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" + integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== + +"@react-native/normalize-color@2.0.0", "@react-native/normalize-color@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" + integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== + +"@react-native/polyfills@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa" + integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ== + +"@segment/loosely-validate-event@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz#87dfc979e5b4e7b82c5f1d8b722dfd5d77644681" + integrity sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw== + dependencies: + component-type "^1.2.1" + join-component "^1.1.0" + +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.24.1": + version "0.24.34" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.34.tgz#35b799cf98a203d1940c8ce06688f9a09fbc0f50" + integrity sha512-x3ejWKw7rpy30Bvm6U0AQMOHdjqe2E3YJrBHlTxH0KFsp77bBa+MH324nJxtXZFpnTy/JW2h5HPYVm0vG2WPnw== + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.0.0.tgz#bc66835bf6b09d6a47e22c21d7f5b82692e60e72" + integrity sha512-X6Zjz3WO4cT39Gkl0lZ2baFRaEMqJl5NC1OjElkwtNzAlbkr2K/WJXkBkH5VP0zx4Hgsd2TZYdOEfvp2Dxia+Q== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/node@*": + version "18.7.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.13.tgz#23e6c5168333480d454243378b69e861ab5c011a" + integrity sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-native@^0.69.6": + version "0.69.6" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.69.6.tgz#b792b7eb024a14869fdbbe97536e6014cb3be731" + integrity sha512-jx1QdJT3CdQc42EpoIGu22F1wrPZjmC/CNkfR5sRs5GxloJzthuICK7CKqAGEo2SekPs+YYzhbzrJGi1IrG5Lg== + dependencies: + "@types/react" "*" + +"@types/react-test-renderer@^18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz#7b7f69ca98821ea5501b21ba24ea7b6139da2243" + integrity sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.0.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.17.tgz#4583d9c322d67efe4b39a935d223edcc7050ccf4" + integrity sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^18.0.18": + version "18.0.18" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.18.tgz#9f16f33d57bc5d9dca848d12c3572110ff9429ac" + integrity sha512-6hI08umYs6NaiHFEEGioXnxJ+oEhY3eRz8VCUaudZmGdtvPviCJB8mgaMxaDWAdPSYd4eFavrPk2QIolwbLYrg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.12.tgz#0745ff3e4872b4ace98616d4b7e37ccbd75f9526" + integrity sha512-Nz4MPhecOFArtm81gFQvQqdV7XYCrWKx5uUt6GNHredFHn1i2mtWqXTON7EPXMtNi1qjtjEM/VCHDhcHsAMLXQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.30.7": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz#0d822bfea7469904dfc1bb8f13cabd362b967c93" + integrity sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg== + dependencies: + "@typescript-eslint/scope-manager" "5.35.1" + "@typescript-eslint/type-utils" "5.35.1" + "@typescript-eslint/utils" "5.35.1" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.30.7": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.35.1.tgz#bf2ee2ebeaa0a0567213748243fb4eec2857f04f" + integrity sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg== + dependencies: + "@typescript-eslint/scope-manager" "5.35.1" + "@typescript-eslint/types" "5.35.1" + "@typescript-eslint/typescript-estree" "5.35.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz#ccb69d54b7fd0f2d0226a11a75a8f311f525ff9e" + integrity sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q== + dependencies: + "@typescript-eslint/types" "5.35.1" + "@typescript-eslint/visitor-keys" "5.35.1" + +"@typescript-eslint/type-utils@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz#d50903b56758c5c8fc3be52b3be40569f27f9c4a" + integrity sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw== + dependencies: + "@typescript-eslint/utils" "5.35.1" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.35.1.tgz#af355fe52a0cc88301e889bc4ada72f279b63d61" + integrity sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ== + +"@typescript-eslint/typescript-estree@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz#db878a39a0dbdc9bb133f11cdad451770bfba211" + integrity sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA== + dependencies: + "@typescript-eslint/types" "5.35.1" + "@typescript-eslint/visitor-keys" "5.35.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.35.1.tgz#ae1399afbfd6aa7d0ed1b7d941e9758d950250eb" + integrity sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.35.1" + "@typescript-eslint/types" "5.35.1" + "@typescript-eslint/typescript-estree" "5.35.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.35.1": + version "5.35.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz#285e9e34aed7c876f16ff646a3984010035898e6" + integrity sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g== + dependencies: + "@typescript-eslint/types" "5.35.1" + eslint-visitor-keys "^3.3.0" + +"@urql/core@2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-2.3.6.tgz#ee0a6f8fde02251e9560c5f17dce5cd90f948552" + integrity sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw== + dependencies: + "@graphql-typed-document-node/core" "^3.1.0" + wonka "^4.0.14" + +"@urql/core@>=2.3.1": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-3.0.2.tgz#91008bc112000dd42c5260142e4eed7901def6bd" + integrity sha512-TRpQOdt1Mtpt/EgPlFCx9Aqc3TbHtzH3yj8pJ9yjSUKT4slRyy+ofMQ8yx50oZzZjAOswF02zBRwnxsZANb35A== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + wonka "^6.0.0" + +"@urql/exchange-retry@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz#13252108b5a111aab45f9982f4db18d1a286e423" + integrity sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg== + dependencies: + "@urql/core" ">=2.3.1" + wonka "^4.0.14" + +"@xmldom/xmldom@~0.7.0": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" + integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== + +accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +application-config-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" + integrity sha512-lljTpVvFteShrHuKRvweZfa9o/Nc34Y8r5/1Lqh/yyKaspRT2J3fkEiSSk1YLG8ZSVyU7yHysRy9zcDDS2aH1Q== + +arg@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.0.tgz#583c518199419e0037abb74062c37f8519e575f0" + integrity sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +ast-types@0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-module-resolver@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" + integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== + dependencies: + find-babel-config "^1.2.0" + glob "^7.1.6" + pkg-up "^3.1.0" + reselect "^4.0.0" + resolve "^1.13.1" + +babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" + integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.2" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" + integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + +babel-plugin-react-native-web@~0.18.2: + version "0.18.8" + resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.8.tgz#140dd020c48170f0cbeaef27fb14445733d66d8d" + integrity sha512-4UwlBe9ZiWNMes8nK+qRn9ql6nZuSKcgu87YuFmnU9maEYIP1megcRcjbA5mAViaV3ct6PTyntTVf8thathf6Q== + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-preset-expo@~9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.2.0.tgz#d01793e3a556065f103b3095fbbc959d52f08e88" + integrity sha512-aM2htiNx0H49H+MWCp9+cKVSdcdNSn0tbE5Dln/GO1xna4ZlnA30clbfClcYJFUcZtW90IsYeZwQ/hj8zyWhNA== + dependencies: + "@babel/plugin-proposal-decorators" "^7.12.9" + "@babel/plugin-transform-react-jsx" "^7.12.17" + "@babel/preset-env" "^7.12.9" + babel-plugin-module-resolver "^4.1.0" + babel-plugin-react-native-web "~0.18.2" + metro-react-native-babel-preset "~0.70.3" + +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +better-opn@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" + integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== + dependencies: + open "^8.0.4" + +big-integer@1.6.x: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blueimp-md5@^2.10.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0" + integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bplist-creator@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" + integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== + dependencies: + stream-buffers "2.2.x" + +bplist-parser@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1" + integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== + dependencies: + big-integer "1.6.x" + +bplist-parser@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.20.2, browserslist@^4.20.4, browserslist@^4.21.3: + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + dependencies: + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" + node-releases "^2.0.6" + update-browserslist-db "^1.0.5" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== + dependencies: + "@npmcli/fs" "^1.0.0" + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001370: + version "1.0.30001384" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001384.tgz#029527c2d781a3cfef13fa63b3a78a6088e35973" + integrity sha512-BBWt57kqWbc0GYZXb47wTXpmAgqr5LSibPzNjk/AWMdmJMQhLqOl3c/Kd4OAU/tu4NLfYkMx8Tlq3RVBkOBolQ== + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +charenc@0.0.2, charenc@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0, ci-info@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.0.0, cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.3: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colorette@^2.0.16, colorette@^2.0.17: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.4, command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^9.3.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compare-versions@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.2.1.tgz#8a47901700238e4fc32269771230226f24b415a9" + integrity sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect@^3.6.5, connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.25.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.0.tgz#489affbfbf9cb3fa56192fe2dd9ebaee985a66c5" + integrity sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow== + dependencies: + browserslist "^4.21.3" + semver "7.0.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-react-class@^15.7.0: + version "15.7.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e" + integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng== + dependencies: + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@0.0.2, crypt@~0.0.1: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg== + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-in-js-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz#3b472b398787291b47cfe3e44fecfdd9e914ba99" + integrity sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA== + dependencies: + hyphenate-style-name "^1.0.2" + isobject "^3.0.1" + +csstype@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" + integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== + +dag-map@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dag-map/-/dag-map-1.0.2.tgz#e8379f041000ed561fc515475c1ed2c85eece8d7" + integrity sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw== + +dayjs@^1.8.15: + version "1.11.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^6.0.0, del@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +diff-sequences@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.0.0.tgz#bae49972ef3933556bcb0800b72e8579d19d9e4f" + integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.202: + version "1.4.233" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.233.tgz#aa142e45468bda111b88abc9cc59d573b75d6a60" + integrity sha512-ejwIKXTg1wqbmkcRJh9Ur3hFGHFDZDw1POzdsVrB2WZjgRuRMHIQQKNpe64N/qh3ZtH2otEoRoS+s6arAAuAAw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +env-editor@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" + integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== + +envinfo@^7.7.2: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.30.1: + version "7.31.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" + integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.20.0: + version "8.23.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040" + integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== + dependencies: + "@eslint/eslintrc" "^1.3.1" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +exec-async@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/exec-async/-/exec-async-2.2.0.tgz#c7c5ad2eef3478d38390c6dd3acfe8af0efc8301" + integrity sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^3.0.1" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^29.0.0: + version "29.0.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.0.2.tgz#22c7132400f60444b427211f1d6bb604a9ab2420" + integrity sha512-JeJlAiLKn4aApT4pzUXBVxl3NaZidWIOdg//smaIlP9ZMBDkHZGFd9ubphUZP9pUyDEo7bC6M0IIZR51o75qQw== + dependencies: + "@jest/expect-utils" "^29.0.2" + jest-get-type "^29.0.0" + jest-matcher-utils "^29.0.2" + jest-message-util "^29.0.2" + jest-util "^29.0.2" + +expo-application@~4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-4.2.2.tgz#c9500819723c59eaee5ca9832bf17d1fd4139f74" + integrity sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g== + +expo-asset@~8.6.1: + version "8.6.1" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.6.1.tgz#86355b3e231e8aa6cf68a456ce9746dff1478b48" + integrity sha512-urbUp1YtwH2J0Qc3inGQJdqTjWKML77SeMNgff+iR9MUE8gDkFqSCDjrBi7i5Oj5DDtq43mmtDg8G8ei6Vchcg== + dependencies: + blueimp-md5 "^2.10.0" + expo-constants "~13.2.2" + expo-file-system "~14.1.0" + invariant "^2.2.4" + md5-file "^3.2.3" + path-browserify "^1.0.0" + url-parse "^1.5.9" + +expo-constants@~13.2.2, expo-constants@~13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-13.2.4.tgz#eab4a553f074b2c60ad7a158d3b82e3484a94606" + integrity sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw== + dependencies: + "@expo/config" "~7.0.0" + uuid "^3.3.2" + +expo-error-recovery@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz#3a4543382904a5e70829cb41d7fc0f022c2bef6e" + integrity sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w== + +expo-file-system@~14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-14.1.0.tgz#4fa410873ef12ac8bec873593f7489f4305a14b8" + integrity sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ== + dependencies: + "@expo/config-plugins" "~5.0.0" + uuid "^3.4.0" + +expo-font@~10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-10.2.0.tgz#881f767e13b2b534a4d3ffaedcf675ce6b63439d" + integrity sha512-2V4EcpmhNoppaLn+lPprZVS+3bmV9hxLPKttKh2u8ghjH/oX9bv3u4JVo77SYh0EfrWO4toqVyXn8pXH8GpbIg== + dependencies: + fontfaceobserver "^2.1.0" + +expo-keep-awake@~10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz#46f04740bccd321732bbbed93491e2076d5dbbd7" + integrity sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ== + +expo-modules-autolinking@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-0.10.3.tgz#31bfcf3e4b613a7c3949fb1f1e9c23eea4c14caf" + integrity sha512-av9ln2zwUt303g98raX7sDmESgL3SXs1sbbtIjh1rL7R0676XIUacIKgbydR0/4tMbOShWx14Z9fozpk9xIAJA== + dependencies: + chalk "^4.1.0" + commander "^7.2.0" + fast-glob "^3.2.5" + find-up "^5.0.0" + fs-extra "^9.1.0" + +expo-modules-core@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-0.11.4.tgz#6b7a27bb212f3fbf7d6803f747f6491aa73a2a09" + integrity sha512-8dEYICk7hUi1GPz5hWm8dBuZDGc+4Tm7zDhSIhKApo5jY/5vB4Bk+fjPo693iWn6pp3+XBHT8Ri8rJ3G7wH1vQ== + dependencies: + compare-versions "^3.4.0" + invariant "^2.2.4" + +expo-splash-screen@~0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.16.2.tgz#38ecba9fc9fc2234ee38bcb818d8c88cd83cff9e" + integrity sha512-AHSRyGwu58WNt8shW5g/4cQ9e9IzUwNTC/WGWxshHCwgbWIJmHLvK3+D45MTmzGWteOoTI8oV7KSQKBNJSTiyw== + dependencies: + "@expo/configure-splash-screen" "^0.6.0" + "@expo/prebuild-config" "~5.0.0" + +expo-status-bar@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.4.0.tgz#c0317de2c53878340f4b4f00ff7e4ba14399a7fb" + integrity sha512-vh98g8qMIjig/2XTBsoAWS6Vo2dIIwDWjB3/GiuZ9Lazpxc9GO/APfJ4dar7MibzIDUKIrjotrcL6rLdPH13Ew== + +expo@~46.0.9: + version "46.0.9" + resolved "https://registry.yarnpkg.com/expo/-/expo-46.0.9.tgz#4b4b943343c45c3a05c71da49c1cfd5555ab5f85" + integrity sha512-UsBjm0BL7w+OyF6kypVPrk3jhg9cCXF0D9CaOWQ+cedm7oT4mTVQx9+A45VsDvLzNWBjJejZQZ1PFKqOY5HNcQ== + dependencies: + "@babel/runtime" "^7.14.0" + "@expo/cli" "0.2.11" + "@expo/vector-icons" "^13.0.0" + babel-preset-expo "~9.2.0" + cross-spawn "^6.0.5" + expo-application "~4.2.2" + expo-asset "~8.6.1" + expo-constants "~13.2.4" + expo-file-system "~14.1.0" + expo-font "~10.2.0" + expo-keep-awake "~10.2.0" + expo-modules-autolinking "0.10.3" + expo-modules-core "0.11.4" + fbemitter "^3.0.0" + getenv "^1.0.0" + invariant "^2.2.4" + md5-file "^3.2.3" + node-fetch "^2.6.7" + pretty-format "^26.5.2" + uuid "^3.4.0" + optionalDependencies: + expo-error-recovery "~3.2.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.5, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + +fetch-retry@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-4.1.1.tgz#fafe0bb22b54f4d0a9c788dff6dd7f8673ca63f3" + integrity sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-babel-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0, find-up@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-yarn-workspace-root@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +flow-parser@0.*: + version "0.185.2" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.185.2.tgz#cb7ee57f77377d6c5d69a469e980f6332a15e492" + integrity sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ== + +flow-parser@^0.121.0: + version "0.121.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.121.0.tgz#9f9898eaec91a9f7c323e9e992d81ab5c58e618f" + integrity sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg== + +fontfaceobserver@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8" + integrity sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +form-data@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +freeport-async@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4" + integrity sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + integrity sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0, fs-extra@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getenv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31" + integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg== + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.1, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +graphql-tag@^2.10.1: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql@15.8.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hermes-engine@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/hermes-engine/-/hermes-engine-0.11.0.tgz#bb224730d230a02a5af02c4e090d1f52d57dd3db" + integrity sha512-7aMUlZja2IyLYAcZ69NBnwJAR5ZOYlSllj0oMpx08a8HzxHOys0eKCzfphrf6D0vX1JGO1QQvVsQKe6TkYherw== + +hermes-estree@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.6.0.tgz#e866fddae1b80aec65fe2ae450a5f2070ad54033" + integrity sha512-2YTGzJCkhdmT6VuNprWjXnvTvw/3iPNw804oc7yknvQpNKo+vJGZmtvLLCghOZf0OwzKaNAzeIMp71zQbNl09w== + +hermes-parser@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.6.0.tgz#00d14e91bca830b3c1457050fa4187400cb96328" + integrity sha512-Vf58jBZca2+QBLR9h7B7mdg8oFz2g5ILz1iVouZ5DOrOrAfBmPfJjdjDT8jrO0f+iJ4/hSRrQHqHIjSnTaLUDQ== + dependencies: + hermes-estree "0.6.0" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +hosted-git-info@^3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +human-signals@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== + +hyphenate-style-name@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2" + integrity sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-prefixer@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.1.tgz#c5c0e43ba8831707afc5f5bbfd97edf45c1fa7ae" + integrity sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ== + dependencies: + css-in-js-utils "^2.0.0" + +internal-ip@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.1, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + +is-git-dirty@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-git-dirty/-/is-git-dirty-2.0.1.tgz#29ca82fb0924ccbeaa0bae08de217546df593012" + integrity sha512-zn3CNLDbSR+y7+VDDw7/SwTRRuECn4OpAyelo5MDN+gVxdzM8SUDd51ZwPIOxhljED44Riu0jiiNtC8w0bcLdA== + dependencies: + execa "^4.0.3" + is-git-repository "^2.0.0" + +is-git-repository@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-git-repository/-/is-git-repository-2.0.0.tgz#fa036007fe9697198c2c89dac4dd8304a6101e1c" + integrity sha512-HDO50CG5suIAcmqG4F1buqVXEZRPn+RaXIn9pFKq/947FBo2bCRwK7ZluEVZOy99a4IQyqsjbKEpAiOXCccOHQ== + dependencies: + execa "^4.0.3" + is-absolute "^1.0.0" + +is-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== + dependencies: + is-extglob "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-invalid-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34" + integrity sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ== + dependencies: + is-glob "^2.0.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-valid-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df" + integrity sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A== + dependencies: + is-invalid-path "^0.1.0" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-diff@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.0.2.tgz#1a99419efda66f9ee72f91e580e774df95de5ddc" + integrity sha512-b9l9970sa1rMXH1owp2Woprmy42qIwwll/htsw4Gf7+WuSp5bZxNhkKHDuCGKL+HoHn1KhcC+tNEeAPYBkD2Jg== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.0.0" + jest-get-type "^29.0.0" + pretty-format "^29.0.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-get-type@^29.0.0: + version "29.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.0.0.tgz#843f6c50a1b778f7325df1129a0fd7aa713aef80" + integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw== + +jest-haste-map@^27.3.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-matcher-utils@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.0.2.tgz#0ffdcaec340a9810caee6c73ff90fb029b446e10" + integrity sha512-s62YkHFBfAx0JLA2QX1BlnCRFwHRobwAv2KP1+YhjzF6ZCbCVrf1sG8UJyn62ZUsDaQKpoo86XMTjkUyO5aWmQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.0.2" + jest-get-type "^29.0.0" + pretty-format "^29.0.2" + +jest-message-util@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.0.2.tgz#b2781dfb6a2d1c63830d9684c5148ae3155c6154" + integrity sha512-kcJAgms3ckJV0wUoLsAM40xAhY+pb9FVSZwicjFU9PFkaTNmqh9xd99/CzKse48wPM1ANUQKmp03/DpkY+lGrA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.0.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.0.2" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.0.2.tgz#c75c5cab7f3b410782f9570a60c5558b5dfb6e3a" + integrity sha512-ozk8ruEEEACxqpz0hN9UOgtPZS0aN+NffwQduR5dVlhN+eN47vxurtvgZkYZYMpYrsmlAEx1XabkB3BnN0GfKQ== + dependencies: + "@jest/types" "^29.0.2" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^26.5.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-worker@^27.2.0, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jetifier@^1.6.2: + version "1.6.8" + resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.8.tgz#e88068697875cbda98c32472902c4d3756247798" + integrity sha512-3Zi16h6L5tXDRQJTb221cnRoVG9/9OvreLdLU2/ZjRv/GILL+2Cemt0IKvkowwkDpvouAU1DQPOJ7qaiHeIdrw== + +jetifier@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-2.0.0.tgz#699391367ca1fe7bc4da5f8bf691eb117758e4cb" + integrity sha512-J4Au9KuT74te+PCCCHKgAjyLlEa+2VyIAEPNCdE5aNkAJ6FAJcAqcdzEkSnzNksIa9NkGmC4tPiClk2e7tCJuQ== + +jimp-compact@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3" + integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== + +joi@^17.2.1: + version "17.6.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" + integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +join-component@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/join-component/-/join-component-1.1.0.tgz#b8417b750661a392bee2c2537c68b2a9d4977cd5" + integrity sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsc-android@^250230.2.1: + version "250230.2.1" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250230.2.1.tgz#3790313a970586a03ab0ad47defbc84df54f1b83" + integrity sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q== + +jscodeshift@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.13.1.tgz#69bfe51e54c831296380585c6d9e733512aecdef" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.4" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-deref-sync@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz#cb08b4ff435a48b5a149652d7750fdd071009823" + integrity sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg== + dependencies: + clone "^2.1.2" + dag-map "~1.0.0" + is-valid-path "^0.1.1" + lodash "^4.17.13" + md5 "~2.2.0" + memory-cache "~0.2.0" + traverse "~0.6.6" + valid-url "~1.0.9" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.1.4: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lint-staged@^13.0.3: + version "13.0.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.3.tgz#d7cdf03a3830b327a2b63c6aec953d71d9dc48c6" + integrity sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.17" + commander "^9.3.0" + debug "^4.3.4" + execa "^6.1.0" + lilconfig "2.0.5" + listr2 "^4.0.5" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.2" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.1.1" + +listr2@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" + integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.5" + through "^2.3.8" + wrap-ansi "^7.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +md5-file@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== + dependencies: + buffer-alloc "^1.1.0" + +md5@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + +md5@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" + integrity sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ== + dependencies: + charenc "~0.0.1" + crypt "~0.0.1" + is-buffer "~1.1.1" + +md5hex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/md5hex/-/md5hex-1.0.0.tgz#ed74b477a2ee9369f75efee2f08d5915e52a42e8" + integrity sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +memory-cache@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a" + integrity sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +metro-babel-transformer@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.70.3.tgz#dca61852be273824a4b641bd1ecafff07ff3ad1f" + integrity sha512-bWhZRMn+mIOR/s3BDpFevWScz9sV8FGktVfMlF1eJBLoX24itHDbXvTktKBYi38PWIKcHedh6THSFpJogfuwNA== + dependencies: + "@babel/core" "^7.14.0" + hermes-parser "0.6.0" + metro-source-map "0.70.3" + nullthrows "^1.1.1" + +metro-cache-key@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.70.3.tgz#898803db04178a8f440598afba7d82a9cf35abf7" + integrity sha512-0zpw+IcpM3hmGd5sKMdxNv3sbOIUYnMUvx1/yaM6vNRReSPmOLX0bP8fYf3CGgk8NEreZ1OHbVsuw7bdKt40Mw== + +metro-cache@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.70.3.tgz#42cf3cdf8a7b3691f3bef9a86bed38d4c5f6201f" + integrity sha512-iCix/+z812fUqa6KlOxaTkY6LQQDoXIe/VljXkGIvpygSCmYyhjQpfQVZEVVPezFmUBYXNdabdQ6cYx6JX3yMg== + dependencies: + metro-core "0.70.3" + rimraf "^2.5.4" + +metro-config@0.70.3, metro-config@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.70.3.tgz#fe6f7330f679d5594e5724af7a69d4dbe1bb5bc3" + integrity sha512-SSCDjSTygoCgzoj61DdrBeJzZDRwQxUEfcgc6t6coxWSExXNR4mOngz0q4SAam49Bmjq9J2Jft6qUKnUTPrRgA== + dependencies: + cosmiconfig "^5.0.5" + jest-validate "^26.5.2" + metro "0.70.3" + metro-cache "0.70.3" + metro-core "0.70.3" + metro-runtime "0.70.3" + +metro-core@0.70.3, metro-core@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.70.3.tgz#bf4dda15a5185f5a7931de463a1b97ac9ef680a0" + integrity sha512-NzfHB/w5R7yLaOeU1tzPTbBzCRsYSvpKJkLMP0yudszKZzIAZqNdjoEJ9GZ688Wi0ynZxcU0BxukXh4my80ZBw== + dependencies: + jest-haste-map "^27.3.1" + lodash.throttle "^4.1.1" + metro-resolver "0.70.3" + +metro-hermes-compiler@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-hermes-compiler/-/metro-hermes-compiler-0.70.3.tgz#ac7ed656fbcf0a59adcd010d3639e4cfdbc76b4f" + integrity sha512-W6WttLi4E72JL/NyteQ84uxYOFMibe0PUr9aBKuJxxfCq6QRnJKOVcNY0NLW0He2tneXGk+8ZsNz8c0flEvYqg== + +metro-inspector-proxy@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-inspector-proxy/-/metro-inspector-proxy-0.70.3.tgz#321c25b2261e76d8c4bcc39e092714adfcb50a14" + integrity sha512-qQoNdPGrmyoJSWYkxSDpTaAI8xyqVdNDVVj9KRm1PG8niSuYmrCCFGLLFsMvkVYwsCWUGHoGBx0UoAzVp14ejw== + dependencies: + connect "^3.6.5" + debug "^2.2.0" + ws "^7.5.1" + yargs "^15.3.1" + +metro-minify-uglify@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.70.3.tgz#2f28129ca5b8ef958f3e3fcf004c3707c7732e1e" + integrity sha512-oHyjV9WDqOlDE1FPtvs6tIjjeY/oP1PNUPYL1wqyYtqvjN+zzAOrcbsAAL1sv+WARaeiMsWkF2bwtNo+Hghoog== + dependencies: + uglify-es "^3.1.9" + +metro-react-native-babel-preset@0.70.3, metro-react-native-babel-preset@~0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz#1c77ec4544ecd5fb6c803e70b21284d7483e4842" + integrity sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg== + dependencies: + "@babel/core" "^7.14.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.0.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.2.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-exponentiation-operator" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + react-refresh "^0.4.0" + +metro-react-native-babel-transformer@0.70.3, metro-react-native-babel-transformer@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.70.3.tgz#195597c32488f820aa9e441bbca7c04fe7de7a2d" + integrity sha512-WKBU6S/G50j9cfmFM4k4oRYprd8u3qjleD4so1E2zbTNILg+gYla7ZFGCAvi2G0ZcqS2XuGCR375c2hF6VVvwg== + dependencies: + "@babel/core" "^7.14.0" + babel-preset-fbjs "^3.4.0" + hermes-parser "0.6.0" + metro-babel-transformer "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-source-map "0.70.3" + nullthrows "^1.1.1" + +metro-resolver@0.70.3, metro-resolver@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.70.3.tgz#c64fdd6d0a88fa62f3f99f87e539b5f603bd47bf" + integrity sha512-5Pc5S/Gs4RlLbziuIWtvtFd9GRoILlaRC8RZDVq5JZWcWHywKy/PjNmOBNhpyvtRlzpJfy/ssIfLhu8zINt1Mw== + dependencies: + absolute-path "^0.0.0" + +metro-runtime@0.70.3, metro-runtime@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.70.3.tgz#09231b9d05dcbdfb5a13df0a45307273e6fe1168" + integrity sha512-22xU7UdXZacniTIDZgN2EYtmfau2pPyh97Dcs+cWrLcJYgfMKjWBtesnDcUAQy3PHekDYvBdJZkoQUeskYTM+w== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.70.3.tgz#f5976108c18d4661eaa4d188c96713e5d67a903b" + integrity sha512-zsYtZGrwRbbGEFHtmMqqeCH9K9aTGNVPsurMOWCUeQA3VGyVGXPGtLMC+CdAM9jLpUyg6jw2xh0esxi+tYH7Uw== + dependencies: + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + invariant "^2.2.4" + metro-symbolicate "0.70.3" + nullthrows "^1.1.1" + ob1 "0.70.3" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.70.3.tgz#b039e5629c4ed0c999ea0496d580e1c98260f5cb" + integrity sha512-JTYkF1dpeDUssQ84juE1ycnhHki2ylJBBdJE1JHtfu5oC+z1ElDbBdPHq90Uvt8HbRov/ZAnxvv7Zy6asS+WCA== + dependencies: + invariant "^2.2.4" + metro-source-map "0.70.3" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.70.3.tgz#7fe87cd0d8979b4d5d6e375751d86188fff38fd9" + integrity sha512-dQRIJoTkWZN2IVS2KzgS1hs7ZdHDX3fS3esfifPkqFAEwHiLctCf0EsPgIknp0AjMLvmGWfSLJigdRB/dc0ASw== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.14.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.70.3.tgz#62bfa28ebef98803531c4bcb558de5fc804c94ef" + integrity sha512-MtVVsnHhhBOp9GRLCdAb2mD1dTCsIzT4+m34KMRdBDCEbDIb90YafT5prpU8qbj5uKd0o2FOQdrJ5iy5zQilHw== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.4.0" + metro "0.70.3" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-hermes-compiler "0.70.3" + metro-source-map "0.70.3" + metro-transform-plugins "0.70.3" + nullthrows "^1.1.1" + +metro@0.70.3, metro@^0.70.1: + version "0.70.3" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.70.3.tgz#4290f538ab5446c7050e718b5c5823eea292c5c2" + integrity sha512-uEWS7xg8oTetQDABYNtsyeUjdLhH3KAvLFpaFFoJqUpOk2A3iygszdqmjobFl6W4zrvKDJS+XxdMR1roYvUhTw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + absolute-path "^0.0.0" + accepts "^1.3.7" + async "^3.2.2" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + fs-extra "^1.0.0" + graceful-fs "^4.2.4" + hermes-parser "0.6.0" + image-size "^0.6.0" + invariant "^2.2.4" + jest-haste-map "^27.3.1" + jest-worker "^27.2.0" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.70.3" + metro-cache "0.70.3" + metro-cache-key "0.70.3" + metro-config "0.70.3" + metro-core "0.70.3" + metro-hermes-compiler "0.70.3" + metro-inspector-proxy "0.70.3" + metro-minify-uglify "0.70.3" + metro-react-native-babel-preset "0.70.3" + metro-resolver "0.70.3" + metro-runtime "0.70.3" + metro-source-map "0.70.3" + metro-symbolicate "0.70.3" + metro-transform-plugins "0.70.3" + metro-transform-worker "0.70.3" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^2.5.4" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + temp "0.8.3" + throat "^5.0.0" + ws "^7.5.1" + yargs "^15.3.1" + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== + dependencies: + yallist "^4.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.4.tgz#ca99f95dd77c43c7a76bf51e6d200025eee0ffae" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nested-error-stacks@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" + integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.2.1, node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +normalize-css-color@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d" + integrity sha512-jPJ/V7Cp1UytdidsPqviKEElFQJs22hUUgK5BOPHTwOonNCk7/2qOxhhqzEajmFrWJowADFfOFh1V+aWkRfy+w== + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-package-arg@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-7.0.0.tgz#52cdf08b491c0c59df687c4c925a89102ef794a5" + integrity sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g== + dependencies: + hosted-git-info "^3.0.2" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +ob1@0.70.3: + version "0.70.3" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.70.3.tgz#f48cd5a5abf54b0c423b1b06b6d4ff4d049816cb" + integrity sha512-Vy9GGhuXgDRY01QA6kdhToPd8AkLdLpX9GjH5kpqluVqTu70mgOm7tpGoJDZGaNbr9nJlJgnipqHJQRPORixIQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.0, object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^8.0.4, open@^8.3.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ora@3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-png@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-png/-/parse-png-2.1.0.tgz#2a42ad719fedf90f81c59ebee7ae59b280d6b338" + integrity sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ== + dependencies: + pngjs "^3.3.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +password-prompt@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.5, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pirates@^4.0.1, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +plist@^3.0.2, plist@^3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.6.tgz#7cfb68a856a7834bca6dbfe3218eb9c7740145d3" + integrity sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA== + dependencies: + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-plugin-organize-imports@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.1.0.tgz#00420affd69f21926dbf29bf94a152f37e859d5e" + integrity sha512-eufD78FKdkDTyyY9oKxuwEMrfz4/AXrGeyeyjqiRtSBr01DAdGFTq4SgIKvLeqlLkq+ZPJ2H0+BK0e6flRUwJQ== + +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-bytes@5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^29.0.0, pretty-format@^29.0.2: + version "29.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.0.2.tgz#7f7666a7bf05ba2bcacde61be81c6db64f6f3be6" + integrity sha512-wp3CdtUa3cSJVFn3Miu5a1+pxc1iPIQTenOAn+x5erXeN1+ryTcLesV5pbK/rlW5EKwp27x38MoYfNGaNXDDhg== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promise@^8.0.3: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@^2.3.2, prompts@^2.4.0, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qrcode-terminal@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz#ffc6c28a2fc0bfb47052b47e23f4f446a5fbdb9e" + integrity sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-devtools-core@4.24.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017" + integrity sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-dom@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.0.0.tgz#26b88534f8f1dbb80853e1eabe752f24100d8023" + integrity sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.21.0" + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-native-builder-bob@^0.18.3: + version "0.18.3" + resolved "https://registry.yarnpkg.com/react-native-builder-bob/-/react-native-builder-bob-0.18.3.tgz#fb4d3e50a3b2290db3c88de6d40403ac7eb9f85f" + integrity sha512-togj+ClsPAsTK3ZFmFZVIftUIkxvN1YxJws0/6sQIlAr14U3rvtBseOQAQM0Pora1GD2aObdBVHDVhKBHWojLA== + dependencies: + "@babel/core" "^7.18.5" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/preset-env" "^7.18.2" + "@babel/preset-flow" "^7.17.12" + "@babel/preset-react" "^7.17.12" + "@babel/preset-typescript" "^7.17.12" + browserslist "^4.20.4" + cosmiconfig "^7.0.1" + cross-spawn "^7.0.3" + dedent "^0.7.0" + del "^6.1.1" + fs-extra "^10.1.0" + glob "^8.0.3" + is-git-dirty "^2.0.1" + json5 "^2.2.1" + kleur "^4.1.4" + prompts "^2.4.2" + which "^2.0.2" + yargs "^17.5.1" + optionalDependencies: + jetifier "^2.0.0" + +react-native-codegen@^0.69.2: + version "0.69.2" + resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.69.2.tgz#e33ac3b1486de59ddae687b731ddbfcef8af0e4e" + integrity sha512-yPcgMHD4mqLbckqnWjFBaxomDnBREfRjDi2G/WxNyPBQLD+PXUEmZTkDx6QoOXN+Bl2SkpnNOSsLE2+/RUHoPw== + dependencies: + "@babel/parser" "^7.14.0" + flow-parser "^0.121.0" + jscodeshift "^0.13.1" + nullthrows "^1.1.1" + +react-native-gradle-plugin@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz#96602f909745239deab7b589443f14fce5da2056" + integrity sha512-+4JpbIx42zGTONhBTIXSyfyHICHC29VTvhkkoUOJAh/XHPEixpuBduYgf6Y4y9wsN1ARlQhBBoptTvXvAFQf5g== + +react-native-web@~0.18.7: + version "0.18.8" + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.18.8.tgz#6a761cc5531dfbb8fffa9c1e342f153a792dce07" + integrity sha512-NOjFgzD0eAldYCpLJIr47FreitcxkJka8CdGBYRmnZLvSU1AUwCR4PtxzHNbb4hAwO+/fKGh+aoRsGSwQo0cBA== + dependencies: + "@babel/runtime" "^7.18.6" + create-react-class "^15.7.0" + fbjs "^3.0.4" + inline-style-prefixer "^6.0.1" + normalize-css-color "^1.0.2" + postcss-value-parser "^4.2.0" + styleq "^0.1.2" + +react-native@0.69.5: + version "0.69.5" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.69.5.tgz#959142bfef21beed837160b54aa17313f5e1898f" + integrity sha512-4Psrj1nDMLQjBXVH8n3UikzOHQc8+sa6NbxZQR0XKtpx8uC3HiJBgX+/FIum/RWxfi5J/Dt/+A2gLGmq2Hps8g== + dependencies: + "@jest/create-cache-key-function" "^27.0.1" + "@react-native-community/cli" "^8.0.4" + "@react-native-community/cli-platform-android" "^8.0.4" + "@react-native-community/cli-platform-ios" "^8.0.4" + "@react-native/assets" "1.0.0" + "@react-native/normalize-color" "2.0.0" + "@react-native/polyfills" "2.0.0" + abort-controller "^3.0.0" + anser "^1.4.9" + base64-js "^1.1.2" + event-target-shim "^5.0.1" + hermes-engine "~0.11.0" + invariant "^2.2.4" + jsc-android "^250230.2.1" + memoize-one "^5.0.0" + metro-react-native-babel-transformer "0.70.3" + metro-runtime "0.70.3" + metro-source-map "0.70.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.0.3" + react-devtools-core "4.24.0" + react-native-codegen "^0.69.2" + react-native-gradle-plugin "^0.0.7" + react-refresh "^0.4.0" + react-shallow-renderer "16.15.0" + regenerator-runtime "^0.13.2" + scheduler "^0.21.0" + stacktrace-parser "^0.1.3" + use-sync-external-store "^1.0.0" + whatwg-fetch "^3.0.0" + ws "^6.1.4" + +react-refresh@^0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" + integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== + +react-shallow-renderer@16.15.0: + version "16.15.0" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +react@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.0.0.tgz#b468736d1f4a5891f38585ba8e8fb29f91c3cb96" + integrity sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A== + dependencies: + loose-envify "^1.1.0" + +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.20.5.tgz#8e2c6c96827a1b339c634dd232957d230553ceae" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== + dependencies: + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +remove-trailing-slash@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz#be2285a59f39c74d1bce4f825950061915e3780d" + integrity sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requireg@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" + integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== + dependencies: + nested-error-stacks "~2.0.1" + rc "~1.2.7" + resolve "~1.7.1" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reselect@^4.0.0: + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve@^1.13.1, resolve@^1.14.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^2.5.4, rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + integrity sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg== + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-json-stringify@~1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +scheduler@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" + integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ== + dependencies: + loose-envify "^1.1.0" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0, send@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-6.0.0.tgz#ccfb887a1dd1c48d6d52d7863b92544331fd752b" + integrity sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA== + dependencies: + type-fest "^0.12.0" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1, shell-quote@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-plist@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017" + integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== + dependencies: + bplist-creator "0.1.0" + bplist-parser "0.3.1" + plist "^3.0.5" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + +slugify@^1.3.4: + version "1.6.5" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.5.tgz#c8f5c072bf2135b80703589b39a3d41451fbe8c8" + integrity sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.16: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.3: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-buffers@2.2.x: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== + +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^5.0.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +structured-headers@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/structured-headers/-/structured-headers-0.4.1.tgz#77abd9410622c6926261c09b9d16cf10592694d1" + integrity sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg== + +styleq@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.2.tgz#052b46af5ca4f920b1bdae2735ffb1e3970f53cd" + integrity sha512-EBNuMVSxpssuFcJq/c4zmZ4tpCyX9E27hz5xPJhw4URjRHcYXPHh8rDHY/tJsw5gtP0+tIL3IBYeQVIYjdZFhg== + +sucrase@^3.20.0: + version "3.25.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.25.0.tgz#6dffa34e614b3347877507a4380cc4f022b7b7aa" + integrity sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +sudo-prompt@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" + integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA== + +sudo-prompt@^8.2.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" + integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^6.0.2, tar@^6.0.5: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + integrity sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw== + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempy@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +tempy@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.7.1.tgz#5a654e6dbd1747cdd561efb112350b55cd9c1d46" + integrity sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@2, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +traverse@~0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@^1.10.0, tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.1, tslib@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" + integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.17: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== + +ua-parser-js@^0.7.30: + version "0.7.31" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" + integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== + +uglify-es@^3.1.9: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg== + dependencies: + crypto-random-string "^1.0.0" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +update-browserslist-db@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-join@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + integrity sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA== + +url-parse@^1.5.9: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +use-sync-external-store@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +uuid@^8.0.0, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +valid-url@~1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wonka@^4.0.14: + version "4.0.15" + resolved "https://registry.yarnpkg.com/wonka/-/wonka-4.0.15.tgz#9aa42046efa424565ab8f8f451fcca955bf80b89" + integrity sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg== + +wonka@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.0.0.tgz#38cd39a517fc3ff721ea3bf353642b353bf48860" + integrity sha512-TEiIOqkhQXbcmL1RrjxPCzTX15V5FSyJvZRSiTxvgTgrJMaOVKmzGTdRVh349CfaNo9dsIhWDyg1/GNq4NWrEg== + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^6.1.4: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.5.1: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xcode@^3.0.0, xcode@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" + integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== + dependencies: + simple-plist "^1.1.0" + uuid "^7.0.3" + +xml-js@^1.6.11: + version "1.6.11" + resolved "https://registry.yarnpkg.com/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xml2js@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" + integrity sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg== + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" + integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.1.0, yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==