libopenmpt  0.7.0-pre.17+r18722
cross-platform C++ and C library to decode tracked music files
libopenmpt_config.h
Go to the documentation of this file.
1 /*
2  * libopenmpt_config.h
3  * -------------------
4  * Purpose: libopenmpt public interface configuration
5  * Notes : (currently none)
6  * Authors: OpenMPT Devs
7  * The OpenMPT source code is released under the BSD license. Read LICENSE for more details.
8  */
9 
10 #ifndef LIBOPENMPT_CONFIG_H
11 #define LIBOPENMPT_CONFIG_H
12 
13 /* clang-format off */
14 
21 /* provoke warnings if already defined */
22 #define LIBOPENMPT_API
23 #undef LIBOPENMPT_API
24 #define LIBOPENMPT_CXX_API
25 #undef LIBOPENMPT_CXX_API
26 
45 #define LIBOPENMPT_STREAM_CALLBACKS_BUFFER
46 
58 #define LIBOPENMPT_STREAM_CALLBACKS_FD
59 
71 #define LIBOPENMPT_STREAM_CALLBACKS_FILE
72 
86 #define LIBOPENMPT_STREAM_CALLBACKS_FILE_MINGW
87 
101 #define LIBOPENMPT_STREAM_CALLBACKS_FILE_MSVCRT
102 
116 #define LIBOPENMPT_STREAM_CALLBACKS_FILE_POSIX
117 
131 #define LIBOPENMPT_STREAM_CALLBACKS_FILE_POSIX_LFS64
132 
141 #if defined(__DOXYGEN__)
142 
143 #define LIBOPENMPT_API_HELPER_EXPORT
144 #define LIBOPENMPT_API_HELPER_IMPORT
145 #define LIBOPENMPT_API_HELPER_PUBLIC
146 #define LIBOPENMPT_API_HELPER_LOCAL
147 
148 #elif defined(_MSC_VER)
149 
150 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
151 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
152 #define LIBOPENMPT_API_HELPER_PUBLIC
153 #define LIBOPENMPT_API_HELPER_LOCAL
154 
155 #ifdef __cplusplus
156 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS __declspec(dllexport)
157 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS __declspec(dllimport)
158 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS
159 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS
160 #endif
161 
162 #elif defined(__EMSCRIPTEN__)
163 
164 #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default"))) __attribute__((used))
165 #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default"))) __attribute__((used))
166 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default"))) __attribute__((used))
167 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
168 
169 #ifdef __cplusplus
170 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS __attribute__((visibility("default")))
171 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS __attribute__((visibility("default")))
172 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS __attribute__((visibility("default")))
173 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS __attribute__((visibility("hidden")))
174 #define LIBOPENMPT_API_HELPER_EXPORT_MEMBER __attribute__((visibility("default"))) __attribute__((used))
175 #define LIBOPENMPT_API_HELPER_IMPORT_MEMBER __attribute__((visibility("default"))) __attribute__((used))
176 #define LIBOPENMPT_API_HELPER_PUBLIC_MEMBER __attribute__((visibility("default"))) __attribute__((used))
177 #define LIBOPENMPT_API_HELPER_LOCAL_MEMBER __attribute__((visibility("hidden")))
178 #endif
179 
180 #elif (defined(__GNUC__) || defined(__clang__)) && defined(_WIN32)
181 
182 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
183 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
184 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
185 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
186 
187 #ifdef __cplusplus
188 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS __declspec(dllexport)
189 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS __declspec(dllimport)
190 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS __attribute__((visibility("default")))
191 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS __attribute__((visibility("hidden")))
192 #endif
193 
194 #elif defined(__GNUC__) || defined(__clang__)
195 
196 #define LIBOPENMPT_API_HELPER_EXPORT __attribute__((visibility("default")))
197 #define LIBOPENMPT_API_HELPER_IMPORT __attribute__((visibility("default")))
198 #define LIBOPENMPT_API_HELPER_PUBLIC __attribute__((visibility("default")))
199 #define LIBOPENMPT_API_HELPER_LOCAL __attribute__((visibility("hidden")))
200 
201 #ifdef __cplusplus
202 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS __attribute__((visibility("default")))
203 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS __attribute__((visibility("default")))
204 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS __attribute__((visibility("default")))
205 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS __attribute__((visibility("hidden")))
206 #endif
207 
208 #elif defined(_WIN32)
209 
210 #define LIBOPENMPT_API_HELPER_EXPORT __declspec(dllexport)
211 #define LIBOPENMPT_API_HELPER_IMPORT __declspec(dllimport)
212 #define LIBOPENMPT_API_HELPER_PUBLIC
213 #define LIBOPENMPT_API_HELPER_LOCAL
214 
215 #ifdef __cplusplus
216 
217 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS __declspec(dllexport)
218 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS __declspec(dllimport)
219 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS
220 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS
221 
222 #endif
223 
224 #else
225 
226 #define LIBOPENMPT_API_HELPER_EXPORT
227 #define LIBOPENMPT_API_HELPER_IMPORT
228 #define LIBOPENMPT_API_HELPER_PUBLIC
229 #define LIBOPENMPT_API_HELPER_LOCAL
230 
231 #endif
232 
233 #ifdef __cplusplus
234 
235 #ifndef LIBOPENMPT_API_HELPER_EXPORT_CLASS
236 #define LIBOPENMPT_API_HELPER_EXPORT_CLASS
237 #endif
238 #ifndef LIBOPENMPT_API_HELPER_EXPORT_MEMBER
239 #define LIBOPENMPT_API_HELPER_EXPORT_MEMBER
240 #endif
241 #ifndef LIBOPENMPT_API_HELPER_IMPORT_CLASS
242 #define LIBOPENMPT_API_HELPER_IMPORT_CLASS
243 #endif
244 #ifndef LIBOPENMPT_API_HELPER_IMPORT_MEMBER
245 #define LIBOPENMPT_API_HELPER_IMPORT_MEMBER
246 #endif
247 #ifndef LIBOPENMPT_API_HELPER_PUBLIC_CLASS
248 #define LIBOPENMPT_API_HELPER_PUBLIC_CLASS
249 #endif
250 #ifndef LIBOPENMPT_API_HELPER_PUBLIC_MEMBER
251 #define LIBOPENMPT_API_HELPER_PUBLIC_MEMBER
252 #endif
253 #ifndef LIBOPENMPT_API_HELPER_LOCAL_CLASS
254 #define LIBOPENMPT_API_HELPER_LOCAL_CLASS
255 #endif
256 #ifndef LIBOPENMPT_API_HELPER_LOCAL_MEMBER
257 #define LIBOPENMPT_API_HELPER_LOCAL_MEMBER
258 #endif
259 
260 #endif
261 
262 #if defined(LIBOPENMPT_BUILD_DLL)
263 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_EXPORT
264 #elif defined(LIBOPENMPT_USE_DLL)
265 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_IMPORT
266 #else
267 #define LIBOPENMPT_API LIBOPENMPT_API_HELPER_PUBLIC
268 #endif
269 
270 #ifdef __cplusplus
271 
272 #if defined(LIBOPENMPT_BUILD_DLL)
273 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_EXPORT
274 #define LIBOPENMPT_CXX_API_CLASS LIBOPENMPT_API_HELPER_EXPORT_CLASS
275 #define LIBOPENMPT_CXX_API_MEMBER LIBOPENMPT_API_HELPER_EXPORT_MEMBER
276 #elif defined(LIBOPENMPT_USE_DLL)
277 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_IMPORT
278 #define LIBOPENMPT_CXX_API_CLASS LIBOPENMPT_API_HELPER_IMPORT_CLASS
279 #define LIBOPENMPT_CXX_API_MEMBER LIBOPENMPT_API_HELPER_IMPORT_MEMBER
280 #else
281 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_PUBLIC
282 #define LIBOPENMPT_CXX_API_CLASS LIBOPENMPT_API_HELPER_PUBLIC_CLASS
283 #define LIBOPENMPT_CXX_API_MEMBER LIBOPENMPT_API_HELPER_PUBLIC_MEMBER
284 #endif
285 
286 #if defined(LIBOPENMPT_USE_DLL)
287 #if defined(_MSC_VER) && !defined(_DLL)
288 #error "C++ interface is disabled if libopenmpt is built as a DLL and the runtime is statically linked. This is not supported by microsoft and cannot possibly work. Ever."
289 #undef LIBOPENMPT_CXX_API
290 #define LIBOPENMPT_CXX_API LIBOPENMPT_API_HELPER_LOCAL
291 #undef LIBOPENMPT_CXX_API_CLASS
292 #define LIBOPENMPT_CXX_API_CLASS LIBOPENMPT_API_HELPER_LOCAL_CLASS
293 #undef LIBOPENMPT_CXX_API_MEMBER
294 #define LIBOPENMPT_CXX_API_MEMBER LIBOPENMPT_API_HELPER_LOCAL_MEMBER
295 #endif
296 #endif
297 
298 #endif
299 
305 /* C */
306 
307 #if !defined(LIBOPENMPT_NO_DEPRECATE)
308 #if defined(__clang__)
309 #define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
310 #elif defined(__GNUC__)
311 #define LIBOPENMPT_DEPRECATED __attribute__((deprecated))
312 #elif defined(_MSC_VER)
313 #define LIBOPENMPT_DEPRECATED __declspec(deprecated)
314 #else
315 #define LIBOPENMPT_DEPRECATED
316 #endif
317 #else
318 #define LIBOPENMPT_DEPRECATED
319 #endif
320 
321 #ifndef __cplusplus
322 #if !defined(LIBOPENMPT_NO_DEPRECATE)
324 #define LIBOPENMPT_DEPRECATED_STRING( str ) ( LIBOPENMPT_DEPRECATED_STRING_CONSTANT ? ( str ) : ( str ) )
325 #else
326 #define LIBOPENMPT_DEPRECATED_STRING( str ) str
327 #endif
328 #else
329 #define LIBOPENMPT_DEPRECATED_STRING( str ) str
330 #endif
331 
332 #if defined(__STDC__) && (__STDC__ == 1)
333 #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
334 #define LIBOPENMPT_C_INLINE inline
335 #else
336 #define LIBOPENMPT_C_INLINE
337 #endif
338 #else
339 #define LIBOPENMPT_C_INLINE
340 #endif
341 
342 
343 /* C++ */
344 
345 #ifdef __cplusplus
346 
347 #if defined(LIBOPENMPT_ASSUME_CPLUSPLUS)
348 #endif
349 
350 #if !defined(LIBOPENMPT_NO_DEPRECATE)
351 #define LIBOPENMPT_ATTR_DEPRECATED [[deprecated]]
352 #else
353 #define LIBOPENMPT_ATTR_DEPRECATED
354 #endif
355 
356 #endif
357 
358 
359 /* clang-format on */
360 
361 #include "libopenmpt_version.h"
362 
363 #endif /* LIBOPENMPT_CONFIG_H */
#define LIBOPENMPT_DEPRECATED
Definition: libopenmpt_config.h:315
static const int LIBOPENMPT_DEPRECATED_STRING_CONSTANT
Definition: libopenmpt_config.h:323