logging.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef LOGGING_H
  2. #define LOGGING_H
  3. #include <stdio.h>
  4. #include "opthelpers.h"
  5. #ifdef __GNUC__
  6. #define DECL_FORMAT(x, y, z) __attribute__((format(x, (y), (z))))
  7. #else
  8. #define DECL_FORMAT(x, y, z)
  9. #endif
  10. extern FILE *gLogFile;
  11. void al_print(FILE *logfile, const char *fmt, ...) DECL_FORMAT(printf, 2,3);
  12. #if !defined(_WIN32)
  13. #define AL_PRINT fprintf
  14. #else
  15. #define AL_PRINT al_print
  16. #endif
  17. #ifdef __ANDROID__
  18. #include <android/log.h>
  19. #define LOG_ANDROID(T, ...) __android_log_print(T, "openal", "AL lib: " __VA_ARGS__)
  20. #else
  21. #define LOG_ANDROID(T, ...) ((void)0)
  22. #endif
  23. enum LogLevel {
  24. NoLog,
  25. LogError,
  26. LogWarning,
  27. LogTrace,
  28. LogRef
  29. };
  30. extern LogLevel gLogLevel;
  31. #define TRACE(...) do { \
  32. if UNLIKELY(gLogLevel >= LogTrace) \
  33. AL_PRINT(gLogFile, "AL lib: (II) " __VA_ARGS__); \
  34. LOG_ANDROID(ANDROID_LOG_DEBUG, __VA_ARGS__); \
  35. } while(0)
  36. #define WARN(...) do { \
  37. if UNLIKELY(gLogLevel >= LogWarning) \
  38. AL_PRINT(gLogFile, "AL lib: (WW) " __VA_ARGS__); \
  39. LOG_ANDROID(ANDROID_LOG_WARN, __VA_ARGS__); \
  40. } while(0)
  41. #define ERR(...) do { \
  42. if UNLIKELY(gLogLevel >= LogError) \
  43. AL_PRINT(gLogFile, "AL lib: (EE) " __VA_ARGS__); \
  44. LOG_ANDROID(ANDROID_LOG_ERROR, __VA_ARGS__); \
  45. } while(0)
  46. #endif /* LOGGING_H */