logging.odin 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package miniaudio
  2. import "core:c/libc"
  3. when ODIN_OS == .Windows {
  4. foreign import lib "lib/miniaudio.lib"
  5. } else {
  6. foreign import lib "lib/miniaudio.a"
  7. }
  8. MAX_LOG_CALLBACKS :: 4
  9. /*
  10. The callback for handling log messages.
  11. Parameters
  12. ----------
  13. pUserData (in)
  14. The user data pointer that was passed into ma_log_register_callback().
  15. logLevel (in)
  16. The log level. This can be one of the following:
  17. +----------------------+
  18. | Log Level |
  19. +----------------------+
  20. | MA_LOG_LEVEL_DEBUG |
  21. | MA_LOG_LEVEL_INFO |
  22. | MA_LOG_LEVEL_WARNING |
  23. | MA_LOG_LEVEL_ERROR |
  24. +----------------------+
  25. pMessage (in)
  26. The log message.
  27. */
  28. log_callback_proc :: proc "c" (pUserData: rawptr, level: u32, pMessage: cstring)
  29. log_callback :: struct {
  30. onLog: log_callback_proc,
  31. pUserData: rawptr,
  32. }
  33. log :: struct {
  34. callbacks: [MAX_LOG_CALLBACKS]log_callback,
  35. callbackCount: u32,
  36. allocationCallbacks: allocation_callbacks, /* Need to store these persistently because log_postv() might need to allocate a buffer on the heap. */
  37. lock: (struct {} when NO_THREADING else mutex),
  38. }
  39. @(default_calling_convention="c", link_prefix="ma_")
  40. foreign lib {
  41. log_callback_init :: proc(onLog: log_callback_proc, pUserData: rawptr) -> log_callback ---
  42. log_init :: proc(pAllocationCallbacks: ^allocation_callbacks, pLog: ^log) -> result ---
  43. log_uninit :: proc(pLog: ^log) ---
  44. log_register_callback :: proc(pLog: ^log, callback: log_callback) -> result ---
  45. log_unregister_callback :: proc(pLog: ^log, callback: log_callback) -> result ---
  46. log_post :: proc(pLog: ^log, level: u32, pMessage: cstring) -> result ---
  47. log_postv :: proc(pLog: ^log, level: u32, pFormat: cstring, args: libc.va_list) -> result ---
  48. log_postf :: proc(pLog: ^log, level: u32, pFormat: cstring, #c_vararg args: ..any) -> result ---
  49. }