Merge pull request #204 from jhasse/android-byte-order
[openal-soft.git] / Alc / logging.h
blob785771c8c3327364ab7926cc9b7b928a538b0c27
1 #ifndef LOGGING_H
2 #define LOGGING_H
4 #include <stdio.h>
7 #ifdef __GNUC__
8 #define DECL_FORMAT(x, y, z) __attribute__((format(x, (y), (z))))
9 #else
10 #define DECL_FORMAT(x, y, z)
11 #endif
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
17 extern FILE *LogFile;
19 #if defined(__GNUC__) && !defined(_WIN32)
20 #define AL_PRINT(T, MSG, ...) fprintf(LogFile, "AL lib: %s %s: "MSG, T, __FUNCTION__ , ## __VA_ARGS__)
21 #else
22 void al_print(const char *type, const char *func, const char *fmt, ...) DECL_FORMAT(printf, 3,4);
23 #define AL_PRINT(T, ...) al_print((T), __FUNCTION__, __VA_ARGS__)
24 #endif
26 #ifdef __ANDROID__
27 #include <android/log.h>
28 #define LOG_ANDROID(T, MSG, ...) __android_log_print(T, "openal", "AL lib: %s: "MSG, __FUNCTION__ , ## __VA_ARGS__)
29 #else
30 #define LOG_ANDROID(T, MSG, ...) ((void)0)
31 #endif
33 enum LogLevel {
34 NoLog,
35 LogError,
36 LogWarning,
37 LogTrace,
38 LogRef
40 extern enum LogLevel LogLevel;
42 #define TRACEREF(...) do { \
43 if(LogLevel >= LogRef) \
44 AL_PRINT("(--)", __VA_ARGS__); \
45 } while(0)
47 #define TRACE(...) do { \
48 if(LogLevel >= LogTrace) \
49 AL_PRINT("(II)", __VA_ARGS__); \
50 LOG_ANDROID(ANDROID_LOG_DEBUG, __VA_ARGS__); \
51 } while(0)
53 #define WARN(...) do { \
54 if(LogLevel >= LogWarning) \
55 AL_PRINT("(WW)", __VA_ARGS__); \
56 LOG_ANDROID(ANDROID_LOG_WARN, __VA_ARGS__); \
57 } while(0)
59 #define ERR(...) do { \
60 if(LogLevel >= LogError) \
61 AL_PRINT("(EE)", __VA_ARGS__); \
62 LOG_ANDROID(ANDROID_LOG_ERROR, __VA_ARGS__); \
63 } while(0)
65 #ifdef __cplusplus
66 } /* extern "C" */
67 #endif
69 #endif /* LOGGING_H */