Merge pull request #208 from JupiterRider/master

Cleanup utils - especially logging
This commit is contained in:
Milan Nikolic 2022-11-11 15:45:26 +01:00 committed by GitHub
commit 93f4babf10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 57 additions and 154 deletions

View file

@ -131,3 +131,7 @@ func (a *asset) Close() error {
C.AAsset_close(a.ptr)
return nil
}
func getInternalStoragePath() string {
return C.GoString(C.internal_storage_path)
}

View file

@ -1195,16 +1195,25 @@ func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
return *(*RenderTexture2D)(ptr)
}
// Log message types
type TraceLogLevel int
// Trace log level
// NOTE: Organized by priority level
const (
LogAll = iota
// Display all logs
LogAll TraceLogLevel = iota
// Trace logging, intended for internal use only
LogTrace
// Debug logging, used for internal debugging, it should be disabled on release builds
LogDebug
// Info logging, used for program execution info
LogInfo
// Warning logging, used on recoverable failures
LogWarning
// Error logging, used on unrecoverable failures
LogError
// Fatal logging, used to abort program: exit(EXIT_FAILURE)
LogFatal
// Disable logging
LogNone
)
var logTypeFlags byte = LogInfo | LogWarning | LogError

View file

@ -1,49 +1,43 @@
//go:build !android && !windows
// +build !android,!windows
//go:build !android
// +build !android
package rl
/*
#include "stdlib.h"
#include "raylib.h"
void TraceLogWrapper(int logLevel, const char *text)
{
TraceLog(logLevel, text);
}
*/
import "C"
import (
"fmt"
"os"
"unsafe"
)
// SetTraceLog - Enable trace log message types
func SetTraceLog(typeFlags byte) {
logTypeFlags = typeFlags
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
// Set the current threshold (minimum) log level
func SetTraceLog(logLevel TraceLogLevel) {
clogLevel := (C.int)(logLevel)
C.SetTraceLogLevel(clogLevel)
}
// TraceLog - Show trace log messages (INFO, WARNING, ERROR, DEBUG)
func TraceLog(msgType int, text string, v ...interface{}) {
switch msgType {
case LogInfo:
if logTypeFlags&LogInfo != 0 {
fmt.Printf("INFO: "+text+"\n", v...)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
fmt.Printf("WARNING: "+text+"\n", v...)
}
case LogError:
if logTypeFlags&LogError != 0 {
fmt.Printf("ERROR: "+text+"\n", v...)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
fmt.Printf("DEBUG: "+text+"\n", v...)
}
}
// Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
func TraceLog(logLevel TraceLogLevel, text string, v ...interface{}) {
ctext := C.CString(fmt.Sprintf(text, v...))
defer C.free(unsafe.Pointer(ctext))
clogLevel := (C.int)(logLevel)
C.TraceLogWrapper(clogLevel, ctext)
}
// HomeDir - Returns user home directory
func HomeDir() string {
return os.Getenv("HOME")
// NOTE: On Android this returns internal data path and must be called after InitWindow
func HomeDir() string {
if homeDir, err := os.UserHomeDir(); err != nil {
return homeDir
}
return ""
}

View file

@ -1,24 +0,0 @@
// +build android
#include "_cgo_export.h"
#include <android/log.h>
void log_info(const char *msg) {
__android_log_print(ANDROID_LOG_INFO, "raylib", "%s\n", msg);
}
void log_warn(const char *msg) {
__android_log_print(ANDROID_LOG_WARN, "raylib", "%s\n", msg);
}
void log_error(const char *msg) {
__android_log_print(ANDROID_LOG_ERROR, "raylib", "%s\n", msg);
}
void log_debug(const char *msg) {
__android_log_print(ANDROID_LOG_DEBUG, "raylib", "%s\n", msg);
}
const char* get_internal_storage_path() {
return internal_storage_path;
}

View file

@ -4,15 +4,12 @@
package rl
/*
#include "stdlib.h"
#include "raylib.h"
#include <stdlib.h>
void log_info(const char *msg);
void log_warn(const char *msg);
void log_error(const char *msg);
void log_debug(const char *msg);
extern char* get_internal_storage_path();
void TraceLogWrapper(int logLevel, const char *text)
{
TraceLog(logLevel, text);
}
*/
import "C"
@ -21,46 +18,22 @@ import (
"unsafe"
)
// SetTraceLog - Enable trace log message types (bit flags based)
func SetTraceLog(typeFlags byte) {
logTypeFlags = typeFlags
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
// Set the current threshold (minimum) log level
func SetTraceLog(logLevel TraceLogLevel) {
clogLevel := (C.int)(logLevel)
C.SetTraceLogLevel(clogLevel)
}
// TraceLog - Trace log messages showing (INFO, WARNING, ERROR, DEBUG)
func TraceLog(msgType int, text string, v ...interface{}) {
switch msgType {
case LogInfo:
if logTypeFlags&LogInfo != 0 {
msg := C.CString(fmt.Sprintf("INFO: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_info(msg)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
msg := C.CString(fmt.Sprintf("WARNING: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_warn(msg)
}
case LogError:
if logTypeFlags&LogError != 0 {
msg := C.CString(fmt.Sprintf("ERROR: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_error(msg)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
msg := C.CString(fmt.Sprintf("DEBUG: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_debug(msg)
}
}
// Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
func TraceLog(logLevel TraceLogLevel, text string, v ...interface{}) {
ctext := C.CString(fmt.Sprintf(text, v...))
defer C.free(unsafe.Pointer(ctext))
clogLevel := (C.int)(logLevel)
C.TraceLogWrapper(clogLevel, ctext)
}
// HomeDir - Returns user home directory
// NOTE: On Android this returns internal data path and must be called after InitWindow
func HomeDir() string {
return C.GoString(C.get_internal_storage_path())
return getInternalStoragePath()
}

View file

@ -1,53 +0,0 @@
//go:build windows
// +build windows
package rl
/*
#include "raylib.h"
*/
import "C"
import (
"fmt"
"os"
)
// SetTraceLog - Enable trace log message types (bit flags based)
func SetTraceLog(typeFlags byte) {
logTypeFlags = typeFlags
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
}
// TraceLog - Show trace log messages (INFO, WARNING, ERROR, DEBUG)
func TraceLog(msgType int, text string, v ...interface{}) {
switch msgType {
case LogInfo:
if logTypeFlags&LogInfo != 0 {
fmt.Printf("INFO: "+text+"\n", v...)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
fmt.Printf("WARNING: "+text+"\n", v...)
}
case LogError:
if logTypeFlags&LogError != 0 {
fmt.Printf("ERROR: "+text+"\n", v...)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
fmt.Printf("DEBUG: "+text+"\n", v...)
}
}
}
// HomeDir - Returns user home directory
func HomeDir() string {
home := os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
if home == "" {
home = os.Getenv("USERPROFILE")
}
return home
}