]>
Commit | Line | Data |
---|---|---|
13d88034 | 1 | /* |
b3962a83 | 2 | * Copyright (c) 1999-2006 Apple Inc. All Rights Reserved. |
13d88034 | 3 | * |
b3962a83 | 4 | * @APPLE_LICENSE_HEADER_START@ |
390d5862 A |
5 | * |
6 | * This file contains Original Code and/or Modifications of Original Code | |
7 | * as defined in and that are subject to the Apple Public Source License | |
8 | * Version 2.0 (the 'License'). You may not use this file except in | |
9 | * compliance with the License. Please obtain a copy of the License at | |
10 | * http://www.opensource.apple.com/apsl/ and read it before using this | |
11 | * file. | |
13d88034 A |
12 | * |
13 | * The Original Code and all software distributed under the License are | |
390d5862 | 14 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER |
13d88034 A |
15 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, |
16 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
390d5862 A |
17 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. |
18 | * Please see the License for the specific language governing rights and | |
19 | * limitations under the License. | |
13d88034 A |
20 | * |
21 | * @APPLE_LICENSE_HEADER_END@ | |
22 | */ | |
23 | // Copyright 1988-1996 NeXT Software, Inc. | |
24 | ||
b3962a83 A |
25 | #ifndef _OBJC_OBJC_API_H_ |
26 | #define _OBJC_OBJC_API_H_ | |
13d88034 | 27 | |
cd5f04f5 | 28 | #include <Availability.h> |
b3962a83 | 29 | #include <AvailabilityMacros.h> |
7af964d1 | 30 | #include <TargetConditionals.h> |
b3962a83 | 31 | |
8972963c A |
32 | #ifndef __has_feature |
33 | # define __has_feature(x) 0 | |
34 | #endif | |
35 | ||
cd5f04f5 A |
36 | #ifndef __has_extension |
37 | # define __has_extension __has_feature | |
38 | #endif | |
39 | ||
40 | ||
b3962a83 A |
41 | /* |
42 | * OBJC_API_VERSION 0 or undef: Tiger and earlier API only | |
43 | * OBJC_API_VERSION 2: Leopard and later API available | |
44 | */ | |
45 | #if !defined(OBJC_API_VERSION) | |
cd5f04f5 | 46 | # if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5 |
b3962a83 A |
47 | # define OBJC_API_VERSION 0 |
48 | # else | |
49 | # define OBJC_API_VERSION 2 | |
50 | # endif | |
13d88034 | 51 | #endif |
b3962a83 | 52 | |
cd5f04f5 A |
53 | |
54 | /* OBJC_OLD_DISPATCH_PROTOTYPES == 0 enforces the rule that the dispatch | |
55 | * functions must be cast to an appropriate function pointer type. */ | |
56 | #if !defined(OBJC_OLD_DISPATCH_PROTOTYPES) | |
57 | # define OBJC_OLD_DISPATCH_PROTOTYPES 1 | |
58 | #endif | |
59 | ||
60 | ||
b3962a83 A |
61 | /* OBJC2_UNAVAILABLE: unavailable in objc 2.0, deprecated in Leopard */ |
62 | #if !defined(OBJC2_UNAVAILABLE) | |
63 | # if __OBJC2__ | |
64 | # define OBJC2_UNAVAILABLE UNAVAILABLE_ATTRIBUTE | |
65 | # else | |
66 | # define OBJC2_UNAVAILABLE DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER | |
67 | # endif | |
68 | #endif | |
69 | ||
8972963c A |
70 | /* OBJC_ARC_UNAVAILABLE: unavailable with -fobjc-arc */ |
71 | #if !defined(OBJC_ARC_UNAVAILABLE) | |
72 | # if __has_feature(objc_arr) | |
cd5f04f5 A |
73 | # if __has_extension(attribute_unavailable_with_message) |
74 | # define OBJC_ARC_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) | |
75 | # else | |
76 | # define OBJC_ARC_UNAVAILABLE __attribute__((unavailable)) | |
77 | # endif | |
8972963c A |
78 | # else |
79 | # define OBJC_ARC_UNAVAILABLE | |
80 | # endif | |
81 | #endif | |
82 | ||
cd5f04f5 A |
83 | /* OBJC_GC_UNAVAILABLE: unavailable with -fobjc-gc or -fobjc-gc-only */ |
84 | #if !defined(OBJC_GC_UNAVAILABLE) | |
85 | # if __OBJC_GC__ | |
86 | # if __has_extension(attribute_unavailable_with_message) | |
87 | # define OBJC_GC_UNAVAILABLE __attribute__((unavailable("not available in garbage collecting mode"))) | |
88 | # else | |
89 | # define OBJC_GC_UNAVAILABLE __attribute__((unavailable)) | |
90 | # endif | |
91 | # else | |
92 | # define OBJC_GC_UNAVAILABLE | |
93 | # endif | |
94 | #endif | |
95 | ||
7af964d1 | 96 | #if !defined(OBJC_EXTERN) |
b3962a83 | 97 | # if defined(__cplusplus) |
7af964d1 A |
98 | # define OBJC_EXTERN extern "C" |
99 | # else | |
100 | # define OBJC_EXTERN extern | |
101 | # endif | |
102 | #endif | |
103 | ||
8972963c | 104 | #if !defined(OBJC_VISIBLE) |
7af964d1 A |
105 | # if TARGET_OS_WIN32 |
106 | # if defined(BUILDING_OBJC) | |
8972963c | 107 | # define OBJC_VISIBLE __declspec(dllexport) |
7af964d1 | 108 | # else |
8972963c | 109 | # define OBJC_VISIBLE __declspec(dllimport) |
7af964d1 | 110 | # endif |
b3962a83 | 111 | # else |
8972963c | 112 | # define OBJC_VISIBLE __attribute__((visibility("default"))) |
b3962a83 | 113 | # endif |
1f20c7a7 | 114 | #endif |
13d88034 | 115 | |
8972963c A |
116 | #if !defined(OBJC_EXPORT) |
117 | # define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE | |
118 | #endif | |
119 | ||
13d88034 | 120 | #if !defined(OBJC_IMPORT) |
390d5862 | 121 | # define OBJC_IMPORT extern |
13d88034 A |
122 | #endif |
123 | ||
7af964d1 A |
124 | #ifndef __DARWIN_NULL |
125 | #define __DARWIN_NULL NULL | |
126 | #endif | |
127 | ||
128 | #if !defined(OBJC_INLINE) | |
129 | # define OBJC_INLINE __inline | |
130 | #endif | |
131 | ||
b3962a83 | 132 | #endif |