#ifndef _AL_ERROR_H_
#define _AL_ERROR_H_

#include "alMain.h"
#include "logging.h"

#ifdef __cplusplus
extern "C" {
#endif

extern ALboolean TrapALError;

void alSetError(ALCcontext *context, ALenum errorCode, const char *msg, ...) DECL_FORMAT(printf, 3, 4);

#define SETERR_GOTO(ctx, err, lbl, ...) do {                                   \
    alSetError((ctx), (err), __VA_ARGS__);                                     \
    goto lbl;                                                                  \
} while(0)

#define SETERR_RETURN(ctx, err, retval, ...) do {                              \
    alSetError((ctx), (err), __VA_ARGS__);                                     \
    return retval;                                                             \
} while(0)

#ifdef __cplusplus
}
#endif

#endif