PulseAudio  2.1
gccmacro.h
Go to the documentation of this file.
1 #ifndef foopulsegccmacrohfoo
2 #define foopulsegccmacrohfoo
3 
4 /***
5  This file is part of PulseAudio.
6 
7  Copyright 2004-2006 Lennart Poettering
8 
9  PulseAudio is free software; you can redistribute it and/or modify
10  it under the terms of the GNU Lesser General Public License as published
11  by the Free Software Foundation; either version 2.1 of the License,
12  or (at your option) any later version.
13 
14  PulseAudio is distributed in the hope that it will be useful, but
15  WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public License
20  along with PulseAudio; if not, write to the Free Software
21  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22  USA.
23 ***/
24 
28 #ifdef __GNUC__
29 #define PA_GCC_PRINTF_ATTR(a,b) __attribute__ ((format (printf, a, b)))
30 #else
31 
32 #define PA_GCC_PRINTF_ATTR(a,b)
33 #endif
34 
35 #if defined(__GNUC__) && (__GNUC__ >= 4)
36 #define PA_GCC_SENTINEL __attribute__ ((sentinel))
37 #else
38 
39 #define PA_GCC_SENTINEL
40 #endif
41 
42 #ifdef __GNUC__
43 #define PA_GCC_NORETURN __attribute__((noreturn))
44 #else
45 
46 #define PA_GCC_NORETURN
47 #endif
48 
49 #ifdef __GNUC__
50 #define PA_GCC_UNUSED __attribute__ ((unused))
51 #else
52 
53 #define PA_GCC_UNUSED
54 #endif
55 
56 #ifdef __GNUC__
57 #define PA_GCC_DESTRUCTOR __attribute__ ((destructor))
58 #else
59 
60 #define PA_GCC_DESTRUCTOR
61 #endif
62 
63 #ifndef PA_GCC_PURE
64 #ifdef __GNUC__
65 #define PA_GCC_PURE __attribute__ ((pure))
66 #else
67 
68 #define PA_GCC_PURE
69 #endif
70 #endif
71 
72 #ifndef PA_GCC_CONST
73 #ifdef __GNUC__
74 #define PA_GCC_CONST __attribute__ ((const))
75 #else
76 
77 #define PA_GCC_CONST
78 #endif
79 #endif
80 
81 #ifndef PA_GCC_DEPRECATED
82 #ifdef __GNUC__
83 #define PA_GCC_DEPRECATED __attribute__ ((deprecated))
84 #else
85 
86 #define PA_GCC_DEPRECATED
87 #endif
88 #endif
89 
90 #ifndef PA_GCC_PACKED
91 #ifdef __GNUC__
92 #define PA_GCC_PACKED __attribute__ ((packed))
93 #else
94 
95 #define PA_GCC_PACKED
96 #endif
97 #endif
98 
99 #ifndef PA_GCC_ALLOC_SIZE
100 #if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 3)
101 #define PA_GCC_ALLOC_SIZE(x) __attribute__ ((__alloc_size__(x)))
102 #define PA_GCC_ALLOC_SIZE2(x,y) __attribute__ ((__alloc_size__(x,y)))
103 #else
104 
105 #define PA_GCC_ALLOC_SIZE(x)
106 
107 #define PA_GCC_ALLOC_SIZE2(x,y)
108 #endif
109 #endif
110 
111 #ifndef PA_GCC_MALLOC
112 #ifdef __GNUC__
113 #define PA_GCC_MALLOC __attribute__ ((malloc))
114 #else
115 
116 #define PA_GCC_MALLOC
117 #endif
118 #endif
119 
120 #ifndef PA_GCC_WEAKREF
121 #if defined(__GNUC__) && defined(__ELF__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ > 1)) || (__GNUC__ > 4))
122 
123 #define PA_GCC_WEAKREF(x) __attribute__((weakref(#x)))
124 #endif
125 #endif
126 
127 #endif