Files
radiantwave/archive/vendor/github.com/veandco/go-sdl2/sdl/log.go
T
2026-08-07 14:51:41 -05:00

249 lines
7.2 KiB
Go

package sdl
/*
#include "sdl_wrapper.h"
#include "log.h"
static inline void _SDL_Log(const char *fmt)
{
SDL_Log("%s", fmt);
}
static inline void _SDL_LogVerbose(int category, const char *fmt)
{
SDL_LogVerbose(category, "%s", fmt);
}
static inline void _SDL_LogDebug(int category, const char *fmt)
{
SDL_LogDebug(category, "%s", fmt);
}
static inline void _SDL_LogInfo(int category, const char *fmt)
{
SDL_LogInfo(category, "%s", fmt);
}
static inline void _SDL_LogWarn(int category, const char *fmt)
{
SDL_LogWarn(category, "%s", fmt);
}
static inline void _SDL_LogError(int category, const char *fmt)
{
SDL_LogError(category, "%s", fmt);
}
static inline void _SDL_LogCritical(int category, const char *fmt)
{
SDL_LogCritical(category, "%s", fmt);
}
static inline void _SDL_LogMessage(int category, SDL_LogPriority priority, const char *fmt)
{
SDL_LogCritical(category, "%s", fmt);
}
*/
import "C"
import "fmt"
import "unsafe"
// An enumeration of the predefined log categories.
// (https://wiki.libsdl.org/SDL_LOG_CATEGORY)
const (
LOG_CATEGORY_APPLICATION = iota // application log
LOG_CATEGORY_ERROR // error log
LOG_CATEGORY_ASSERT // assert log
LOG_CATEGORY_SYSTEM // system log
LOG_CATEGORY_AUDIO // audio log
LOG_CATEGORY_VIDEO // video log
LOG_CATEGORY_RENDER // render log
LOG_CATEGORY_INPUT // input log
LOG_CATEGORY_TEST // test log
LOG_CATEGORY_RESERVED1 // reserved for future SDL library use
LOG_CATEGORY_RESERVED2 // reserved for future SDL library use
LOG_CATEGORY_RESERVED3 // reserved for future SDL library use
LOG_CATEGORY_RESERVED4 // reserved for future SDL library use
LOG_CATEGORY_RESERVED5 // reserved for future SDL library use
LOG_CATEGORY_RESERVED6 // reserved for future SDL library use
LOG_CATEGORY_RESERVED7 // reserved for future SDL library use
LOG_CATEGORY_RESERVED8 // reserved for future SDL library use
LOG_CATEGORY_RESERVED9 // reserved for future SDL library use
LOG_CATEGORY_RESERVED10 // reserved for future SDL library use
LOG_CATEGORY_CUSTOM // reserved for application use
)
// An enumeration of the predefined log priorities.
// (https://wiki.libsdl.org/SDL_LogPriority)
const (
LOG_PRIORITY_VERBOSE = iota + 1 // verbose
LOG_PRIORITY_DEBUG // debug
LOG_PRIORITY_INFO // info
LOG_PRIORITY_WARN // warn
LOG_PRIORITY_ERROR // error
LOG_PRIORITY_CRITICAL // critical
NUM_LOG_PRIORITIES // (internal use)
)
// LogPriority is a predefined log priority.
// (https://wiki.libsdl.org/SDL_LogPriority)
type LogPriority C.SDL_LogPriority
func (p LogPriority) c() C.SDL_LogPriority {
return C.SDL_LogPriority(p)
}
// LogSetAllPriority sets the priority of all log categories.
// (https://wiki.libsdl.org/SDL_LogSetAllPriority)
func LogSetAllPriority(p LogPriority) {
C.SDL_LogSetAllPriority(p.c())
}
// LogSetPriority sets the priority of a particular log category.
// (https://wiki.libsdl.org/SDL_LogSetPriority)
func LogSetPriority(category int, p LogPriority) {
C.SDL_LogSetPriority(C.int(category), p.c())
}
// LogGetPriority returns the priority of a particular log category.
// (https://wiki.libsdl.org/SDL_LogGetPriority)
func LogGetPriority(category int) LogPriority {
return LogPriority(C.SDL_LogGetPriority(C.int(category)))
}
// LogResetPriorities resets all priorities to default.
// (https://wiki.libsdl.org/SDL_LogResetPriorities)
func LogResetPriorities() {
C.SDL_LogResetPriorities()
}
// Log logs a message with LOG_CATEGORY_APPLICATION and LOG_PRIORITY_INFO.
// (https://wiki.libsdl.org/SDL_Log)
func Log(str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_Log(cstr)
}
// LogVerbose logs a message with LOG_PRIORITY_VERBOSE.
// (https://wiki.libsdl.org/SDL_LogVerbose)
func LogVerbose(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogVerbose(C.int(category), cstr)
}
// LogDebug logs a message with LOG_PRIORITY_DEBUG.
// (https://wiki.libsdl.org/SDL_LogDebug)
func LogDebug(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogDebug(C.int(category), cstr)
}
// LogInfo logs a message with LOG_PRIORITY_INFO.
// (https://wiki.libsdl.org/SDL_LogInfo)
func LogInfo(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogInfo(C.int(category), cstr)
}
// LogWarn logs a message with LOG_PRIORITY_WARN.
// (https://wiki.libsdl.org/SDL_LogWarn)
func LogWarn(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogWarn(C.int(category), cstr)
}
// LogError logs a message with LOG_PRIORITY_ERROR.
// (https://wiki.libsdl.org/SDL_LogError)
func LogError(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogError(C.int(category), cstr)
}
// LogCritical logs a message with LOG_PRIORITY_CRITICAL.
// (https://wiki.libsdl.org/SDL_LogCritical)
func LogCritical(category int, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogCritical(C.int(category), cstr)
}
// LogMessage logs a message with the specified category and priority.
// (https://wiki.libsdl.org/SDL_LogMessage)
func LogMessage(category int, pri LogPriority, str string, args ...interface{}) {
str = fmt.Sprintf(str, args...)
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
C._SDL_LogMessage(C.int(category), C.SDL_LogPriority(pri), cstr)
}
// LogOutputFunction is the function to call instead of the default
type LogOutputFunction func(data interface{}, category int, pri LogPriority, message string)
type logOutputFunctionCtx struct {
f LogOutputFunction
d interface{}
}
// Yissakhar Z. Beck (DeedleFake)'s implementation
//
//export logOutputFunction
func logOutputFunction(data unsafe.Pointer, category C.int, pri C.SDL_LogPriority, message *C.char) {
ctx := (*logOutputFunctionCtx)(data)
ctx.f(ctx.d, int(category), LogPriority(pri), C.GoString(message))
}
var (
logOutputFunctionCache LogOutputFunction
logOutputDataCache interface{}
)
// LogGetOutputFunction returns the current log output function.
// (https://wiki.libsdl.org/SDL_LogGetOutputFunction)
func LogGetOutputFunction() (LogOutputFunction, interface{}) {
return logOutputFunctionCache, logOutputDataCache
}
// LogSetOutputFunction replaces the default log output function with one of your own.
// (https://wiki.libsdl.org/SDL_LogSetOutputFunction)
func LogSetOutputFunction(f LogOutputFunction, data interface{}) {
ctx := &logOutputFunctionCtx{
f: f,
d: data,
}
C.LogSetOutputFunction(unsafe.Pointer(ctx))
logOutputFunctionCache = f
logOutputDataCache = data
}