Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/linuxbsd_headers/dbus/dbus-macros.h
9898 views
1
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2
/* dbus-macros.h generic macros
3
*
4
* Copyright (C) 2002 Red Hat Inc.
5
*
6
* Licensed under the Academic Free License version 2.1
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*
22
*/
23
#if !defined (DBUS_INSIDE_DBUS_H) && !defined (DBUS_COMPILATION)
24
#error "Only <dbus/dbus.h> can be included directly, this file may disappear or change contents."
25
#endif
26
27
#ifndef DBUS_MACROS_H
28
#define DBUS_MACROS_H
29
30
#ifdef __cplusplus
31
# define DBUS_BEGIN_DECLS extern "C" {
32
# define DBUS_END_DECLS }
33
#else
34
# define DBUS_BEGIN_DECLS
35
# define DBUS_END_DECLS
36
#endif
37
38
#ifndef TRUE
39
# define TRUE 1
40
#endif
41
#ifndef FALSE
42
# define FALSE 0
43
#endif
44
45
#ifndef NULL
46
# ifdef __cplusplus
47
# define NULL (0L)
48
# else /* !__cplusplus */
49
# define NULL ((void*) 0)
50
# endif /* !__cplusplus */
51
#endif
52
53
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
54
# define DBUS_DEPRECATED __attribute__ ((__deprecated__))
55
#elif defined(_MSC_VER) && (_MSC_VER >= 1300)
56
# define DBUS_DEPRECATED __declspec(deprecated)
57
#else
58
# define DBUS_DEPRECATED
59
#endif
60
61
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
62
# define _DBUS_GNUC_EXTENSION __extension__
63
#else
64
# define _DBUS_GNUC_EXTENSION
65
#endif
66
67
#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)) || \
68
defined(__clang__)
69
#define _DBUS_GNUC_PRINTF( format_idx, arg_idx ) \
70
__attribute__((__format__ (__printf__, format_idx, arg_idx)))
71
#define _DBUS_GNUC_NORETURN \
72
__attribute__((__noreturn__))
73
#define _DBUS_GNUC_UNUSED \
74
__attribute__((__unused__))
75
#else /* !__GNUC__ */
76
#define _DBUS_GNUC_PRINTF( format_idx, arg_idx )
77
#define _DBUS_GNUC_NORETURN
78
#define _DBUS_GNUC_UNUSED
79
#endif /* !__GNUC__ */
80
81
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
82
#define DBUS_MALLOC __attribute__((__malloc__))
83
#else
84
#define DBUS_MALLOC
85
#endif
86
87
#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
88
#define DBUS_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
89
#define DBUS_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
90
#else
91
#define DBUS_ALLOC_SIZE(x)
92
#define DBUS_ALLOC_SIZE2(x,y)
93
#endif
94
95
#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
96
#define _DBUS_GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
97
#else
98
#define _DBUS_GNUC_WARN_UNUSED_RESULT
99
#endif
100
101
/** @def _DBUS_GNUC_PRINTF
102
* used to tell gcc about printf format strings
103
*/
104
/** @def _DBUS_GNUC_NORETURN
105
* used to tell gcc about functions that never return, such as _dbus_abort()
106
*/
107
/** @def _DBUS_GNUC_WARN_UNUSED_RESULT
108
* used to tell gcc about functions whose result must be used
109
*/
110
111
/* Normally docs are in .c files, but there isn't a .c file for this. */
112
/**
113
* @defgroup DBusMacros Utility macros
114
* @ingroup DBus
115
* @brief #TRUE, #FALSE, #NULL, and so on
116
*
117
* Utility macros.
118
*
119
* @{
120
*/
121
122
/**
123
* @def DBUS_BEGIN_DECLS
124
*
125
* Macro used prior to declaring functions in the D-Bus header
126
* files. Expands to "extern "C"" when using a C++ compiler,
127
* and expands to nothing when using a C compiler.
128
*
129
* Please don't use this in your own code, consider it
130
* D-Bus internal.
131
*/
132
/**
133
* @def DBUS_END_DECLS
134
*
135
* Macro used after declaring functions in the D-Bus header
136
* files. Expands to "}" when using a C++ compiler,
137
* and expands to nothing when using a C compiler.
138
*
139
* Please don't use this in your own code, consider it
140
* D-Bus internal.
141
*/
142
/**
143
* @def TRUE
144
*
145
* Expands to "1"
146
*/
147
/**
148
* @def FALSE
149
*
150
* Expands to "0"
151
*/
152
/**
153
* @def NULL
154
*
155
* A null pointer, defined appropriately for C or C++.
156
*/
157
/**
158
* @def DBUS_DEPRECATED
159
*
160
* Tells the compiler to warn about a function or type if it's used.
161
* Code marked in this way should also be enclosed in
162
* @code
163
* #ifndef DBUS_DISABLE_DEPRECATED
164
* deprecated stuff here
165
* #endif
166
* @endcode
167
*
168
* Please don't use this in your own code, consider it
169
* D-Bus internal.
170
*/
171
/**
172
* @def _DBUS_GNUC_EXTENSION
173
*
174
* Tells gcc not to warn about extensions to the C standard in the
175
* following expression, even if compiling with -pedantic. Do not use
176
* this macro in your own code; please consider it to be internal to libdbus.
177
*/
178
179
/*
180
* @def DBUS_EXPORT
181
*
182
* Declare the following symbol as public. This is currently a noop on
183
* platforms other than Windows.
184
*/
185
186
#if defined(DBUS_EXPORT)
187
/* value forced by compiler command line, don't redefine */
188
#elif defined(_WIN32)
189
# if defined(DBUS_STATIC_BUILD)
190
# define DBUS_EXPORT
191
# elif defined(dbus_1_EXPORTS)
192
# define DBUS_EXPORT __declspec(dllexport)
193
# else
194
# define DBUS_EXPORT __declspec(dllimport)
195
# endif
196
#elif defined(__GNUC__) && __GNUC__ >= 4
197
# define DBUS_EXPORT __attribute__ ((__visibility__ ("default")))
198
#else
199
#define DBUS_EXPORT
200
#endif
201
202
#if defined(DBUS_PRIVATE_EXPORT)
203
/* value forced by compiler command line, don't redefine */
204
#elif defined(_WIN32)
205
# if defined(DBUS_STATIC_BUILD)
206
# define DBUS_PRIVATE_EXPORT /* no decoration */
207
# elif defined(dbus_1_EXPORTS)
208
# define DBUS_PRIVATE_EXPORT __declspec(dllexport)
209
# else
210
# define DBUS_PRIVATE_EXPORT __declspec(dllimport)
211
# endif
212
#elif defined(__GNUC__) && __GNUC__ >= 4
213
# define DBUS_PRIVATE_EXPORT __attribute__ ((__visibility__ ("default")))
214
#else
215
# define DBUS_PRIVATE_EXPORT /* no decoration */
216
#endif
217
218
/* Implementation for dbus_clear_message() etc. This is not API,
219
* do not use it directly.
220
*
221
* We're using a specific type (T ** and T *) instead of void ** and
222
* void * partly for type-safety, partly to be strict-aliasing-compliant,
223
* and partly to keep C++ compilers happy. This code is inlined into
224
* users of libdbus, so we can't rely on it having dbus' own compiler
225
* settings. */
226
#define _dbus_clear_pointer_impl(T, pointer_to_pointer, destroy) \
227
do { \
228
T **_pp = (pointer_to_pointer); \
229
T *_value = *_pp; \
230
\
231
*_pp = NULL; \
232
\
233
if (_value != NULL) \
234
destroy (_value); \
235
} while (0)
236
/* Not (destroy) (_value) in case destroy() is a function-like macro */
237
238
/** @} */
239
240
#endif /* DBUS_MACROS_H */
241
242