xref: /aosp_15_r20/external/libcups/cups/versioning.h (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker /*
2*5e7646d2SAndroid Build Coastguard Worker  * API versioning definitions for CUPS.
3*5e7646d2SAndroid Build Coastguard Worker  *
4*5e7646d2SAndroid Build Coastguard Worker  * Copyright © 2007-2019 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker  *
6*5e7646d2SAndroid Build Coastguard Worker  * Licensed under Apache License v2.0.  See the file "LICENSE" for more
7*5e7646d2SAndroid Build Coastguard Worker  * information.
8*5e7646d2SAndroid Build Coastguard Worker  */
9*5e7646d2SAndroid Build Coastguard Worker 
10*5e7646d2SAndroid Build Coastguard Worker #ifndef _CUPS_VERSIONING_H_
11*5e7646d2SAndroid Build Coastguard Worker #  define _CUPS_VERSIONING_H_
12*5e7646d2SAndroid Build Coastguard Worker 
13*5e7646d2SAndroid Build Coastguard Worker /*
14*5e7646d2SAndroid Build Coastguard Worker  * This header defines several macros that add compiler-specific attributes for
15*5e7646d2SAndroid Build Coastguard Worker  * functions:
16*5e7646d2SAndroid Build Coastguard Worker  *
17*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_API_major_minor[_patch]: Specifies when an API became available by
18*5e7646d2SAndroid Build Coastguard Worker  *     CUPS version.
19*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_DEPRECATED: Function is deprecated with no replacement.
20*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_DEPRECATED_MSG("message"): Function is deprecated and has a
21*5e7646d2SAndroid Build Coastguard Worker  *     replacement.
22*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_FORMAT(format-index, additional-args-index): Function has a
23*5e7646d2SAndroid Build Coastguard Worker  *     printf-style format argument followed by zero or more additional
24*5e7646d2SAndroid Build Coastguard Worker  *     arguments.  Indices start at 1.
25*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_INTERNAL: Function is internal with no replacement API.
26*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_INTERNAL_MSG("msg"): Function is internal - use specified API
27*5e7646d2SAndroid Build Coastguard Worker  *     instead.
28*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_NONNULL((arg list)): Specifies the comma-separated argument indices
29*5e7646d2SAndroid Build Coastguard Worker  *     are assumed non-NULL.  Indices start at 1.
30*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_NORETURN: Specifies the function does not return.
31*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_PRIVATE: Specifies the function is private to CUPS.
32*5e7646d2SAndroid Build Coastguard Worker  *   - _CUPS_PUBLIC: Specifies the function is public API.
33*5e7646d2SAndroid Build Coastguard Worker  */
34*5e7646d2SAndroid Build Coastguard Worker 
35*5e7646d2SAndroid Build Coastguard Worker /*
36*5e7646d2SAndroid Build Coastguard Worker  * Determine which compiler is being used and what annotation features are
37*5e7646d2SAndroid Build Coastguard Worker  * available...
38*5e7646d2SAndroid Build Coastguard Worker  */
39*5e7646d2SAndroid Build Coastguard Worker 
40*5e7646d2SAndroid Build Coastguard Worker #  ifdef __APPLE__
41*5e7646d2SAndroid Build Coastguard Worker #    include <os/availability.h>
42*5e7646d2SAndroid Build Coastguard Worker #  endif /* __APPLE__ */
43*5e7646d2SAndroid Build Coastguard Worker 
44*5e7646d2SAndroid Build Coastguard Worker #  ifdef __has_extension		/* Clang */
45*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_HAS_DEPRECATED
46*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_HAS_FORMAT
47*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_HAS_NORETURN
48*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_HAS_VISIBILITY
49*5e7646d2SAndroid Build Coastguard Worker #    if __has_extension(attribute_deprecated_with_message)
50*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_DEPRECATED_WITH_MESSAGE
51*5e7646d2SAndroid Build Coastguard Worker #    endif
52*5e7646d2SAndroid Build Coastguard Worker #    if __has_extension(attribute_unavailable_with_message)
53*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_UNAVAILABLE_WITH_MESSAGE
54*5e7646d2SAndroid Build Coastguard Worker #    endif
55*5e7646d2SAndroid Build Coastguard Worker #  elif defined(__GNUC__)		/* GCC and compatible */
56*5e7646d2SAndroid Build Coastguard Worker #    if __GNUC__ >= 3			/* GCC 3.0 or higher */
57*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_DEPRECATED
58*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_FORMAT
59*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_NORETURN
60*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_VISIBILITY
61*5e7646d2SAndroid Build Coastguard Worker #    endif /* __GNUC__ >= 3 */
62*5e7646d2SAndroid Build Coastguard Worker #    if __GNUC__ >= 5			/* GCC 5.x */
63*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_DEPRECATED_WITH_MESSAGE
64*5e7646d2SAndroid Build Coastguard Worker #    elif __GNUC__ == 4 && __GNUC_MINOR__ >= 5
65*5e7646d2SAndroid Build Coastguard Worker 					/* GCC 4.5 or higher */
66*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_HAS_DEPRECATED_WITH_MESSAGE
67*5e7646d2SAndroid Build Coastguard Worker #    endif /* __GNUC__ >= 5 */
68*5e7646d2SAndroid Build Coastguard Worker #  elif defined(_WIN32)
69*5e7646d2SAndroid Build Coastguard Worker #    define __attribute__(...)
70*5e7646d2SAndroid Build Coastguard Worker #  endif /* __has_extension */
71*5e7646d2SAndroid Build Coastguard Worker 
72*5e7646d2SAndroid Build Coastguard Worker 
73*5e7646d2SAndroid Build Coastguard Worker /*
74*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_INTERNAL, _CUPS_PRIVATE, and _CUPS_PUBLIC visibilty macros for
75*5e7646d2SAndroid Build Coastguard Worker  * internal/private/public functions...
76*5e7646d2SAndroid Build Coastguard Worker  */
77*5e7646d2SAndroid Build Coastguard Worker 
78*5e7646d2SAndroid Build Coastguard Worker #  ifdef _CUPS_HAS_VISIBILITY
79*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL	__attribute__ ((visibility("hidden")))
80*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PRIVATE	__attribute__ ((visibility("default")))
81*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PUBLIC	__attribute__ ((visibility("default")))
82*5e7646d2SAndroid Build Coastguard Worker #  elif defined(_WIN32) && defined(LIBCUPS2_EXPORTS) && 0
83*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL
84*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PRIVATE	__declspec(dllexport)
85*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PUBLIC	__declspec(dllexport)
86*5e7646d2SAndroid Build Coastguard Worker #  else
87*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL
88*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PRIVATE
89*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_PUBLIC
90*5e7646d2SAndroid Build Coastguard Worker #  endif /* _CUPS_HAS_VISIBILITY */
91*5e7646d2SAndroid Build Coastguard Worker 
92*5e7646d2SAndroid Build Coastguard Worker 
93*5e7646d2SAndroid Build Coastguard Worker /*
94*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_API_major_minor[_patch] availability macros for CUPS.
95*5e7646d2SAndroid Build Coastguard Worker  *
96*5e7646d2SAndroid Build Coastguard Worker  * Note: Using any of the _CUPS_API macros automatically adds _CUPS_PUBLIC.
97*5e7646d2SAndroid Build Coastguard Worker  */
98*5e7646d2SAndroid Build Coastguard Worker 
99*5e7646d2SAndroid Build Coastguard Worker #  if defined(__APPLE__) && !defined(_CUPS_SOURCE) && TARGET_OS_OSX
100*5e7646d2SAndroid Build Coastguard Worker /*
101*5e7646d2SAndroid Build Coastguard Worker  * On Apple operating systems, the _CUPS_API_* constants are defined using the
102*5e7646d2SAndroid Build Coastguard Worker  * API_ macros in <os/availability.h>.
103*5e7646d2SAndroid Build Coastguard Worker  *
104*5e7646d2SAndroid Build Coastguard Worker  * On iOS, we don't actually have libcups available directly, but the supplied
105*5e7646d2SAndroid Build Coastguard Worker  * libcups_static target in the Xcode project supports building on iOS 11.0 and
106*5e7646d2SAndroid Build Coastguard Worker  * later.
107*5e7646d2SAndroid Build Coastguard Worker  */
108*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_19 API_AVAILABLE(macos(10.3), ios(11.0)) _CUPS_PUBLIC
109*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_20 API_AVAILABLE(macos(10.4), ios(11.0)) _CUPS_PUBLIC
110*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_21 API_AVAILABLE(macos(10.4), ios(11.0)) _CUPS_PUBLIC
111*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_2 API_AVAILABLE(macos(10.5), ios(11.0)) _CUPS_PUBLIC
112*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_3 API_AVAILABLE(macos(10.5), ios(11.0)) _CUPS_PUBLIC
113*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_4 API_AVAILABLE(macos(10.6), ios(11.0)) _CUPS_PUBLIC
114*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_5 API_AVAILABLE(macos(10.7), ios(11.0)) _CUPS_PUBLIC
115*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_6 API_AVAILABLE(macos(10.8), ios(11.0)) _CUPS_PUBLIC
116*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_7 API_AVAILABLE(macos(10.9), ios(11.0)) _CUPS_PUBLIC
117*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_0 API_AVAILABLE(macos(10.10), ios(11.0)) _CUPS_PUBLIC
118*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2 API_AVAILABLE(macos(10.12), ios(11.0)) _CUPS_PUBLIC
119*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2_4 API_AVAILABLE(macos(10.13), ios(12.0)) _CUPS_PUBLIC
120*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2_7 API_AVAILABLE(macos(10.14), ios(13.0)) _CUPS_PUBLIC
121*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_3 API_AVAILABLE(macos(10.14), ios(13.0)) _CUPS_PUBLIC
122*5e7646d2SAndroid Build Coastguard Worker #  else
123*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_19 _CUPS_PUBLIC
124*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_20 _CUPS_PUBLIC
125*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_1_21 _CUPS_PUBLIC
126*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_2 _CUPS_PUBLIC
127*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_3 _CUPS_PUBLIC
128*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_4 _CUPS_PUBLIC
129*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_5 _CUPS_PUBLIC
130*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_6 _CUPS_PUBLIC
131*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_1_7 _CUPS_PUBLIC
132*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_0 _CUPS_PUBLIC
133*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2 _CUPS_PUBLIC
134*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2_4 _CUPS_PUBLIC
135*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_2_7 _CUPS_PUBLIC
136*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_API_2_3 _CUPS_PUBLIC
137*5e7646d2SAndroid Build Coastguard Worker #  endif /* __APPLE__ && !_CUPS_SOURCE */
138*5e7646d2SAndroid Build Coastguard Worker 
139*5e7646d2SAndroid Build Coastguard Worker 
140*5e7646d2SAndroid Build Coastguard Worker /*
141*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_DEPRECATED and _CUPS_INTERNAL macros to mark old APIs as
142*5e7646d2SAndroid Build Coastguard Worker  * "deprecated" or "unavailable" with messages so you get warnings/errors are
143*5e7646d2SAndroid Build Coastguard Worker  * compile-time...
144*5e7646d2SAndroid Build Coastguard Worker  *
145*5e7646d2SAndroid Build Coastguard Worker  * Note: Using any of the _CUPS_DEPRECATED macros automatically adds
146*5e7646d2SAndroid Build Coastguard Worker  * _CUPS_PUBLIC.
147*5e7646d2SAndroid Build Coastguard Worker  */
148*5e7646d2SAndroid Build Coastguard Worker 
149*5e7646d2SAndroid Build Coastguard Worker #  if !defined(_CUPS_HAS_DEPRECATED) || (defined(_CUPS_SOURCE) && !defined(_CUPS_NO_DEPRECATED))
150*5e7646d2SAndroid Build Coastguard Worker     /*
151*5e7646d2SAndroid Build Coastguard Worker      * Don't mark functions deprecated if the compiler doesn't support it
152*5e7646d2SAndroid Build Coastguard Worker      * or we are building CUPS source that doesn't care.
153*5e7646d2SAndroid Build Coastguard Worker      */
154*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED _CUPS_PUBLIC
155*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_MSG(m) _CUPS_PUBLIC
156*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_2_MSG(m) _CUPS_PUBLIC
157*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_6_MSG(m) _CUPS_PUBLIC
158*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_7_MSG(m) _CUPS_PUBLIC
159*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_2_2_MSG(m) _CUPS_PUBLIC
160*5e7646d2SAndroid Build Coastguard Worker #  elif defined(__APPLE__) && defined(_CUPS_NO_DEPRECATED)
161*5e7646d2SAndroid Build Coastguard Worker     /*
162*5e7646d2SAndroid Build Coastguard Worker      * Compiler supports the unavailable attribute, so use it when the code
163*5e7646d2SAndroid Build Coastguard Worker      * wants to exclude the use of deprecated API.
164*5e7646d2SAndroid Build Coastguard Worker      */
165*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED __attribute__ ((unavailable)) _CUPS_PUBLIC
166*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
167*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_2_MSG(m) API_DEPRECATED(m, macos(10.2,10.5), ios(11.0,11.0)) _CUPS_PUBLIC
168*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_6_MSG(m) API_DEPRECATED(m, macos(10.2,10.8), ios(11.0,11.0)) _CUPS_PUBLIC
169*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_7_MSG(m) API_DEPRECATED(m, macos(10.2,10.9), ios(11.0,11.0)) _CUPS_PUBLIC
170*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_2_2_MSG(m) API_DEPRECATED(m, macos(10.2,10.12), ios(11.0,11.0)) _CUPS_PUBLIC
171*5e7646d2SAndroid Build Coastguard Worker 
172*5e7646d2SAndroid Build Coastguard Worker #  elif defined(__APPLE__)
173*5e7646d2SAndroid Build Coastguard Worker     /*
174*5e7646d2SAndroid Build Coastguard Worker      * Just mark things as deprecated...
175*5e7646d2SAndroid Build Coastguard Worker      */
176*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED __attribute__ ((deprecated)) _CUPS_PUBLIC
177*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
178*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_2_MSG(m) API_DEPRECATED(m, macos(10.2,10.5), ios(11.0,11.0)) _CUPS_PUBLIC
179*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_6_MSG(m) API_DEPRECATED(m, macos(10.2,10.8), ios(11.0,11.0)) _CUPS_PUBLIC
180*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_7_MSG(m) API_DEPRECATED(m, macos(10.2,10.9), ios(11.0,11.0)) _CUPS_PUBLIC
181*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_2_2_MSG(m) API_DEPRECATED(m, macos(10.2,10.12), ios(11.0,11.0)) _CUPS_PUBLIC
182*5e7646d2SAndroid Build Coastguard Worker 
183*5e7646d2SAndroid Build Coastguard Worker #  elif defined(_CUPS_HAS_UNAVAILABLE_WITH_MESSAGE) && defined(_CUPS_NO_DEPRECATED)
184*5e7646d2SAndroid Build Coastguard Worker     /*
185*5e7646d2SAndroid Build Coastguard Worker      * Compiler supports the unavailable attribute, so use it when the code
186*5e7646d2SAndroid Build Coastguard Worker      * wants to exclude the use of deprecated API.
187*5e7646d2SAndroid Build Coastguard Worker      */
188*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED __attribute__ ((unavailable)) _CUPS_PUBLIC
189*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
190*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_2_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
191*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_6_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
192*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_1_7_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
193*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED_2_2_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
194*5e7646d2SAndroid Build Coastguard Worker #  else
195*5e7646d2SAndroid Build Coastguard Worker     /*
196*5e7646d2SAndroid Build Coastguard Worker      * Compiler supports the deprecated attribute, so use it.
197*5e7646d2SAndroid Build Coastguard Worker      */
198*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_DEPRECATED __attribute__ ((deprecated)) _CUPS_PUBLIC
199*5e7646d2SAndroid Build Coastguard Worker #    ifdef _CUPS_HAS_DEPRECATED_WITH_MESSAGE
200*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
201*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_2_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
202*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_6_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
203*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_7_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
204*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_2_2_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
205*5e7646d2SAndroid Build Coastguard Worker #    else
206*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
207*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_2_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
208*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_6_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
209*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_1_7_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
210*5e7646d2SAndroid Build Coastguard Worker #      define _CUPS_DEPRECATED_2_2_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
211*5e7646d2SAndroid Build Coastguard Worker #    endif /* _CUPS_HAS_DEPRECATED_WITH_MESSAGE */
212*5e7646d2SAndroid Build Coastguard Worker #  endif /* !_CUPS_HAS_DEPRECATED || (_CUPS_SOURCE && !_CUPS_NO_DEPRECATED) */
213*5e7646d2SAndroid Build Coastguard Worker 
214*5e7646d2SAndroid Build Coastguard Worker 
215*5e7646d2SAndroid Build Coastguard Worker /*
216*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_FORMAT macro for printf-style functions...
217*5e7646d2SAndroid Build Coastguard Worker  */
218*5e7646d2SAndroid Build Coastguard Worker 
219*5e7646d2SAndroid Build Coastguard Worker #  ifdef _CUPS_HAS_FORMAT
220*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_FORMAT(a,b) __attribute__ ((__format__(__printf__, a,b)))
221*5e7646d2SAndroid Build Coastguard Worker #  else
222*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_FORMAT(a,b)
223*5e7646d2SAndroid Build Coastguard Worker #  endif /* _CUPS_HAS_FORMAT */
224*5e7646d2SAndroid Build Coastguard Worker 
225*5e7646d2SAndroid Build Coastguard Worker 
226*5e7646d2SAndroid Build Coastguard Worker /*
227*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_INTERNAL_MSG macro for private APIs that have (historical)
228*5e7646d2SAndroid Build Coastguard Worker  * public visibility.
229*5e7646d2SAndroid Build Coastguard Worker  *
230*5e7646d2SAndroid Build Coastguard Worker  * Note: Using the _CUPS_INTERNAL_MSG macro automatically adds _CUPS_PUBLIC.
231*5e7646d2SAndroid Build Coastguard Worker  */
232*5e7646d2SAndroid Build Coastguard Worker 
233*5e7646d2SAndroid Build Coastguard Worker #  ifdef _CUPS_SOURCE
234*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL_MSG(m) _CUPS_PUBLIC
235*5e7646d2SAndroid Build Coastguard Worker #  elif defined(_CUPS_HAS_UNAVAILABLE_WITH_MESSAGE)
236*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL_MSG(m) __attribute__ ((unavailable(m))) _CUPS_PUBLIC
237*5e7646d2SAndroid Build Coastguard Worker #  elif defined(_CUPS_HAS_DEPRECATED_WITH_MESSAGE)
238*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL_MSG(m) __attribute__ ((deprecated(m))) _CUPS_PUBLIC
239*5e7646d2SAndroid Build Coastguard Worker #  else
240*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_INTERNAL_MSG(m) __attribute__ ((deprecated)) _CUPS_PUBLIC
241*5e7646d2SAndroid Build Coastguard Worker #  endif /* _CUPS_SOURCE */
242*5e7646d2SAndroid Build Coastguard Worker 
243*5e7646d2SAndroid Build Coastguard Worker 
244*5e7646d2SAndroid Build Coastguard Worker /*
245*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_NONNULL macro for functions that don't expect non-null
246*5e7646d2SAndroid Build Coastguard Worker  * arguments...
247*5e7646d2SAndroid Build Coastguard Worker  */
248*5e7646d2SAndroid Build Coastguard Worker 
249*5e7646d2SAndroid Build Coastguard Worker #  ifdef _CUPS_HAS_NONNULL
250*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_NONNULL(...) __attribute__ ((nonnull(__VA_ARGS__)))
251*5e7646d2SAndroid Build Coastguard Worker #  else
252*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_NONNULL(...)
253*5e7646d2SAndroid Build Coastguard Worker #  endif /* _CUPS_HAS_FORMAT */
254*5e7646d2SAndroid Build Coastguard Worker 
255*5e7646d2SAndroid Build Coastguard Worker 
256*5e7646d2SAndroid Build Coastguard Worker /*
257*5e7646d2SAndroid Build Coastguard Worker  * Define _CUPS_NORETURN macro for functions that don't return.
258*5e7646d2SAndroid Build Coastguard Worker  */
259*5e7646d2SAndroid Build Coastguard Worker 
260*5e7646d2SAndroid Build Coastguard Worker #  ifdef _CUPS_HAS_NORETURN
261*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_NORETURN	__attribute__ ((noreturn))
262*5e7646d2SAndroid Build Coastguard Worker #  else
263*5e7646d2SAndroid Build Coastguard Worker #    define _CUPS_NORETURN
264*5e7646d2SAndroid Build Coastguard Worker #  endif /* _CUPS_HAS_NORETURN */
265*5e7646d2SAndroid Build Coastguard Worker 
266*5e7646d2SAndroid Build Coastguard Worker 
267*5e7646d2SAndroid Build Coastguard Worker #endif /* !_CUPS_VERSIONING_H_ */
268