Created
April 2, 2024 15:20
-
-
Save quonic/dc281f29d95ced8e4cf3162959966a9d to your computer and use it in GitHub Desktop.
A helper function to trace errors when calling miniaudio functions in odin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import "vendor:miniaudio" | |
import "vendor:raylib" | |
// Example use case: | |
// result: miniaudio.result = miniaudio.engine_init(&audioengineConfig, &audioEngine) | |
// assert(checkAudioResult(result), "Failed to initialize audio engine") | |
checkAudioResult :: proc(result: miniaudio.result) -> bool { | |
switch result { | |
case .SUCCESS: | |
return true | |
case .ADDRESS_FAMILY_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Address family not supported") | |
case .ALREADY_CONNECTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Already connected") | |
case .ALREADY_EXISTS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Already exists") | |
case .API_NOT_FOUND: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: API not found") | |
case .AT_END: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: At end") | |
case .BAD_ADDRESS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Bad address") | |
case .ACCESS_DENIED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Access denied") | |
case .ALREADY_IN_USE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Already in use") | |
case .BACKEND_NOT_ENABLED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Backend not enabled") | |
case .BAD_MESSAGE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Bad message") | |
case .BAD_PROTOCOL: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Bad protocol") | |
case .BAD_PIPE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Bad pipe") | |
case .BAD_SEEK: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Bad seek") | |
case .BUSY: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Busy") | |
case .CANCELLED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Cancelled") | |
case .CONNECTION_REFUSED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Connection refused") | |
case .CONNECTION_RESET: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Connection reset") | |
case .CRC_MISMATCH: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: CRC mismatch") | |
case .DEADLOCK: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Deadlock") | |
case .DEVICE_ALREADY_INITIALIZED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Device already initialized") | |
case .DEVICE_NOT_INITIALIZED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Device not initialized") | |
case .DEVICE_NOT_STARTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Device not started") | |
case .DEVICE_NOT_STOPPED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Device not stopped") | |
case .DEVICE_TYPE_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Device type not supported") | |
case .DIRECTORY_NOT_EMPTY: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Directory not empty") | |
case .DOES_NOT_EXIST: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Does not exist") | |
case .ERROR: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Error") | |
case .FAILED_TO_INIT_BACKEND: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Failed to init backend") | |
case .FAILED_TO_OPEN_BACKEND_DEVICE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Failed to open backend device") | |
case .FAILED_TO_START_BACKEND_DEVICE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Failed to start backend device") | |
case .FAILED_TO_STOP_BACKEND_DEVICE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Failed to stop backend device") | |
case .FORMAT_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Format not supported") | |
case .IN_PROGRESS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: In progress") | |
case .INVALID_ARGS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Invalid args") | |
case .INVALID_OPERATION: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Invalid operation") | |
case .INTERRUPT: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Interrupt") | |
case .INVALID_DATA: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Invalid data") | |
case .INVALID_FILE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Invalid file") | |
case .INVALID_DEVICE_CONFIG: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Invalid device config") | |
case .IO_ERROR: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: IO error") | |
case .IS_DIRECTORY: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Is directory") | |
case .LOOP: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Loop") | |
case .MEMORY_ALREADY_MAPPED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Memory already mapped") | |
case .NAME_TOO_LONG: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Name too long") | |
case .NO_DEVICE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No device") | |
case .NO_ADDRESS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No address") | |
case .NO_DATA_AVAILABLE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No data available") | |
case .NO_BACKEND: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No backend") | |
case .NO_HOST: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No host") | |
case .NO_MESSAGE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No message") | |
case .NO_NETWORK: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No network") | |
case .NO_SPACE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: No space") | |
case .NOT_CONNECTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Not connected") | |
case .NOT_IMPLEMENTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Not implemented") | |
case .NOT_DIRECTORY: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Not directory") | |
case .NOT_SOCKET: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Not socket") | |
case .NOT_UNIQUE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Not unique") | |
case .OUT_OF_MEMORY: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Out of memory") | |
case .OUT_OF_RANGE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Out of range") | |
case .PATH_TOO_LONG: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Path too long") | |
case .PROTOCOL_FAMILY_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Protocol family not supported") | |
case .PROTOCOL_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Protocol not supported") | |
case .PROTOCOL_UNAVAILABLE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Protocol unavailable") | |
case .SHARE_MODE_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Share mode not supported") | |
case .SOCKET_NOT_SUPPORTED: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Socket not supported") | |
case .TIMEOUT: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Timeout") | |
case .TOO_BIG: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Too big") | |
case .TOO_MANY_LINKS: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Too many links") | |
case .TOO_MANY_OPEN_FILES: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Too many open files") | |
case .UNAVAILABLE: | |
raylib.TraceLog(raylib.TraceLogLevel.ERROR, "MINIAUDIO: Unavailable") | |
} | |
return false | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment