Select the types of activity you want to include in your feed.
Update availability headers, add headers for some frameworks
Headers added for CryptoTokenKit and LocalAuthentication
They have been stripped of Apple's comments
Licensing may still be an issue, please verify
···2424/*
2525 File: AvailabilityMacros.h
26262727- More Info: See TechNote 2064
2727+ More Info: See the SDK Compatibility Guide
28282929 Contains: Autoconfiguration of AVAILABLE_ macros for Mac OS X
3030···104104#define MAC_OS_X_VERSION_10_10_3 101003
105105#define MAC_OS_X_VERSION_10_11 101100
106106#define MAC_OS_X_VERSION_10_11_2 101102
107107+#define MAC_OS_X_VERSION_10_11_3 101103
108108+#define MAC_OS_X_VERSION_10_11_4 101104
109109+#define MAC_OS_X_VERSION_10_12 101200
110110+#define MAC_OS_X_VERSION_10_12_1 101201
111111+#define MAC_OS_X_VERSION_10_12_2 101202
107112108113/*
109114 * If min OS not specified, assume 10.4 for intel
···127132#endif
128133129134/*
130130- * if max OS not specified, assume larger of (10.11.2, min)
135135+ * if max OS not specified, assume larger of (10.12.2, min)
131136 */
132137#ifndef MAC_OS_X_VERSION_MAX_ALLOWED
133133- #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_11_2
138138+ #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_12_2
134139 #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
135140 #else
136136- #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_11_2
141141+ #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_12_2
137142 #endif
138143#endif
139144···22952300 #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2_AND_LATER DEPRECATED_ATTRIBUTE
22962301#else
22972302 #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2_AND_LATER
23032303+#endif
23042304+23052305+23062306+/*
23072307+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
23082308+ *
23092309+ * Used on declarations introduced in Mac OS X 10.11.3
23102310+ */
23112311+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23122312+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11_3, __IPHONE_NA)
23132313+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11_3
23142314+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER UNAVAILABLE_ATTRIBUTE
23152315+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11_3
23162316+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER WEAK_IMPORT_ATTRIBUTE
23172317+#else
23182318+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
23192319+#endif
23202320+23212321+/*
23222322+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED
23232323+ *
23242324+ * Used on declarations introduced in Mac OS X 10.11.3,
23252325+ * and deprecated in Mac OS X 10.11.3
23262326+ */
23272327+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23282328+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23292329+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
23302330+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
23312331+#else
23322332+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
23332333+#endif
23342334+23352335+/*
23362336+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
23372337+ *
23382338+ * Used on declarations introduced in Mac OS X 10.0,
23392339+ * but later deprecated in Mac OS X 10.11.3
23402340+ */
23412341+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23422342+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23432343+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
23442344+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
23452345+#else
23462346+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
23472347+#endif
23482348+23492349+/*
23502350+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
23512351+ *
23522352+ * Used on declarations introduced in Mac OS X 10.1,
23532353+ * but later deprecated in Mac OS X 10.11.3
23542354+ */
23552355+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23562356+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23572357+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
23582358+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
23592359+#else
23602360+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
23612361+#endif
23622362+23632363+/*
23642364+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
23652365+ *
23662366+ * Used on declarations introduced in Mac OS X 10.2,
23672367+ * but later deprecated in Mac OS X 10.11.3
23682368+ */
23692369+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23702370+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23712371+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
23722372+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
23732373+#else
23742374+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
23752375+#endif
23762376+23772377+/*
23782378+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
23792379+ *
23802380+ * Used on declarations introduced in Mac OS X 10.3,
23812381+ * but later deprecated in Mac OS X 10.11.3
23822382+ */
23832383+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23842384+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23852385+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
23862386+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
23872387+#else
23882388+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
23892389+#endif
23902390+23912391+/*
23922392+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
23932393+ *
23942394+ * Used on declarations introduced in Mac OS X 10.4,
23952395+ * but later deprecated in Mac OS X 10.11.3
23962396+ */
23972397+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
23982398+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
23992399+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24002400+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24012401+#else
24022402+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
24032403+#endif
24042404+24052405+/*
24062406+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24072407+ *
24082408+ * Used on declarations introduced in Mac OS X 10.5,
24092409+ * but later deprecated in Mac OS X 10.11.3
24102410+ */
24112411+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24122412+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24132413+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24142414+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24152415+#else
24162416+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
24172417+#endif
24182418+24192419+/*
24202420+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24212421+ *
24222422+ * Used on declarations introduced in Mac OS X 10.6,
24232423+ * but later deprecated in Mac OS X 10.11.3
24242424+ */
24252425+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24262426+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24272427+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24282428+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24292429+#else
24302430+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
24312431+#endif
24322432+24332433+/*
24342434+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24352435+ *
24362436+ * Used on declarations introduced in Mac OS X 10.7,
24372437+ * but later deprecated in Mac OS X 10.11.3
24382438+ */
24392439+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24402440+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24412441+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24422442+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24432443+#else
24442444+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
24452445+#endif
24462446+24472447+/*
24482448+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24492449+ *
24502450+ * Used on declarations introduced in Mac OS X 10.8,
24512451+ * but later deprecated in Mac OS X 10.11.3
24522452+ */
24532453+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24542454+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24552455+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24562456+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24572457+#else
24582458+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
24592459+#endif
24602460+24612461+/*
24622462+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24632463+ *
24642464+ * Used on declarations introduced in Mac OS X 10.9,
24652465+ * but later deprecated in Mac OS X 10.11.3
24662466+ */
24672467+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24682468+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24692469+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24702470+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24712471+#else
24722472+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
24732473+#endif
24742474+24752475+/*
24762476+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24772477+ *
24782478+ * Used on declarations introduced in Mac OS X 10.10,
24792479+ * but later deprecated in Mac OS X 10.11.3
24802480+ */
24812481+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24822482+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24832483+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24842484+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24852485+#else
24862486+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
24872487+#endif
24882488+24892489+/*
24902490+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
24912491+ *
24922492+ * Used on declarations introduced in Mac OS X 10.10.2,
24932493+ * but later deprecated in Mac OS X 10.11.3
24942494+ */
24952495+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
24962496+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
24972497+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
24982498+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
24992499+#else
25002500+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
25012501+#endif
25022502+25032503+/*
25042504+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
25052505+ *
25062506+ * Used on declarations introduced in Mac OS X 10.10.3,
25072507+ * but later deprecated in Mac OS X 10.11.3
25082508+ */
25092509+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25102510+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
25112511+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
25122512+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
25132513+#else
25142514+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
25152515+#endif
25162516+25172517+/*
25182518+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
25192519+ *
25202520+ * Used on declarations introduced in Mac OS X 10.11,
25212521+ * but later deprecated in Mac OS X 10.11.3
25222522+ */
25232523+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25242524+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
25252525+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
25262526+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
25272527+#else
25282528+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
25292529+#endif
25302530+25312531+/*
25322532+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
25332533+ *
25342534+ * Used on declarations introduced in Mac OS X 10.11.2,
25352535+ * but later deprecated in Mac OS X 10.11.3
25362536+ */
25372537+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25382538+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
25392539+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
25402540+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
25412541+#else
25422542+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
25432543+#endif
25442544+25452545+/*
25462546+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3_AND_LATER
25472547+ *
25482548+ * Used on types deprecated in Mac OS X 10.11.3
25492549+ */
25502550+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25512551+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_3, __IPHONE_NA, __IPHONE_NA)
25522552+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
25532553+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3_AND_LATER DEPRECATED_ATTRIBUTE
25542554+#else
25552555+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3_AND_LATER
25562556+#endif
25572557+25582558+25592559+/*
25602560+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
25612561+ *
25622562+ * Used on declarations introduced in Mac OS X 10.11.4
25632563+ */
25642564+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25652565+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11_4, __IPHONE_NA)
25662566+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11_4
25672567+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER UNAVAILABLE_ATTRIBUTE
25682568+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11_4
25692569+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER WEAK_IMPORT_ATTRIBUTE
25702570+#else
25712571+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
25722572+#endif
25732573+25742574+/*
25752575+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED
25762576+ *
25772577+ * Used on declarations introduced in Mac OS X 10.11.4,
25782578+ * and deprecated in Mac OS X 10.11.4
25792579+ */
25802580+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25812581+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
25822582+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
25832583+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
25842584+#else
25852585+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
25862586+#endif
25872587+25882588+/*
25892589+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
25902590+ *
25912591+ * Used on declarations introduced in Mac OS X 10.0,
25922592+ * but later deprecated in Mac OS X 10.11.4
25932593+ */
25942594+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
25952595+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
25962596+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
25972597+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
25982598+#else
25992599+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
26002600+#endif
26012601+26022602+/*
26032603+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26042604+ *
26052605+ * Used on declarations introduced in Mac OS X 10.1,
26062606+ * but later deprecated in Mac OS X 10.11.4
26072607+ */
26082608+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26092609+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26102610+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26112611+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26122612+#else
26132613+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
26142614+#endif
26152615+26162616+/*
26172617+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26182618+ *
26192619+ * Used on declarations introduced in Mac OS X 10.2,
26202620+ * but later deprecated in Mac OS X 10.11.4
26212621+ */
26222622+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26232623+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26242624+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26252625+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26262626+#else
26272627+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
26282628+#endif
26292629+26302630+/*
26312631+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26322632+ *
26332633+ * Used on declarations introduced in Mac OS X 10.3,
26342634+ * but later deprecated in Mac OS X 10.11.4
26352635+ */
26362636+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26372637+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26382638+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26392639+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26402640+#else
26412641+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
26422642+#endif
26432643+26442644+/*
26452645+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26462646+ *
26472647+ * Used on declarations introduced in Mac OS X 10.4,
26482648+ * but later deprecated in Mac OS X 10.11.4
26492649+ */
26502650+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26512651+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26522652+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26532653+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26542654+#else
26552655+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
26562656+#endif
26572657+26582658+/*
26592659+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26602660+ *
26612661+ * Used on declarations introduced in Mac OS X 10.5,
26622662+ * but later deprecated in Mac OS X 10.11.4
26632663+ */
26642664+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26652665+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26662666+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26672667+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26682668+#else
26692669+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
26702670+#endif
26712671+26722672+/*
26732673+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26742674+ *
26752675+ * Used on declarations introduced in Mac OS X 10.6,
26762676+ * but later deprecated in Mac OS X 10.11.4
26772677+ */
26782678+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26792679+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26802680+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26812681+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26822682+#else
26832683+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
26842684+#endif
26852685+26862686+/*
26872687+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
26882688+ *
26892689+ * Used on declarations introduced in Mac OS X 10.7,
26902690+ * but later deprecated in Mac OS X 10.11.4
26912691+ */
26922692+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
26932693+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
26942694+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
26952695+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
26962696+#else
26972697+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
26982698+#endif
26992699+27002700+/*
27012701+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27022702+ *
27032703+ * Used on declarations introduced in Mac OS X 10.8,
27042704+ * but later deprecated in Mac OS X 10.11.4
27052705+ */
27062706+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27072707+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27082708+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27092709+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27102710+#else
27112711+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
27122712+#endif
27132713+27142714+/*
27152715+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27162716+ *
27172717+ * Used on declarations introduced in Mac OS X 10.9,
27182718+ * but later deprecated in Mac OS X 10.11.4
27192719+ */
27202720+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27212721+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27222722+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27232723+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27242724+#else
27252725+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
27262726+#endif
27272727+27282728+/*
27292729+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27302730+ *
27312731+ * Used on declarations introduced in Mac OS X 10.10,
27322732+ * but later deprecated in Mac OS X 10.11.4
27332733+ */
27342734+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27352735+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27362736+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27372737+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27382738+#else
27392739+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
27402740+#endif
27412741+27422742+/*
27432743+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27442744+ *
27452745+ * Used on declarations introduced in Mac OS X 10.10.2,
27462746+ * but later deprecated in Mac OS X 10.11.4
27472747+ */
27482748+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27492749+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27502750+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27512751+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27522752+#else
27532753+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
27542754+#endif
27552755+27562756+/*
27572757+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27582758+ *
27592759+ * Used on declarations introduced in Mac OS X 10.10.3,
27602760+ * but later deprecated in Mac OS X 10.11.4
27612761+ */
27622762+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27632763+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27642764+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27652765+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27662766+#else
27672767+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
27682768+#endif
27692769+27702770+/*
27712771+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27722772+ *
27732773+ * Used on declarations introduced in Mac OS X 10.11,
27742774+ * but later deprecated in Mac OS X 10.11.4
27752775+ */
27762776+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27772777+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27782778+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27792779+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27802780+#else
27812781+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
27822782+#endif
27832783+27842784+/*
27852785+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
27862786+ *
27872787+ * Used on declarations introduced in Mac OS X 10.11.2,
27882788+ * but later deprecated in Mac OS X 10.11.4
27892789+ */
27902790+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
27912791+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
27922792+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
27932793+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
27942794+#else
27952795+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
27962796+#endif
27972797+27982798+/*
27992799+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
28002800+ *
28012801+ * Used on declarations introduced in Mac OS X 10.11.3,
28022802+ * but later deprecated in Mac OS X 10.11.4
28032803+ */
28042804+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28052805+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
28062806+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
28072807+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
28082808+#else
28092809+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
28102810+#endif
28112811+28122812+/*
28132813+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4_AND_LATER
28142814+ *
28152815+ * Used on types deprecated in Mac OS X 10.11.4
28162816+ */
28172817+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28182818+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_4, __IPHONE_NA, __IPHONE_NA)
28192819+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
28202820+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4_AND_LATER DEPRECATED_ATTRIBUTE
28212821+#else
28222822+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4_AND_LATER
28232823+#endif
28242824+28252825+28262826+/*
28272827+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
28282828+ *
28292829+ * Used on declarations introduced in Mac OS X 10.12
28302830+ */
28312831+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28322832+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_NA)
28332833+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
28342834+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER UNAVAILABLE_ATTRIBUTE
28352835+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
28362836+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER WEAK_IMPORT_ATTRIBUTE
28372837+#else
28382838+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
28392839+#endif
28402840+28412841+/*
28422842+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED
28432843+ *
28442844+ * Used on declarations introduced in Mac OS X 10.12,
28452845+ * and deprecated in Mac OS X 10.12
28462846+ */
28472847+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28482848+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
28492849+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
28502850+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
28512851+#else
28522852+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
28532853+#endif
28542854+28552855+/*
28562856+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
28572857+ *
28582858+ * Used on declarations introduced in Mac OS X 10.0,
28592859+ * but later deprecated in Mac OS X 10.12
28602860+ */
28612861+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28622862+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
28632863+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
28642864+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
28652865+#else
28662866+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
28672867+#endif
28682868+28692869+/*
28702870+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
28712871+ *
28722872+ * Used on declarations introduced in Mac OS X 10.1,
28732873+ * but later deprecated in Mac OS X 10.12
28742874+ */
28752875+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28762876+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
28772877+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
28782878+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
28792879+#else
28802880+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
28812881+#endif
28822882+28832883+/*
28842884+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
28852885+ *
28862886+ * Used on declarations introduced in Mac OS X 10.2,
28872887+ * but later deprecated in Mac OS X 10.12
28882888+ */
28892889+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
28902890+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
28912891+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
28922892+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
28932893+#else
28942894+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
28952895+#endif
28962896+28972897+/*
28982898+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
28992899+ *
29002900+ * Used on declarations introduced in Mac OS X 10.3,
29012901+ * but later deprecated in Mac OS X 10.12
29022902+ */
29032903+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29042904+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29052905+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29062906+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29072907+#else
29082908+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
29092909+#endif
29102910+29112911+/*
29122912+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29132913+ *
29142914+ * Used on declarations introduced in Mac OS X 10.4,
29152915+ * but later deprecated in Mac OS X 10.12
29162916+ */
29172917+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29182918+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29192919+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29202920+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29212921+#else
29222922+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
29232923+#endif
29242924+29252925+/*
29262926+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29272927+ *
29282928+ * Used on declarations introduced in Mac OS X 10.5,
29292929+ * but later deprecated in Mac OS X 10.12
29302930+ */
29312931+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29322932+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29332933+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29342934+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29352935+#else
29362936+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
29372937+#endif
29382938+29392939+/*
29402940+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29412941+ *
29422942+ * Used on declarations introduced in Mac OS X 10.6,
29432943+ * but later deprecated in Mac OS X 10.12
29442944+ */
29452945+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29462946+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29472947+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29482948+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29492949+#else
29502950+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
29512951+#endif
29522952+29532953+/*
29542954+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29552955+ *
29562956+ * Used on declarations introduced in Mac OS X 10.7,
29572957+ * but later deprecated in Mac OS X 10.12
29582958+ */
29592959+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29602960+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29612961+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29622962+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29632963+#else
29642964+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
29652965+#endif
29662966+29672967+/*
29682968+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29692969+ *
29702970+ * Used on declarations introduced in Mac OS X 10.8,
29712971+ * but later deprecated in Mac OS X 10.12
29722972+ */
29732973+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29742974+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29752975+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29762976+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29772977+#else
29782978+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
29792979+#endif
29802980+29812981+/*
29822982+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29832983+ *
29842984+ * Used on declarations introduced in Mac OS X 10.9,
29852985+ * but later deprecated in Mac OS X 10.12
29862986+ */
29872987+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
29882988+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
29892989+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
29902990+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
29912991+#else
29922992+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
29932993+#endif
29942994+29952995+/*
29962996+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
29972997+ *
29982998+ * Used on declarations introduced in Mac OS X 10.10,
29992999+ * but later deprecated in Mac OS X 10.12
30003000+ */
30013001+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30023002+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30033003+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30043004+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30053005+#else
30063006+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
30073007+#endif
30083008+30093009+/*
30103010+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30113011+ *
30123012+ * Used on declarations introduced in Mac OS X 10.10.2,
30133013+ * but later deprecated in Mac OS X 10.12
30143014+ */
30153015+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30163016+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30173017+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30183018+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30193019+#else
30203020+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
30213021+#endif
30223022+30233023+/*
30243024+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30253025+ *
30263026+ * Used on declarations introduced in Mac OS X 10.10.3,
30273027+ * but later deprecated in Mac OS X 10.12
30283028+ */
30293029+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30303030+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30313031+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30323032+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30333033+#else
30343034+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
30353035+#endif
30363036+30373037+/*
30383038+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30393039+ *
30403040+ * Used on declarations introduced in Mac OS X 10.11,
30413041+ * but later deprecated in Mac OS X 10.12
30423042+ */
30433043+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30443044+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30453045+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30463046+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30473047+#else
30483048+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
30493049+#endif
30503050+30513051+/*
30523052+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30533053+ *
30543054+ * Used on declarations introduced in Mac OS X 10.11.2,
30553055+ * but later deprecated in Mac OS X 10.12
30563056+ */
30573057+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30583058+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30593059+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30603060+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30613061+#else
30623062+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
30633063+#endif
30643064+30653065+/*
30663066+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30673067+ *
30683068+ * Used on declarations introduced in Mac OS X 10.11.3,
30693069+ * but later deprecated in Mac OS X 10.12
30703070+ */
30713071+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30723072+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30733073+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30743074+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30753075+#else
30763076+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
30773077+#endif
30783078+30793079+/*
30803080+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
30813081+ *
30823082+ * Used on declarations introduced in Mac OS X 10.11.4,
30833083+ * but later deprecated in Mac OS X 10.12
30843084+ */
30853085+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30863086+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
30873087+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
30883088+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
30893089+#else
30903090+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
30913091+#endif
30923092+30933093+/*
30943094+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER
30953095+ *
30963096+ * Used on types deprecated in Mac OS X 10.12
30973097+ */
30983098+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
30993099+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12, __IPHONE_NA, __IPHONE_NA)
31003100+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
31013101+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER DEPRECATED_ATTRIBUTE
31023102+#else
31033103+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER
31043104+#endif
31053105+31063106+31073107+/*
31083108+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
31093109+ *
31103110+ * Used on declarations introduced in Mac OS X 10.12.1
31113111+ */
31123112+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31133113+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12_1, __IPHONE_NA)
31143114+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12_1
31153115+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER UNAVAILABLE_ATTRIBUTE
31163116+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
31173117+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER WEAK_IMPORT_ATTRIBUTE
31183118+#else
31193119+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
31203120+#endif
31213121+31223122+/*
31233123+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED
31243124+ *
31253125+ * Used on declarations introduced in Mac OS X 10.12.1,
31263126+ * and deprecated in Mac OS X 10.12.1
31273127+ */
31283128+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31293129+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_1, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
31303130+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
31313131+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
31323132+#else
31333133+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
31343134+#endif
31353135+31363136+/*
31373137+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
31383138+ *
31393139+ * Used on declarations introduced in Mac OS X 10.0,
31403140+ * but later deprecated in Mac OS X 10.12.1
31413141+ */
31423142+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31433143+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
31443144+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
31453145+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
31463146+#else
31473147+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
31483148+#endif
31493149+31503150+/*
31513151+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
31523152+ *
31533153+ * Used on declarations introduced in Mac OS X 10.1,
31543154+ * but later deprecated in Mac OS X 10.12.1
31553155+ */
31563156+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31573157+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
31583158+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
31593159+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
31603160+#else
31613161+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
31623162+#endif
31633163+31643164+/*
31653165+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
31663166+ *
31673167+ * Used on declarations introduced in Mac OS X 10.2,
31683168+ * but later deprecated in Mac OS X 10.12.1
31693169+ */
31703170+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31713171+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
31723172+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
31733173+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
31743174+#else
31753175+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
31763176+#endif
31773177+31783178+/*
31793179+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
31803180+ *
31813181+ * Used on declarations introduced in Mac OS X 10.3,
31823182+ * but later deprecated in Mac OS X 10.12.1
31833183+ */
31843184+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31853185+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
31863186+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
31873187+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
31883188+#else
31893189+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
31903190+#endif
31913191+31923192+/*
31933193+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
31943194+ *
31953195+ * Used on declarations introduced in Mac OS X 10.4,
31963196+ * but later deprecated in Mac OS X 10.12.1
31973197+ */
31983198+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
31993199+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32003200+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32013201+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32023202+#else
32033203+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
32043204+#endif
32053205+32063206+/*
32073207+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32083208+ *
32093209+ * Used on declarations introduced in Mac OS X 10.5,
32103210+ * but later deprecated in Mac OS X 10.12.1
32113211+ */
32123212+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32133213+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32143214+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32153215+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32163216+#else
32173217+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
32183218+#endif
32193219+32203220+/*
32213221+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32223222+ *
32233223+ * Used on declarations introduced in Mac OS X 10.6,
32243224+ * but later deprecated in Mac OS X 10.12.1
32253225+ */
32263226+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32273227+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32283228+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32293229+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32303230+#else
32313231+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
32323232+#endif
32333233+32343234+/*
32353235+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32363236+ *
32373237+ * Used on declarations introduced in Mac OS X 10.7,
32383238+ * but later deprecated in Mac OS X 10.12.1
32393239+ */
32403240+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32413241+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32423242+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32433243+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32443244+#else
32453245+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
32463246+#endif
32473247+32483248+/*
32493249+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32503250+ *
32513251+ * Used on declarations introduced in Mac OS X 10.8,
32523252+ * but later deprecated in Mac OS X 10.12.1
32533253+ */
32543254+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32553255+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32563256+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32573257+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32583258+#else
32593259+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
32603260+#endif
32613261+32623262+/*
32633263+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32643264+ *
32653265+ * Used on declarations introduced in Mac OS X 10.9,
32663266+ * but later deprecated in Mac OS X 10.12.1
32673267+ */
32683268+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32693269+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32703270+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32713271+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32723272+#else
32733273+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
32743274+#endif
32753275+32763276+/*
32773277+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32783278+ *
32793279+ * Used on declarations introduced in Mac OS X 10.10,
32803280+ * but later deprecated in Mac OS X 10.12.1
32813281+ */
32823282+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32833283+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32843284+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32853285+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
32863286+#else
32873287+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
32883288+#endif
32893289+32903290+/*
32913291+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
32923292+ *
32933293+ * Used on declarations introduced in Mac OS X 10.10.2,
32943294+ * but later deprecated in Mac OS X 10.12.1
32953295+ */
32963296+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
32973297+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
32983298+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
32993299+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33003300+#else
33013301+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
33023302+#endif
33033303+33043304+/*
33053305+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33063306+ *
33073307+ * Used on declarations introduced in Mac OS X 10.10.3,
33083308+ * but later deprecated in Mac OS X 10.12.1
33093309+ */
33103310+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33113311+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33123312+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33133313+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33143314+#else
33153315+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
33163316+#endif
33173317+33183318+/*
33193319+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33203320+ *
33213321+ * Used on declarations introduced in Mac OS X 10.11,
33223322+ * but later deprecated in Mac OS X 10.12.1
33233323+ */
33243324+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33253325+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33263326+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33273327+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33283328+#else
33293329+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
33303330+#endif
33313331+33323332+/*
33333333+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33343334+ *
33353335+ * Used on declarations introduced in Mac OS X 10.11.2,
33363336+ * but later deprecated in Mac OS X 10.12.1
33373337+ */
33383338+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33393339+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33403340+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33413341+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33423342+#else
33433343+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
33443344+#endif
33453345+33463346+/*
33473347+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33483348+ *
33493349+ * Used on declarations introduced in Mac OS X 10.11.3,
33503350+ * but later deprecated in Mac OS X 10.12.1
33513351+ */
33523352+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33533353+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33543354+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33553355+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33563356+#else
33573357+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
33583358+#endif
33593359+33603360+/*
33613361+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33623362+ *
33633363+ * Used on declarations introduced in Mac OS X 10.11.4,
33643364+ * but later deprecated in Mac OS X 10.12.1
33653365+ */
33663366+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33673367+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33683368+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33693369+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33703370+#else
33713371+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
33723372+#endif
33733373+33743374+/*
33753375+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
33763376+ *
33773377+ * Used on declarations introduced in Mac OS X 10.12,
33783378+ * but later deprecated in Mac OS X 10.12.1
33793379+ */
33803380+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33813381+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33823382+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33833383+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
33843384+#else
33853385+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
33863386+#endif
33873387+33883388+/*
33893389+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1_AND_LATER
33903390+ *
33913391+ * Used on types deprecated in Mac OS X 10.12.1
33923392+ */
33933393+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
33943394+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_1, __IPHONE_NA, __IPHONE_NA)
33953395+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
33963396+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1_AND_LATER DEPRECATED_ATTRIBUTE
33973397+#else
33983398+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1_AND_LATER
33993399+#endif
34003400+34013401+34023402+/*
34033403+ * AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
34043404+ *
34053405+ * Used on declarations introduced in Mac OS X 10.12.2
34063406+ */
34073407+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34083408+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12_2, __IPHONE_NA)
34093409+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12_2
34103410+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER UNAVAILABLE_ATTRIBUTE
34113411+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_2
34123412+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
34133413+#else
34143414+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
34153415+#endif
34163416+34173417+/*
34183418+ * AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED
34193419+ *
34203420+ * Used on declarations introduced in Mac OS X 10.12.2,
34213421+ * and deprecated in Mac OS X 10.12.2
34223422+ */
34233423+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34243424+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_2, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34253425+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34263426+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
34273427+#else
34283428+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
34293429+#endif
34303430+34313431+/*
34323432+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
34333433+ *
34343434+ * Used on declarations introduced in Mac OS X 10.0,
34353435+ * but later deprecated in Mac OS X 10.12.2
34363436+ */
34373437+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34383438+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34393439+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34403440+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
34413441+#else
34423442+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
34433443+#endif
34443444+34453445+/*
34463446+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
34473447+ *
34483448+ * Used on declarations introduced in Mac OS X 10.1,
34493449+ * but later deprecated in Mac OS X 10.12.2
34503450+ */
34513451+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34523452+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34533453+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34543454+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
34553455+#else
34563456+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
34573457+#endif
34583458+34593459+/*
34603460+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
34613461+ *
34623462+ * Used on declarations introduced in Mac OS X 10.2,
34633463+ * but later deprecated in Mac OS X 10.12.2
34643464+ */
34653465+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34663466+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34673467+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34683468+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
34693469+#else
34703470+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
34713471+#endif
34723472+34733473+/*
34743474+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
34753475+ *
34763476+ * Used on declarations introduced in Mac OS X 10.3,
34773477+ * but later deprecated in Mac OS X 10.12.2
34783478+ */
34793479+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34803480+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34813481+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34823482+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
34833483+#else
34843484+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
34853485+#endif
34863486+34873487+/*
34883488+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
34893489+ *
34903490+ * Used on declarations introduced in Mac OS X 10.4,
34913491+ * but later deprecated in Mac OS X 10.12.2
34923492+ */
34933493+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
34943494+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
34953495+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
34963496+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
34973497+#else
34983498+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
34993499+#endif
35003500+35013501+/*
35023502+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35033503+ *
35043504+ * Used on declarations introduced in Mac OS X 10.5,
35053505+ * but later deprecated in Mac OS X 10.12.2
35063506+ */
35073507+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35083508+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35093509+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35103510+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35113511+#else
35123512+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
35133513+#endif
35143514+35153515+/*
35163516+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35173517+ *
35183518+ * Used on declarations introduced in Mac OS X 10.6,
35193519+ * but later deprecated in Mac OS X 10.12.2
35203520+ */
35213521+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35223522+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35233523+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35243524+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35253525+#else
35263526+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
35273527+#endif
35283528+35293529+/*
35303530+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35313531+ *
35323532+ * Used on declarations introduced in Mac OS X 10.7,
35333533+ * but later deprecated in Mac OS X 10.12.2
35343534+ */
35353535+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35363536+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35373537+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35383538+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35393539+#else
35403540+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
35413541+#endif
35423542+35433543+/*
35443544+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35453545+ *
35463546+ * Used on declarations introduced in Mac OS X 10.8,
35473547+ * but later deprecated in Mac OS X 10.12.2
35483548+ */
35493549+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35503550+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35513551+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35523552+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35533553+#else
35543554+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
35553555+#endif
35563556+35573557+/*
35583558+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35593559+ *
35603560+ * Used on declarations introduced in Mac OS X 10.9,
35613561+ * but later deprecated in Mac OS X 10.12.2
35623562+ */
35633563+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35643564+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35653565+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35663566+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35673567+#else
35683568+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
35693569+#endif
35703570+35713571+/*
35723572+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35733573+ *
35743574+ * Used on declarations introduced in Mac OS X 10.10,
35753575+ * but later deprecated in Mac OS X 10.12.2
35763576+ */
35773577+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35783578+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35793579+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35803580+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35813581+#else
35823582+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
35833583+#endif
35843584+35853585+/*
35863586+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
35873587+ *
35883588+ * Used on declarations introduced in Mac OS X 10.10.2,
35893589+ * but later deprecated in Mac OS X 10.12.2
35903590+ */
35913591+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
35923592+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
35933593+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
35943594+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
35953595+#else
35963596+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
35973597+#endif
35983598+35993599+/*
36003600+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36013601+ *
36023602+ * Used on declarations introduced in Mac OS X 10.10.3,
36033603+ * but later deprecated in Mac OS X 10.12.2
36043604+ */
36053605+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36063606+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36073607+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36083608+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36093609+#else
36103610+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
36113611+#endif
36123612+36133613+/*
36143614+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36153615+ *
36163616+ * Used on declarations introduced in Mac OS X 10.11,
36173617+ * but later deprecated in Mac OS X 10.12.2
36183618+ */
36193619+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36203620+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36213621+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36223622+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36233623+#else
36243624+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
36253625+#endif
36263626+36273627+/*
36283628+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36293629+ *
36303630+ * Used on declarations introduced in Mac OS X 10.11.2,
36313631+ * but later deprecated in Mac OS X 10.12.2
36323632+ */
36333633+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36343634+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36353635+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36363636+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36373637+#else
36383638+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
36393639+#endif
36403640+36413641+/*
36423642+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36433643+ *
36443644+ * Used on declarations introduced in Mac OS X 10.11.3,
36453645+ * but later deprecated in Mac OS X 10.12.2
36463646+ */
36473647+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36483648+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36493649+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36503650+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36513651+#else
36523652+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
36533653+#endif
36543654+36553655+/*
36563656+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36573657+ *
36583658+ * Used on declarations introduced in Mac OS X 10.11.4,
36593659+ * but later deprecated in Mac OS X 10.12.2
36603660+ */
36613661+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36623662+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36633663+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36643664+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36653665+#else
36663666+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
36673667+#endif
36683668+36693669+/*
36703670+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36713671+ *
36723672+ * Used on declarations introduced in Mac OS X 10.12,
36733673+ * but later deprecated in Mac OS X 10.12.2
36743674+ */
36753675+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36763676+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36773677+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36783678+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36793679+#else
36803680+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
36813681+#endif
36823682+36833683+/*
36843684+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
36853685+ *
36863686+ * Used on declarations introduced in Mac OS X 10.12.1,
36873687+ * but later deprecated in Mac OS X 10.12.2
36883688+ */
36893689+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
36903690+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_1, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
36913691+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
36923692+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
36933693+#else
36943694+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
36953695+#endif
36963696+36973697+/*
36983698+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2_AND_LATER
36993699+ *
37003700+ * Used on types deprecated in Mac OS X 10.12.2
37013701+ */
37023702+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
37033703+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_2, __IPHONE_NA, __IPHONE_NA)
37043704+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
37053705+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2_AND_LATER DEPRECATED_ATTRIBUTE
37063706+#else
37073707+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2_AND_LATER
22983708#endif
2299370923003710
···11+/*
22+ * Copyright (c) 2013-2016 Apple Inc. All rights reserved.
33+ *
44+ * @APPLE_LICENSE_HEADER_START@
55+ *
66+ * This file contains Original Code and/or Modifications of Original Code
77+ * as defined in and that are subject to the Apple Public Source License
88+ * Version 2.0 (the 'License'). You may not use this file except in
99+ * compliance with the License. Please obtain a copy of the License at
1010+ * http://www.opensource.apple.com/apsl/ and read it before using this
1111+ * file.
1212+ *
1313+ * The Original Code and all software distributed under the License are
1414+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
1515+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
1616+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
1717+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
1818+ * Please see the License for the specific language governing rights and
1919+ * limitations under the License.
2020+ *
2121+ * @APPLE_LICENSE_HEADER_END@
2222+ */
2323+2424+#ifndef __OS_ACTIVITY_H__
2525+#define __OS_ACTIVITY_H__
2626+2727+#include <os/base.h>
2828+2929+#include <os/object.h>
3030+#include <stdint.h>
3131+#include <stdbool.h>
3232+#include <mach-o/loader.h>
3333+3434+__BEGIN_DECLS
3535+3636+#if ((defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_10_0) \
3737+ || (defined(__WATCH_OS_VERSION_MIN_REQUIRED) && __WATCH_OS_VERSION_MIN_REQUIRED >= __WATCHOS_3_0) \
3838+ || (defined(__TV_OS_VERSION_MIN_REQUIRED) && __TV_OS_VERSION_MIN_REQUIRED >= __TVOS_10_0) \
3939+ || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_12))
4040+#define OS_ACTIVITY_OBJECT_API 1
4141+#else
4242+#if OS_ACTIVITY_OBJECT_API
4343+#error Please change your minimum OS requirements because OS_ACTIVITY_OBJECT_API is not available
4444+#endif // OS_ACTIVITY_OBJECT_API
4545+#define OS_ACTIVITY_OBJECT_API 0
4646+#endif
4747+4848+extern struct mach_header __dso_handle;
4949+5050+#define OS_LOG_STRING(_var, _str) \
5151+ _Static_assert(__builtin_constant_p(_str), "formatters/labels/descriptions must be a constant string"); \
5252+ __attribute__((section("__TEXT,__oslogstring,cstring_literals"),internal_linkage)) static const char _var[] __asm(OS_STRINGIFY(OS_CONCAT(LOSACTIVITY_, __COUNTER__))) = _str
5353+5454+/*!
5555+ * @typedef os_breadcrumb_t
5656+ * An opaque value for the breadcrumb ID.
5757+ */
5858+__API_DEPRECATED("No longer supported", macosx(10.10, 10.12), ios(8.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
5959+typedef uint32_t os_breadcrumb_t;
6060+6161+#define OS_ACTIVITY_NULL 0
6262+6363+/*!
6464+ * @enum os_activity_flag_t
6565+ *
6666+ * @discussion
6767+ * Support flags for os_activity_create or os_activity_start.
6868+ *
6969+ * @constant OS_ACTIVITY_FLAG_DEFAULT
7070+ * Use the default flags.
7171+ *
7272+ * @constant OS_ACTIVITY_FLAG_DETACHED
7373+ * Detach the newly created activity from the provided activity (if any). If passed in conjunction
7474+ * with an exiting activity, the activity will only note what activity "created" the new one, but
7575+ * will make the new activity a top level activity. This allows users to see what activity triggered
7676+ * work without actually relating the activities.
7777+ *
7878+ * @constant OS_ACTIVITY_FLAG_IF_NONE_PRESENT
7979+ * Will only create a new activity if none present. If an activity ID is already present, a new object
8080+ * will be returned with the same activity ID underneath.
8181+ */
8282+OS_ENUM(os_activity_flag, uint32_t,
8383+ OS_ACTIVITY_FLAG_DEFAULT = 0,
8484+ OS_ACTIVITY_FLAG_DETACHED = 0x1,
8585+ OS_ACTIVITY_FLAG_IF_NONE_PRESENT = 0x2
8686+);
8787+8888+#if OS_ACTIVITY_OBJECT_API
8989+9090+#define OS_ACTIVITY_NULL NULL
9191+9292+/*!
9393+ * @typedef os_activity_t
9494+ * An opaque activity object.
9595+ */
9696+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
9797+#if OS_OBJECT_USE_OBJC
9898+OS_OBJECT_DECL(os_activity);
9999+#else
100100+typedef struct os_activity_s *os_activity_t;
101101+#endif /* OS_OBJECT_USE_OBJC */
102102+103103+/*!
104104+ * @const OS_ACTIVITY_NONE
105105+ *
106106+ * @discussion
107107+ * Create activity with no current traits, this is the equivalent of a
108108+ * detached activity.
109109+ */
110110+#define OS_ACTIVITY_NONE OS_OBJECT_GLOBAL_OBJECT(os_activity_t, _os_activity_none)
111111+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
112112+OS_EXPORT
113113+const struct os_activity_s _os_activity_none;
114114+115115+/*!
116116+ * @const OS_ACTIVITY_CURRENT
117117+ *
118118+ * @discussion
119119+ * Create activity and links to the current activity if one is present.
120120+ * If no activity is present it is treated as if it is detached.
121121+ */
122122+#define OS_ACTIVITY_CURRENT OS_OBJECT_GLOBAL_OBJECT(os_activity_t, _os_activity_current)
123123+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
124124+OS_EXPORT
125125+const struct os_activity_s _os_activity_current;
126126+127127+#else // !OS_ACTIVITY_OBJECT_API
128128+129129+#define OS_ACTIVITY_NULL 0
130130+131131+/*!
132132+ * @typedef os_activity_t
133133+ * An opaque activity identifier.
134134+ */
135135+__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(9.0))
136136+typedef uint64_t os_activity_t;
137137+138138+#endif // OS_ACTIVITY_OBJECT_API
139139+140140+/*!
141141+ * @typedef os_activity_id_t
142142+ * An value representing the activity ID assigned to an newly created activity.
143143+ */
144144+__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(9.0))
145145+typedef uint64_t os_activity_id_t;
146146+147147+#if !defined(__TRACE_BUILDING_TRACE__)
148148+/*!
149149+ * @typedef os_activity_scope_state_t
150150+ * Structure that is populated by os_activity_scope_enter and restored using
151151+ * os_activity_scope_leave.
152152+ */
153153+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
154154+typedef struct os_activity_scope_state_s {
155155+ uint64_t opaque[2];
156156+} *os_activity_scope_state_t;
157157+#else
158158+typedef struct os_activity_scope_state_s *os_activity_scope_state_t;
159159+#endif
160160+161161+#pragma mark - Internal support functions
162162+163163+#if OS_ACTIVITY_OBJECT_API
164164+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
165165+OS_EXPORT OS_NOTHROW OS_WARN_RESULT_NEEDS_RELEASE OS_NOT_TAIL_CALLED OS_OBJECT_RETURNS_RETAINED
166166+os_activity_t
167167+_os_activity_create(void *dso, const char *description, os_activity_t activity, os_activity_flag_t flags);
168168+#endif
169169+170170+/*!
171171+ * @function _os_activity_label_useraction
172172+ *
173173+ * @abstract
174174+ * Internal function for use by os_activity_label_useraction. Do not use directly.
175175+ */
176176+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
177177+OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED
178178+void
179179+_os_activity_label_useraction(void *dso, const char *name);
180180+181181+/*!
182182+ * @function _os_activity_initiate
183183+ *
184184+ * @abstract
185185+ * Do not use directly because your description will not be preserved.
186186+ */
187187+__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(9.0))
188188+OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED
189189+void
190190+_os_activity_initiate(void *dso, const char *description, os_activity_flag_t flags, os_block_t activity_block OS_NOESCAPE);
191191+192192+/*!
193193+ * @function _os_activity_initiate_f
194194+ *
195195+ * @abstract
196196+ * Do not use directly because your description will not be preserved.
197197+ */
198198+__API_AVAILABLE(macosx(10.10), ios(8.0), watchos(2.0), tvos(9.0))
199199+OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED
200200+void
201201+_os_activity_initiate_f(void *dso, const char *description, os_activity_flag_t flags, void *context, os_function_t function);
202202+203203+#pragma mark - Internal deprecated function support
204204+205205+/*!
206206+ * @function _os_activity_set_breadcrumb
207207+ *
208208+ * @abstract
209209+ * Internal function for setting breadcrumb. Do not use directly.
210210+ */
211211+__API_DEPRECATED_WITH_REPLACEMENT("os_activity_label_useraction", macosx(10.10, 10.12), ios(8.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
212212+OS_EXPORT OS_NOTHROW OS_NOT_TAIL_CALLED
213213+void
214214+_os_activity_set_breadcrumb(void *dso, const char *name);
215215+216216+/*!
217217+ * @function _os_activity_start
218218+ *
219219+ * @abstract
220220+ * Internal function for activity start, do not use directly will not preserve
221221+ * description.
222222+ */
223223+__API_DEPRECATED("use combination of os_activity_create and os_activity_apply/os_activity_scope", macosx(10.10, 10.12), ios(8.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
224224+OS_EXPORT OS_NOTHROW OS_WARN_RESULT OS_NOT_TAIL_CALLED
225225+os_activity_t
226226+_os_activity_start(void *dso, const char *description, os_activity_flag_t flags);
227227+228228+#pragma mark - activity related
229229+230230+/*!
231231+ * @function os_activity_initiate
232232+ *
233233+ * @abstract
234234+ * Synchronously initiates an activity using provided block.
235235+ *
236236+ * @discussion
237237+ * Synchronously initiates an activity using the provided block and creates
238238+ * a tracing buffer as appropriate. All new activities are created as a
239239+ * subactivity of an existing activity on the current thread.
240240+ *
241241+ * os_activity_initiate("indexing database", OS_ACTIVITY_FLAG_DEFAULT, ^(void) {
242242+ * // either do work directly or issue work asynchronously
243243+ * });
244244+ *
245245+ * @param description
246246+ * A constant string describing the activity, e.g., "performClick" or
247247+ * "menuSelection".
248248+ *
249249+ * @param flags
250250+ * Flags to be used when initiating the activity, typically OS_ACTIVITY_FLAG_DEFAULT.
251251+ *
252252+ * @param activity_block
253253+ * The block to execute a given activity
254254+ */
255255+#define os_activity_initiate(description, flags, activity_block) __extension__({ \
256256+ OS_LOG_STRING(__description, description); \
257257+ _os_activity_initiate(&__dso_handle, __description, flags, activity_block); \
258258+})
259259+260260+/*!
261261+ * @function os_activity_initiate_f
262262+ *
263263+ * @abstract
264264+ * Synchronously initiates an activity using the provided function.
265265+ *
266266+ * @discussion
267267+ * Synchronously initiates an activity using the provided function and creates
268268+ * a tracing buffer as appropriate. All new activities are created as a
269269+ * subactivity of an existing activity on the current thread.
270270+ *
271271+ * os_activity_initiate_f("indexing database", OS_ACTIVITY_FLAG_DEFAULT, context, function);
272272+ *
273273+ * @param description
274274+ * A constant string describing the activity, e.g., "performClick" or
275275+ * "menuSelection".
276276+ *
277277+ * @param flags
278278+ * Flags to be used when initiating the activity, typically OS_ACTIVITY_FLAG_DEFAULT.
279279+ *
280280+ * @param context
281281+ * An optional context that will be supplied to the activity function.
282282+ *
283283+ * @param activity_func
284284+ * The function to execute for the new activity.
285285+ */
286286+#define os_activity_initiate_f(description, flags, context, function) __extension__({ \
287287+ OS_LOG_STRING(__description, description); \
288288+ _os_activity_initiate_f(&__dso_handle, __description, flags, context, function); \
289289+})
290290+291291+#if OS_ACTIVITY_OBJECT_API
292292+/*!
293293+ * @function os_activity_create
294294+ *
295295+ * @abstract
296296+ * Creates an os_activity_t object which can be passed to os_activity_apply function.
297297+ *
298298+ * @discussion
299299+ * Creates an os_activity_t object which can be passed to os_activity_apply function.
300300+ *
301301+ * @param description
302302+ * Pass a description for the activity. The description must be a constant string
303303+ * within the calling executable or library.
304304+ *
305305+ * @param parent_activity
306306+ * Depending on flags will link the newly created activity to the value passed or
307307+ * note where the activity was created. Possible activities include: OS_ACTIVITY_NONE,
308308+ * OS_ACTIVITY_CURRENT or any existing os_activity_t object created using os_activity_create.
309309+ *
310310+ * @param flags
311311+ * A valid os_activity_flag_t which will determine behavior of the newly created activity.
312312+ *
313313+ * @result
314314+ * Returns an os_activity_t object which can be used with os_activity_apply.
315315+ */
316316+#define os_activity_create(description, parent_activity, flags) __extension__({ \
317317+ OS_LOG_STRING(__description, description); \
318318+ os_activity_t __activity = _os_activity_create(&__dso_handle, __description, parent_activity, flags); \
319319+ __activity; \
320320+})
321321+322322+/*!
323323+ * @function os_activity_apply
324324+ *
325325+ * @abstract
326326+ * Execute a block using a given activity object.
327327+ *
328328+ * @discussion
329329+ * Execute a block using a given activity object.
330330+ *
331331+ * @param activity
332332+ * There are global objects available which include: OS_ACTIVITY_NONE, OS_ACTIVITY_CURRENT
333333+ * or an existing os_activity_t object.
334334+ *
335335+ * @param block
336336+ * Pass the block to be executed within the context of the given activity.
337337+ */
338338+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
339339+OS_EXPORT OS_NOTHROW
340340+void
341341+os_activity_apply(os_activity_t activity, os_block_t block OS_NOESCAPE);
342342+343343+/*!
344344+ * @function os_activity_apply_f
345345+ *
346346+ * @abstract
347347+ * Execute a given function with a provided activity.
348348+ *
349349+ * @discussion
350350+ * Execute a given function with a provided activity.
351351+ *
352352+ * @param activity
353353+ * There are global objects available which include: OS_ACTIVITY_NONE, OS_ACTIVITY_CURRENT
354354+ * or an existing os_activity_t object.
355355+ *
356356+ * @param context
357357+ * Context to pass to the function which may be NULL.
358358+ *
359359+ * @param function
360360+ * Pass the function to be executed within the context of the given activity.
361361+ */
362362+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
363363+OS_EXPORT OS_NOTHROW
364364+void
365365+os_activity_apply_f(os_activity_t activity, void *context, os_function_t function);
366366+367367+/*!
368368+ * @function os_activity_scope_enter
369369+ *
370370+ * @abstract
371371+ * Will change the current execution context to use the provided activity.
372372+ *
373373+ * @discussion
374374+ * Will change the current execution context to use the provided activity. An activity
375375+ * can be created and then applied to the current scope by doing:
376376+ *
377377+ * struct os_activity_scope_state_s state;
378378+ * os_activity_t activity = os_activity_create("my new activity", 0);
379379+ * os_activity_scope_enter(activity, &state);
380380+ * ... do some work ...
381381+ * os_activity_scope_leave(&state);
382382+ *
383383+ * To auto-cleanup state call:
384384+ *
385385+ * os_activity_scope(activity);
386386+ *
387387+ * @param activity
388388+ * Pass a valid activity created with os_activity_create or any global object.
389389+ *
390390+ * @param state
391391+ * A stack-based struct os_activity_scope_state_s to store the state.
392392+ */
393393+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
394394+OS_EXPORT OS_NOTHROW
395395+void
396396+os_activity_scope_enter(os_activity_t activity, os_activity_scope_state_t state);
397397+398398+/*!
399399+ * @function os_activity_scope_leave
400400+ *
401401+ * @abstract
402402+ * Will pop state up to the state provided.
403403+ *
404404+ * @discussion
405405+ * Will leave scope using the state provided. If state is not present an error will be
406406+ * generated.
407407+ *
408408+ * @param state
409409+ * Must be a valid value filled by os_activity_scope_enter call.
410410+ */
411411+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
412412+OS_EXPORT OS_NOTHROW
413413+void
414414+os_activity_scope_leave(os_activity_scope_state_t state);
415415+416416+#if defined(__GNUC__)
417417+#define _os_activity_scope(var, activity) \
418418+ struct os_activity_scope_state_s var __attribute__((__cleanup__(os_activity_scope_leave))); \
419419+ os_activity_scope_enter(activity, &var)
420420+#define os_activity_scope(activity) _os_activity_scope(OS_CONCAT(scope, __COUNTER__), activity)
421421+#endif
422422+423423+#endif // OS_ACTIVITY_OBJECT_API
424424+425425+/*!
426426+ * @function os_activity_start
427427+ *
428428+ * @abstract
429429+ * Starts a new activity immediately within the current context.
430430+ *
431431+ * @discussion
432432+ * Starts a new activity immediately within the current context. Deprecated please use new
433433+ * os_activity_create and os_activity_apply.
434434+ *
435435+ * os_activity_t activity = os_activity_start("indexing database", OS_ACTIVITY_FLAG_DEFAULT);
436436+ * < do some work >
437437+ * os_activity_end(activity);
438438+ *
439439+ * @param description
440440+ * A constant string describing the activity, e.g., "performClick" or
441441+ * "menuSelection".
442442+ *
443443+ * @param flags
444444+ * Flags to be used when initiating the activity, typically OS_ACTIVITY_FLAG_DEFAULT.
445445+ *
446446+ * @result
447447+ * Returns a valid os_activity_id_t or 0 on failure.
448448+ */
449449+#define os_activity_start(description, flags) __extension__({ \
450450+ OS_LOG_STRING(__description, description); \
451451+ os_activity_t _aid = _os_activity_start(&__dso_handle, __description, flags); \
452452+ _aid; \
453453+})
454454+455455+/*!
456456+ * @function os_activity_end
457457+ *
458458+ * @abstract
459459+ * Ends the specified activity on the current thread.
460460+ *
461461+ * @discussion
462462+ * Ends the specified activity on the current thread. Does not signify anything
463463+ * other than the originator has received control back from the activity. Work
464464+ * could still be in flight related to the activity.
465465+ *
466466+ * @param activity
467467+ * An os_activity_t returned from os_activity_start.
468468+ */
469469+__API_DEPRECATED("use combination of os_activity_create and os_activity_apply/os_activity_scope", macosx(10.10, 10.12), ios(8.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
470470+OS_EXPORT OS_NOTHROW
471471+void
472472+os_activity_end(os_activity_t activity);
473473+474474+/*!
475475+ * @function os_activity_get_active
476476+ *
477477+ * @abstract
478478+ * Returns the stack of nested activities associated with the current thread.
479479+ *
480480+ * @discussion
481481+ * Activities have a sense of nesting and therefore there could be more than
482482+ * one activity involved on the current thread. This should be used by
483483+ * diagnostic tools only for making additional decisions about a situation.
484484+ *
485485+ * @param entries
486486+ * Pass a buffer of sufficient size to hold the the number of os_activity_id_t
487487+ * being requested.
488488+ *
489489+ * @param count
490490+ * Pointer to the requested number of activity identifiers.
491491+ * On output will be filled with the number of activities that are available.
492492+ *
493493+ * @result
494494+ * Number of activity identifiers written to 'entries'
495495+ */
496496+__API_DEPRECATED("No longer supported", macosx(10.10, 10.12), ios(8.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
497497+OS_EXPORT OS_NOTHROW
498498+unsigned int
499499+os_activity_get_active(os_activity_id_t *entries, unsigned int *count);
500500+501501+/*!
502502+ * @function os_activity_get_identifier
503503+ *
504504+ * @abstract
505505+ * Returns the current activity ID and will fill the parent_id if present.
506506+ *
507507+ * @discussion
508508+ * Returns the current activity ID and will fill the parent_id if present.
509509+ *
510510+ * @param parent_id
511511+ * If non-null will set the parent activity ID.
512512+ *
513513+ * @result
514514+ * The identifier for the provided activity.
515515+ */
516516+__API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0))
517517+OS_EXPORT OS_NOTHROW OS_NONNULL1 OS_WARN_RESULT
518518+os_activity_id_t
519519+os_activity_get_identifier(os_activity_t activity, os_activity_id_t *parent_id);
520520+521521+/*!
522522+ * @function os_activity_label_useraction
523523+ *
524524+ * @abstract
525525+ * Label an activity that is auto-generated by AppKit/UIKit with a name that is useful
526526+ * for debugging macro-level user actions.
527527+ *
528528+ * @discussion
529529+ * Label an activity that is auto-generated by AppKit/UIKit with a name that is useful
530530+ * for debugging macro-level user actions. The API should be called early within the scope
531531+ * of the IBAction and before any sub-activities are created. The name provided will
532532+ * be shown in tools in additon to the underlying AppKit/UIKit provided name. This API
533533+ * can only be called once and only on the activity created by AppKit/UIKit. These actions
534534+ * help determine workflow of the user in order to reproduce problems that occur.
535535+ * For example, a control press and/or menu item selection can be labeled:
536536+ *
537537+ * os_activity_label_useraction("New mail message");
538538+ * os_activity_label_useraction("Empty trash");
539539+ *
540540+ * Where the underlying AppKit/UIKit name will be "gesture:" or "menuSelect:".
541541+ *
542542+ * @param name
543543+ * A constant string that describes the the action.
544544+ */
545545+#define os_activity_label_useraction(label) __extension__({ \
546546+ OS_LOG_STRING(__label, label); \
547547+ _os_activity_label_useraction(&__dso_handle, __label); \
548548+})
549549+550550+#pragma mark - application breadcrumbs
551551+552552+/*!
553553+ * @function os_activity_set_breadcrumb
554554+ *
555555+ * @abstract
556556+ * This flags the current activity as a "breadcrumb", i.e., an interesting event.
557557+ *
558558+ * @discussion
559559+ * Not all activities are interesting events at the macro-level. Some activities
560560+ * can be flagged as a breadcrumb for evalutating cross activity interactions.
561561+ * This can only be called once per activity, other requests will be ignored.
562562+ *
563563+ * @param name
564564+ * A constant string that describes the breadcrumb.
565565+ */
566566+#define os_activity_set_breadcrumb(name) __extension__({ \
567567+ OS_LOG_STRING(__name, name); \
568568+ _os_activity_set_breadcrumb(&__dso_handle, __name); \
569569+})
570570+571571+__END_DECLS
572572+573573+#endif // __OS_ACTIVITY_H__
+81
src/libc/os/availability.h
···11+/*
22+ * Copyright (c) 2008-2016 Apple Inc. All rights reserved.
33+ *
44+ * @APPLE_APACHE_LICENSE_HEADER_START@
55+ *
66+ * Licensed under the Apache License, Version 2.0 (the "License");
77+ * you may not use this file except in compliance with the License.
88+ * You may obtain a copy of the License at
99+ *
1010+ * http://www.apache.org/licenses/LICENSE-2.0
1111+ *
1212+ * Unless required by applicable law or agreed to in writing, software
1313+ * distributed under the License is distributed on an "AS IS" BASIS,
1414+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1515+ * See the License for the specific language governing permissions and
1616+ * limitations under the License.
1717+ *
1818+ * @APPLE_APACHE_LICENSE_HEADER_END@
1919+ */
2020+2121+#ifndef __OS_AVAILABILITY__
2222+#define __OS_AVAILABILITY__
2323+2424+#include <AvailabilityInternal.h>
2525+2626+/*
2727+ Macros for defining which versions/platform a given symbol can be used.
2828+2929+ @see http://clang.llvm.org/docs/AttributeReference.html#availability
3030+ */
3131+3232+/*
3333+ * API Introductions
3434+ *
3535+ * Use to specify the release that a particular API became available.
3636+ *
3737+ * Platform names:
3838+ * macos, ios, tvos, watchos
3939+ *
4040+ * Examples:
4141+ * API_AVAILABLE(macos(10.10))
4242+ * API_AVAILABLE(macos(10.9), ios(10.0))
4343+ * API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0))
4444+ */
4545+4646+#define API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1)(__VA_ARGS__)
4747+4848+/*
4949+ * API Deprecations
5050+ *
5151+ * Use to specify the release that a particular API became unavailable.
5252+ *
5353+ * Platform names:
5454+ * macos, ios, tvos, watchos
5555+ *
5656+ * Examples:
5757+ *
5858+ * API_DEPRECATED("No longer supported", macos(10.4, 10.8))
5959+ * API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
6060+ *
6161+ * API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0))
6262+ * API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0))
6363+ */
6464+6565+#define API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1)(__VA_ARGS__)
6666+#define API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1)(__VA_ARGS__)
6767+6868+6969+7070+/*
7171+ * API Unavailability
7272+ * Use to specify that an API is unavailable for a particular platform.
7373+ *
7474+ * Example:
7575+ * API_UNAVAILABLE(macos)
7676+ * API_UNAVAILABLE(watchos, tvos)
7777+ */
7878+7979+#define API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1)(__VA_ARGS__)
8080+8181+#endif /* __OS_AVAILABILITY__ */
+229-40
src/libc/os/base.h
···11-/* Copyright (c) 2012 Apple Inc. All rights reserved.
11+/*
22+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
23 *
33- * @APPLE_LICENSE_HEADER_START@
44- *
55- * This file contains Original Code and/or Modifications of Original Code
66- * as defined in and that are subject to the Apple Public Source License
77- * Version 2.0 (the 'License'). You may not use this file except in
88- * compliance with the License. Please obtain a copy of the License at
99- * http://www.opensource.apple.com/apsl/ and read it before using this
1010- * file.
1111- *
1212- * The Original Code and all software distributed under the License are
1313- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
1414- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
1515- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
1616- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
1717- * Please see the License for the specific language governing rights and
44+ * @APPLE_APACHE_LICENSE_HEADER_START@
55+ *
66+ * Licensed under the Apache License, Version 2.0 (the "License");
77+ * you may not use this file except in compliance with the License.
88+ * You may obtain a copy of the License at
99+ *
1010+ * http://www.apache.org/licenses/LICENSE-2.0
1111+ *
1212+ * Unless required by applicable law or agreed to in writing, software
1313+ * distributed under the License is distributed on an "AS IS" BASIS,
1414+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1515+ * See the License for the specific language governing permissions and
1816 * limitations under the License.
1919- *
2020- * @APPLE_LICENSE_HEADER_END@
1717+ *
1818+ * @APPLE_APACHE_LICENSE_HEADER_END@
2119 */
22202323-#ifndef __OS_BASE_H__
2424-#define __OS_BASE_H__
2121+#ifndef __OS_BASE__
2222+#define __OS_BASE__
2323+2424+#include <sys/cdefs.h>
25252626+#ifndef __has_builtin
2727+#define __has_builtin(x) 0
2828+#endif
2929+#ifndef __has_include
3030+#define __has_include(x) 0
3131+#endif
3232+#ifndef __has_feature
3333+#define __has_feature(x) 0
3434+#endif
3535+#ifndef __has_attribute
3636+#define __has_attribute(x) 0
3737+#endif
3838+#ifndef __has_extension
3939+#define __has_extension(x) 0
4040+#endif
4141+4242+#undef OS_INLINE // <sys/_types/_os_inline.h>
2643#if __GNUC__
2727-#define os_fastpath(x) ((__typeof__(x))(uintptr_t)__builtin_expect((uintptr_t)(x), ~0l))
2828-#define os_slowpath(x) ((__typeof__(x))(uintptr_t)__builtin_expect((uintptr_t)(x), 0l))
2929-#define os_constant(x) __builtin_constant_p((x))
3030-#define os_hardware_trap() __asm__ __volatile__ (""); __builtin_trap()
4444+#define OS_NORETURN __attribute__((__noreturn__))
4545+#define OS_NOTHROW __attribute__((__nothrow__))
4646+#define OS_NONNULL1 __attribute__((__nonnull__(1)))
4747+#define OS_NONNULL2 __attribute__((__nonnull__(2)))
4848+#define OS_NONNULL3 __attribute__((__nonnull__(3)))
4949+#define OS_NONNULL4 __attribute__((__nonnull__(4)))
5050+#define OS_NONNULL5 __attribute__((__nonnull__(5)))
5151+#define OS_NONNULL6 __attribute__((__nonnull__(6)))
5252+#define OS_NONNULL7 __attribute__((__nonnull__(7)))
5353+#define OS_NONNULL8 __attribute__((__nonnull__(8)))
5454+#define OS_NONNULL9 __attribute__((__nonnull__(9)))
5555+#define OS_NONNULL10 __attribute__((__nonnull__(10)))
5656+#define OS_NONNULL11 __attribute__((__nonnull__(11)))
5757+#define OS_NONNULL12 __attribute__((__nonnull__(12)))
5858+#define OS_NONNULL13 __attribute__((__nonnull__(13)))
5959+#define OS_NONNULL14 __attribute__((__nonnull__(14)))
6060+#define OS_NONNULL15 __attribute__((__nonnull__(15)))
6161+#define OS_NONNULL_ALL __attribute__((__nonnull__))
6262+#define OS_SENTINEL __attribute__((__sentinel__))
6363+#define OS_PURE __attribute__((__pure__))
6464+#define OS_CONST __attribute__((__const__))
6565+#define OS_WARN_RESULT __attribute__((__warn_unused_result__))
6666+#define OS_MALLOC __attribute__((__malloc__))
6767+#define OS_USED __attribute__((__used__))
6868+#define OS_UNUSED __attribute__((__unused__))
6969+#define OS_COLD __attribute__((__cold__))
7070+#define OS_WEAK __attribute__((__weak__))
7171+#define OS_WEAK_IMPORT __attribute__((__weak_import__))
7272+#define OS_NOINLINE __attribute__((__noinline__))
7373+#define OS_ALWAYS_INLINE __attribute__((__always_inline__))
7474+#define OS_TRANSPARENT_UNION __attribute__((__transparent_union__))
7575+#define OS_ALIGNED(n) __attribute__((__aligned__((n))))
7676+#define OS_FORMAT_PRINTF(x,y) __attribute__((__format__(printf,x,y)))
7777+#define OS_EXPORT extern __attribute__((__visibility__("default")))
7878+#define OS_INLINE static __inline__
7979+#define OS_EXPECT(x, v) __builtin_expect((x), (v))
8080+#else
8181+#define OS_NORETURN
8282+#define OS_NOTHROW
8383+#define OS_NONNULL1
8484+#define OS_NONNULL2
8585+#define OS_NONNULL3
8686+#define OS_NONNULL4
8787+#define OS_NONNULL5
8888+#define OS_NONNULL6
8989+#define OS_NONNULL7
9090+#define OS_NONNULL8
9191+#define OS_NONNULL9
9292+#define OS_NONNULL10
9393+#define OS_NONNULL11
9494+#define OS_NONNULL12
9595+#define OS_NONNULL13
9696+#define OS_NONNULL14
9797+#define OS_NONNULL15
9898+#define OS_NONNULL_ALL
9999+#define OS_SENTINEL
100100+#define OS_PURE
101101+#define OS_CONST
102102+#define OS_WARN_RESULT
103103+#define OS_MALLOC
104104+#define OS_USED
105105+#define OS_UNUSED
106106+#define OS_COLD
107107+#define OS_WEAK
108108+#define OS_WEAK_IMPORT
109109+#define OS_NOINLINE
110110+#define OS_ALWAYS_INLINE
111111+#define OS_TRANSPARENT_UNION
112112+#define OS_ALIGNED(n)
113113+#define OS_FORMAT_PRINTF(x,y)
114114+#define OS_EXPORT extern
115115+#define OS_INLINE static inline
116116+#define OS_EXPECT(x, v) (x)
117117+#endif
118118+119119+#if __has_attribute(noescape)
120120+#define OS_NOESCAPE __attribute__((__noescape__))
121121+#else
122122+#define OS_NOESCAPE
123123+#endif
124124+125125+#if __has_feature(assume_nonnull)
126126+#define OS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
127127+#define OS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
128128+#else
129129+#define OS_ASSUME_NONNULL_BEGIN
130130+#define OS_ASSUME_NONNULL_END
131131+#endif
311323232-#define __OS_COMPILETIME_ASSERT__(e) __extension__({ \
3333- char __compile_time_assert__[(e) ? 1 : -1]; \
3434- (void)__compile_time_assert__; \
3535-})
133133+#if __has_builtin(__builtin_assume)
134134+#define OS_COMPILER_CAN_ASSUME(expr) __builtin_assume(expr)
135135+#else
136136+#define OS_COMPILER_CAN_ASSUME(expr) ((void)(expr))
137137+#endif
138138+139139+#if __has_extension(attribute_overloadable)
140140+#define OS_OVERLOADABLE __attribute__((__overloadable__))
141141+#else
142142+#define OS_OVERLOADABLE
143143+#endif
144144+145145+#if __has_feature(objc_fixed_enum) || __has_extension(cxx_strong_enums)
146146+#define OS_ENUM(_name, _type, ...) \
147147+ typedef enum : _type { __VA_ARGS__ } _name##_t
148148+#else
149149+#define OS_ENUM(_name, _type, ...) \
150150+ enum { __VA_ARGS__ }; typedef _type _name##_t
151151+#endif
361523737-#define __OS_CONST __attribute__((__const__))
3838-#define __OS_PRINTFLIKE(x,y) __attribute__((__format__(printf,x,y)))
3939-#else /* __GNUC__ */
4040-#define os_fastpath(x) (x)
4141-#define os_slowpath(x) (x)
4242-#define os_constant(x) ((long)0)
4343-#define os_hardware_trap() abort()
153153+#if __has_feature(attribute_availability_swift)
154154+// equivalent to __SWIFT_UNAVAILABLE from Availability.h
155155+#define OS_SWIFT_UNAVAILABLE(_msg) \
156156+ __attribute__((__availability__(swift, unavailable, message=_msg)))
157157+#else
158158+#define OS_SWIFT_UNAVAILABLE(_msg)
159159+#endif
441604545-#define __OS_COMPILETIME_ASSERT__(e) (e)
161161+#if __has_attribute(swift_private)
162162+# define OS_REFINED_FOR_SWIFT __attribute__((__swift_private__))
163163+#else
164164+# define OS_REFINED_FOR_SWIFT
165165+#endif
461664747-#define __OS_CONST
4848-#define __OS_PRINTFLIKE(x,y)
4949-#endif /* __GNUC__ */
167167+#if __has_attribute(swift_name)
168168+# define OS_SWIFT_NAME(_name) __attribute__((__swift_name__(#_name)))
169169+#else
170170+# define OS_SWIFT_NAME(_name)
171171+#endif
501725151-#endif /* __OS_BASE_H__ */
173173+#define __OS_STRINGIFY(s) #s
174174+#define OS_STRINGIFY(s) __OS_STRINGIFY(s)
175175+#define __OS_CONCAT(x, y) x ## y
176176+#define OS_CONCAT(x, y) __OS_CONCAT(x, y)
177177+178178+#ifdef __GNUC__
179179+#define os_prevent_tail_call_optimization() __asm__("")
180180+#define os_is_compile_time_constant(expr) __builtin_constant_p(expr)
181181+#define os_compiler_barrier() __asm__ __volatile__("" ::: "memory")
182182+#else
183183+#define os_prevent_tail_call_optimization() do { } while (0)
184184+#define os_is_compile_time_constant(expr) 0
185185+#define os_compiler_barrier() do { } while (0)
186186+#endif
187187+188188+#if __has_attribute(not_tail_called)
189189+#define OS_NOT_TAIL_CALLED __attribute__((__not_tail_called__))
190190+#else
191191+#define OS_NOT_TAIL_CALLED
192192+#endif
193193+194194+typedef void (*os_function_t)(void *_Nullable);
195195+196196+#ifdef __BLOCKS__
197197+/*!
198198+ * @typedef os_block_t
199199+ *
200200+ * @abstract
201201+ * Generic type for a block taking no arguments and returning no value.
202202+ *
203203+ * @discussion
204204+ * When not building with Objective-C ARC, a block object allocated on or
205205+ * copied to the heap must be released with a -[release] message or the
206206+ * Block_release() function.
207207+ *
208208+ * The declaration of a block literal allocates storage on the stack.
209209+ * Therefore, this is an invalid construct:
210210+ * <code>
211211+ * os_block_t block;
212212+ * if (x) {
213213+ * block = ^{ printf("true\n"); };
214214+ * } else {
215215+ * block = ^{ printf("false\n"); };
216216+ * }
217217+ * block(); // unsafe!!!
218218+ * </code>
219219+ *
220220+ * What is happening behind the scenes:
221221+ * <code>
222222+ * if (x) {
223223+ * struct Block __tmp_1 = ...; // setup details
224224+ * block = &__tmp_1;
225225+ * } else {
226226+ * struct Block __tmp_2 = ...; // setup details
227227+ * block = &__tmp_2;
228228+ * }
229229+ * </code>
230230+ *
231231+ * As the example demonstrates, the address of a stack variable is escaping the
232232+ * scope in which it is allocated. That is a classic C bug.
233233+ *
234234+ * Instead, the block literal must be copied to the heap with the Block_copy()
235235+ * function or by sending it a -[copy] message.
236236+ */
237237+typedef void (^os_block_t)(void);
238238+#endif
239239+240240+#endif // __OS_BASE__