Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

555 lines
20 KiB

  1. /*
  2. File: AvailabilityMacros.h
  3. Copyright: (c) 2001-2005 by Apple Computer, Inc., all rights reserved.
  4. More Info: See TechNote 2064
  5. Contains: Autoconfiguration of AVAILABLE_ macros for Mac OS X
  6. This header enables a developer to specify build time
  7. constraints on what Mac OS X versions the resulting
  8. application will be run. There are two bounds a developer
  9. can specify:
  10. MAC_OS_X_VERSION_MIN_REQUIRED
  11. MAC_OS_X_VERSION_MAX_ALLOWED
  12. The lower bound controls which calls to OS functions will
  13. be weak-importing (allowed to be unresolved at launch time).
  14. The upper bound controls which OS functionality, if used,
  15. will result in a compiler error because that functionality is
  16. not available on on any OS is the specifed range.
  17. For example, suppose an application is compiled with:
  18. MAC_OS_X_VERSION_MIN_REQUIRED = MAC_OS_X_VERSION_10_2
  19. MAC_OS_X_VERSION_MAX_ALLOWED = MAC_OS_X_VERSION_10_3
  20. and an OS header contains:
  21. extern void funcA(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
  22. extern void funcB(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2;
  23. extern void funcC(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
  24. extern void funcD(void) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
  25. extern void funcE(void) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
  26. extern void funcF(void) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
  27. extern void funcG(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
  28. typedef long TypeA DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER;
  29. typedef long TypeB DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER;
  30. typedef long TypeC DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER;
  31. typedef long TypeD DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER;
  32. typedef long TypeE DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER;
  33. Any application code which uses these declarations will get the following:
  34. compile link run
  35. ------- ------ -------
  36. funcA: normal normal normal
  37. funcB: warning normal normal
  38. funcC: normal normal normal
  39. funcD: normal normal normal
  40. funcE: normal normal normal
  41. funcF: normal weak on 10.3 normal, on 10.2 (&funcF == NULL)
  42. funcG: error error n/a
  43. typeA: warning
  44. typeB: warning
  45. typeC: warning
  46. typeD: normal
  47. typeE: normal
  48. */
  49. #ifndef __AVAILABILITYMACROS__
  50. #define __AVAILABILITYMACROS__
  51. /*
  52. * Set up standard Mac OS X versions
  53. */
  54. #define MAC_OS_X_VERSION_10_0 1000
  55. #define MAC_OS_X_VERSION_10_1 1010
  56. #define MAC_OS_X_VERSION_10_2 1020
  57. #define MAC_OS_X_VERSION_10_3 1030
  58. #define MAC_OS_X_VERSION_10_4 1040
  59. #define MAC_OS_X_VERSION_10_5 1050
  60. /*
  61. * If min OS not specified, assume 10.1
  62. * Note: gcc driver may set _ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED_ based on MACOSX_DEPLOYMENT_TARGET environment variable
  63. */
  64. #ifndef MAC_OS_X_VERSION_MIN_REQUIRED
  65. #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
  66. #define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
  67. #else
  68. #if __ppc64__ || __i386__ || __x86_64__
  69. #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
  70. #else
  71. #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_1
  72. #endif
  73. #endif
  74. #endif
  75. /*
  76. * if max OS not specified, assume largerof(10.5, min)
  77. */
  78. #ifndef MAC_OS_X_VERSION_MAX_ALLOWED
  79. #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5
  80. #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
  81. #else
  82. #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_5
  83. #endif
  84. #endif
  85. /*
  86. * Error on bad values
  87. */
  88. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_MIN_REQUIRED
  89. #error MAC_OS_X_VERSION_MAX_ALLOWED must be >= MAC_OS_X_VERSION_MIN_REQUIRED
  90. #endif
  91. #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_0
  92. #error MAC_OS_X_VERSION_MIN_REQUIRED must be >= MAC_OS_X_VERSION_10_0
  93. #endif
  94. /*
  95. * only certain compilers support __attribute__((weak_import))
  96. */
  97. #if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1020)
  98. #define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import))
  99. #elif defined(__MWERKS__) && (__MWERKS__ >= 0x3205) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1020)
  100. #define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import))
  101. #else
  102. #define WEAK_IMPORT_ATTRIBUTE
  103. #endif
  104. /*
  105. * only certain compilers support __attribute__((deprecated))
  106. */
  107. #if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
  108. #define DEPRECATED_ATTRIBUTE __attribute__((deprecated))
  109. #else
  110. #define DEPRECATED_ATTRIBUTE
  111. #endif
  112. /*
  113. * only certain compilers support __attribute__((unavailable))
  114. */
  115. #if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
  116. #define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable))
  117. #else
  118. #define UNAVAILABLE_ATTRIBUTE
  119. #endif
  120. /*
  121. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  122. *
  123. * Used on functions introduced in Mac OS X 10.0
  124. */
  125. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  126. /*
  127. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED
  128. *
  129. * Used on functions introduced in Mac OS X 10.0,
  130. * and deprecated in Mac OS X 10.0
  131. */
  132. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  133. /*
  134. * DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER
  135. *
  136. * Used on types deprecated in Mac OS X 10.0
  137. */
  138. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER DEPRECATED_ATTRIBUTE
  139. /*
  140. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  141. *
  142. * Used on declarations introduced in Mac OS X 10.1
  143. */
  144. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_1
  145. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER UNAVAILABLE_ATTRIBUTE
  146. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_1
  147. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER WEAK_IMPORT_ATTRIBUTE
  148. #else
  149. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  150. #endif
  151. /*
  152. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED
  153. *
  154. * Used on declarations introduced in Mac OS X 10.1,
  155. * and deprecated in Mac OS X 10.1
  156. */
  157. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  158. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  159. #else
  160. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  161. #endif
  162. /*
  163. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1
  164. *
  165. * Used on declarations introduced in Mac OS X 10.0,
  166. * but later deprecated in Mac OS X 10.1
  167. */
  168. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  169. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 DEPRECATED_ATTRIBUTE
  170. #else
  171. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  172. #endif
  173. /*
  174. * DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
  175. *
  176. * Used on types deprecated in Mac OS X 10.1
  177. */
  178. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
  179. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER DEPRECATED_ATTRIBUTE
  180. #else
  181. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
  182. #endif
  183. /*
  184. * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  185. *
  186. * Used on declarations introduced in Mac OS X 10.2
  187. */
  188. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_2
  189. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER UNAVAILABLE_ATTRIBUTE
  190. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_2
  191. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
  192. #else
  193. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  194. #endif
  195. /*
  196. * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
  197. *
  198. * Used on declarations introduced in Mac OS X 10.2,
  199. * and deprecated in Mac OS X 10.2
  200. */
  201. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  202. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  203. #else
  204. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  205. #endif
  206. /*
  207. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
  208. *
  209. * Used on declarations introduced in Mac OS X 10.0,
  210. * but later deprecated in Mac OS X 10.2
  211. */
  212. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  213. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 DEPRECATED_ATTRIBUTE
  214. #else
  215. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  216. #endif
  217. /*
  218. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
  219. *
  220. * Used on declarations introduced in Mac OS X 10.1,
  221. * but later deprecated in Mac OS X 10.2
  222. */
  223. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  224. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 DEPRECATED_ATTRIBUTE
  225. #else
  226. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  227. #endif
  228. /*
  229. * DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
  230. *
  231. * Used on types deprecated in Mac OS X 10.2
  232. */
  233. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
  234. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER DEPRECATED_ATTRIBUTE
  235. #else
  236. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
  237. #endif
  238. /*
  239. * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  240. *
  241. * Used on declarations introduced in Mac OS X 10.3
  242. */
  243. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3
  244. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER UNAVAILABLE_ATTRIBUTE
  245. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_3
  246. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER WEAK_IMPORT_ATTRIBUTE
  247. #else
  248. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  249. #endif
  250. /*
  251. * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED
  252. *
  253. * Used on declarations introduced in Mac OS X 10.3,
  254. * and deprecated in Mac OS X 10.3
  255. */
  256. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  257. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  258. #else
  259. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  260. #endif
  261. /*
  262. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
  263. *
  264. * Used on declarations introduced in Mac OS X 10.0,
  265. * but later deprecated in Mac OS X 10.3
  266. */
  267. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  268. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
  269. #else
  270. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  271. #endif
  272. /*
  273. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
  274. *
  275. * Used on declarations introduced in Mac OS X 10.1,
  276. * but later deprecated in Mac OS X 10.3
  277. */
  278. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  279. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
  280. #else
  281. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  282. #endif
  283. /*
  284. * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
  285. *
  286. * Used on declarations introduced in Mac OS X 10.2,
  287. * but later deprecated in Mac OS X 10.3
  288. */
  289. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  290. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
  291. #else
  292. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  293. #endif
  294. /*
  295. * DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
  296. *
  297. * Used on types deprecated in Mac OS X 10.3
  298. */
  299. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
  300. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER DEPRECATED_ATTRIBUTE
  301. #else
  302. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
  303. #endif
  304. /*
  305. * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
  306. *
  307. * Used on declarations introduced in Mac OS X 10.4
  308. */
  309. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4
  310. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER UNAVAILABLE_ATTRIBUTE
  311. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_4
  312. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER WEAK_IMPORT_ATTRIBUTE
  313. #else
  314. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
  315. #endif
  316. /*
  317. * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED
  318. *
  319. * Used on declarations introduced in Mac OS X 10.4,
  320. * and deprecated in Mac OS X 10.4
  321. */
  322. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  323. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  324. #else
  325. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
  326. #endif
  327. /*
  328. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
  329. *
  330. * Used on declarations introduced in Mac OS X 10.0,
  331. * but later deprecated in Mac OS X 10.4
  332. */
  333. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  334. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
  335. #else
  336. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  337. #endif
  338. /*
  339. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
  340. *
  341. * Used on declarations introduced in Mac OS X 10.1,
  342. * but later deprecated in Mac OS X 10.4
  343. */
  344. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  345. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
  346. #else
  347. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  348. #endif
  349. /*
  350. * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
  351. *
  352. * Used on declarations introduced in Mac OS X 10.2,
  353. * but later deprecated in Mac OS X 10.4
  354. */
  355. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  356. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
  357. #else
  358. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  359. #endif
  360. /*
  361. * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
  362. *
  363. * Used on declarations introduced in Mac OS X 10.3,
  364. * but later deprecated in Mac OS X 10.4
  365. */
  366. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  367. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
  368. #else
  369. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  370. #endif
  371. /*
  372. * DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER
  373. *
  374. * Used on types deprecated in Mac OS X 10.4
  375. */
  376. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
  377. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER DEPRECATED_ATTRIBUTE
  378. #else
  379. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER
  380. #endif
  381. /*
  382. * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
  383. *
  384. * Used on declarations introduced in Mac OS X 10.5
  385. */
  386. #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
  387. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER UNAVAILABLE_ATTRIBUTE
  388. #elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
  389. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER WEAK_IMPORT_ATTRIBUTE
  390. #else
  391. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
  392. #endif
  393. /*
  394. * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED
  395. *
  396. * Used on declarations introduced in Mac OS X 10.5,
  397. * and deprecated in Mac OS X 10.5
  398. */
  399. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  400. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
  401. #else
  402. #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
  403. #endif
  404. /*
  405. * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  406. *
  407. * Used on declarations introduced in Mac OS X 10.0,
  408. * but later deprecated in Mac OS X 10.5
  409. */
  410. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  411. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
  412. #else
  413. #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
  414. #endif
  415. /*
  416. * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  417. *
  418. * Used on declarations introduced in Mac OS X 10.1,
  419. * but later deprecated in Mac OS X 10.5
  420. */
  421. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  422. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
  423. #else
  424. #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
  425. #endif
  426. /*
  427. * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  428. *
  429. * Used on declarations introduced in Mac OS X 10.2,
  430. * but later deprecated in Mac OS X 10.5
  431. */
  432. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  433. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
  434. #else
  435. #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  436. #endif
  437. /*
  438. * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  439. *
  440. * Used on declarations introduced in Mac OS X 10.3,
  441. * but later deprecated in Mac OS X 10.5
  442. */
  443. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  444. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
  445. #else
  446. #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
  447. #endif
  448. /*
  449. * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
  450. *
  451. * Used on declarations introduced in Mac OS X 10.4,
  452. * but later deprecated in Mac OS X 10.5
  453. */
  454. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  455. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
  456. #else
  457. #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
  458. #endif
  459. /*
  460. * DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
  461. *
  462. * Used on types deprecated in Mac OS X 10.5
  463. */
  464. #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
  465. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER DEPRECATED_ATTRIBUTE
  466. #else
  467. #define DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
  468. #endif
  469. #endif /* __AVAILABILITYMACROS__ */