A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright © 2010 Rafaël Carré
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
15 *
16 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
17 * KIND, either express or implied.
18 *
19 ****************************************************************************/
20
21#ifndef _GCC_EXTENSIONS_H_
22#define _GCC_EXTENSIONS_H_
23
24/* Support for some GCC extensions */
25
26/* Compile time check of format for printf/scanf like functions */
27#if defined(__GNUC__) && (__GNUC__ != 7)
28#define ATTRIBUTE_PRINTF(fmt, arg1) __attribute__( ( format( printf, fmt, arg1 ) ) )
29#define ATTRIBUTE_SCANF(fmt, arg1) __attribute__( ( format( scanf, fmt, arg1 ) ) )
30#else
31#define ATTRIBUTE_PRINTF(fmt, arg1)
32#define ATTRIBUTE_SCANF(fmt, arg1)
33#endif
34
35
36/* Use to give gcc hints on which branch is most likely taken */
37#if defined(__GNUC__) && __GNUC__ >= 3
38#define LIKELY(x) __builtin_expect(!!(x), 1)
39#define UNLIKELY(x) __builtin_expect(!!(x), 0)
40#else
41#define LIKELY(x) (x)
42#define UNLIKELY(x) (x)
43#endif
44
45
46#if defined(__GNUC__) && (__GNUC__ >= 3 || \
47 (__GNUC__ >= 2 && __GNUC_MINOR__ >= 5))
48#define NORETURN_ATTR __attribute__((noreturn))
49#else
50#define NORETURN_ATTR
51#endif
52
53
54#if defined(__GNUC__)
55#define FORCE_INLINE inline __attribute__((always_inline))
56#else
57#define FORCE_INLINE inline
58#endif
59
60#if defined(__GNUC__)
61#define NO_INLINE __attribute__((noinline))
62#else
63#define NO_INLINE
64#endif
65
66/* Version information from http://ohse.de/uwe/articles/gcc-attributes.html */
67#if defined(__GNUC__) && (__GNUC__ >= 4 || \
68 (__GNUC__ >= 3 && __GNUC_MINOR__ >= 1))
69#define USED_ATTR __attribute__((used))
70#else
71#define USED_ATTR
72#endif
73
74#if defined(__GNUC__) && (__GNUC__ >= 3)
75#define UNUSED_ATTR __attribute__((unused))
76#else
77#define UNUSED_ATTR
78#endif
79
80
81#endif /* _GCC_EXTENSIONS_H_ */