|
@ -65,9 +65,29 @@ |
|
|
//---------------------------------------------------------------------------------- |
|
|
//---------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
// Log types messages |
|
|
// Log types messages |
|
|
static int logTypeLevel = LOG_INFO; // Minimum log type level |
|
|
|
|
|
static int logTypeExit = LOG_ERROR; // Log type that exits |
|
|
|
|
|
static TraceLogCallback logCallback = NULL; // Log callback function pointer |
|
|
|
|
|
|
|
|
static int logTypeLevel = LOG_INFO; // Minimum log type level |
|
|
|
|
|
|
|
|
|
|
|
static TraceLogCallback traceLog = NULL; // TraceLog callback function pointer |
|
|
|
|
|
static MemAllocCallback memAlloc = NULL; // MemAlloc callback function pointer |
|
|
|
|
|
static MemReallocCallback memRealloc = NULL; // MemRealloc callback funtion pointer |
|
|
|
|
|
static MemFreeCallback memFree = NULL; // MemFree callback funtion pointer |
|
|
|
|
|
static LoadFileDataCallback loadFileData = NULL; // LoadFileData callback funtion pointer |
|
|
|
|
|
static SaveFileDataCallback saveFileData = NULL; // SaveFileText callback funtion pointer |
|
|
|
|
|
static LoadFileTextCallback loadFileText = NULL; // LoadFileText callback funtion pointer |
|
|
|
|
|
static SaveFileTextCallback saveFileText = NULL; // SaveFileText callback funtion pointer |
|
|
|
|
|
|
|
|
|
|
|
//void *MemAllocDefault(unsigned int size) { return RL_MALLOC(size); } |
|
|
|
|
|
//void MemFreeDefault(void *ptr) { RL_FREE(ptr); } |
|
|
|
|
|
|
|
|
|
|
|
void SetTraceLogCallback(TraceLogCallback callback) { traceLog = callback; } // Set custom trace log |
|
|
|
|
|
void SetMemAllocCallback(MemAllocCallback callback) { memAlloc = callback; } // Set custom memory allocator |
|
|
|
|
|
void SetMemReallocCallback(MemReallocCallback callback) { memRealloc = callback; } // Set custom memory reallocator |
|
|
|
|
|
void SetMemFreeCallback(MemFreeCallback callback) { memFree = callback; } // Set custom memory free |
|
|
|
|
|
void SetLoadFileDataCallback(LoadFileDataCallback callback) { loadFileData = callback; } // Set custom file data loader |
|
|
|
|
|
void SetSaveFileDataCallback(SaveFileDataCallback callback) { saveFileData = callback; } // Set custom file data saver |
|
|
|
|
|
void SetLoadFileTextCallback(LoadFileTextCallback callback) { loadFileText = callback; } // Set custom file text loader |
|
|
|
|
|
void SetSaveFileTextCallback(SaveFileTextCallback callback) { saveFileText = callback; } // Set custom file text saver |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(PLATFORM_ANDROID) |
|
|
#if defined(PLATFORM_ANDROID) |
|
|
static AAssetManager *assetManager = NULL; // Android assets manager pointer |
|
|
static AAssetManager *assetManager = NULL; // Android assets manager pointer |
|
@ -92,16 +112,7 @@ static int android_close(void *cookie); |
|
|
//---------------------------------------------------------------------------------- |
|
|
//---------------------------------------------------------------------------------- |
|
|
|
|
|
|
|
|
// Set the current threshold (minimum) log level |
|
|
// Set the current threshold (minimum) log level |
|
|
void SetTraceLogLevel(int logType) |
|
|
|
|
|
{ |
|
|
|
|
|
logTypeLevel = logType; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Set a trace log callback to enable custom logging |
|
|
|
|
|
void SetTraceLogCallback(TraceLogCallback callback) |
|
|
|
|
|
{ |
|
|
|
|
|
logCallback = callback; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void SetTraceLogLevel(int logType) { logTypeLevel = logType; } |
|
|
|
|
|
|
|
|
// Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) |
|
|
// Show trace log messages (LOG_INFO, LOG_WARNING, LOG_ERROR, LOG_DEBUG) |
|
|
void TraceLog(int logType, const char *text, ...) |
|
|
void TraceLog(int logType, const char *text, ...) |
|
@ -113,9 +124,9 @@ void TraceLog(int logType, const char *text, ...) |
|
|
va_list args; |
|
|
va_list args; |
|
|
va_start(args, text); |
|
|
va_start(args, text); |
|
|
|
|
|
|
|
|
if (logCallback) |
|
|
|
|
|
|
|
|
if (traceLog) |
|
|
{ |
|
|
{ |
|
|
logCallback(logType, text, args); |
|
|
|
|
|
|
|
|
traceLog(logType, text, args); |
|
|
va_end(args); |
|
|
va_end(args); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
@ -152,21 +163,37 @@ void TraceLog(int logType, const char *text, ...) |
|
|
|
|
|
|
|
|
va_end(args); |
|
|
va_end(args); |
|
|
|
|
|
|
|
|
if (logType >= logTypeExit) exit(1); // If exit message, exit program |
|
|
|
|
|
|
|
|
if (logType == LOG_ERROR) exit(1); // If error, exit program |
|
|
|
|
|
|
|
|
#endif // SUPPORT_TRACELOG |
|
|
#endif // SUPPORT_TRACELOG |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Internal memory allocator |
|
|
// Internal memory allocator |
|
|
|
|
|
// NOTE: Initializes to zero by default |
|
|
void *MemAlloc(int size) |
|
|
void *MemAlloc(int size) |
|
|
{ |
|
|
{ |
|
|
return RL_MALLOC(size); |
|
|
|
|
|
|
|
|
// WARNING: This implementation allows changing memAlloc at any |
|
|
|
|
|
// point during program execution, it could be a security risk |
|
|
|
|
|
void *ptr = NULL; |
|
|
|
|
|
if (memAlloc) ptr = memAlloc(size); |
|
|
|
|
|
else ptr = RL_CALLOC(size, 1); |
|
|
|
|
|
return ptr; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Internal memory reallocator |
|
|
|
|
|
void *MemRealloc(void *ptr, int size) |
|
|
|
|
|
{ |
|
|
|
|
|
void *ret = NULL; |
|
|
|
|
|
if (memRealloc) ret = memRealloc(ptr, size); |
|
|
|
|
|
else ret = RL_REALLOC(ptr, size); |
|
|
|
|
|
return ret; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Internal memory free |
|
|
// Internal memory free |
|
|
void MemFree(void *ptr) |
|
|
void MemFree(void *ptr) |
|
|
{ |
|
|
{ |
|
|
RL_FREE(ptr); |
|
|
|
|
|
|
|
|
if (memFree) memFree(ptr); |
|
|
|
|
|
else RL_FREE(ptr); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Load data from file into a buffer |
|
|
// Load data from file into a buffer |
|
@ -177,6 +204,12 @@ unsigned char *LoadFileData(const char *fileName, unsigned int *bytesRead) |
|
|
|
|
|
|
|
|
if (fileName != NULL) |
|
|
if (fileName != NULL) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if (loadFileData) |
|
|
|
|
|
{ |
|
|
|
|
|
data = loadFileData(fileName, bytesRead); |
|
|
|
|
|
return data; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
FILE *file = fopen(fileName, "rb"); |
|
|
FILE *file = fopen(fileName, "rb"); |
|
|
|
|
|
|
|
|
if (file != NULL) |
|
|
if (file != NULL) |
|
@ -222,6 +255,12 @@ bool SaveFileData(const char *fileName, void *data, unsigned int bytesToWrite) |
|
|
|
|
|
|
|
|
if (fileName != NULL) |
|
|
if (fileName != NULL) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if (saveFileData) |
|
|
|
|
|
{ |
|
|
|
|
|
saveFileData(fileName, data, bytesToWrite); |
|
|
|
|
|
return success; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
FILE *file = fopen(fileName, "wb"); |
|
|
FILE *file = fopen(fileName, "wb"); |
|
|
|
|
|
|
|
|
if (file != NULL) |
|
|
if (file != NULL) |
|
|