mirror of https://github.com/bjornbytes/lovr.git
Add lovrCheck macro;
lovrCheck is a new way of performing runtime assertions. It's identical to lovrAssert, except it's compiled out if LOVR_UNCHECKED is defined. It is meant to be used for non-mission-critical validation, for example proper usage of types passed to the Lua API. lovrAssert should still be used to check return values from platform APIs.
This commit is contained in:
parent
053c318995
commit
7dc54cc264
|
@ -1,20 +1,13 @@
|
|||
#include "util.h"
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdatomic.h>
|
||||
|
||||
// Error handling
|
||||
static void defaultErrorCallback(void* p, const char* format, va_list args) {
|
||||
fprintf(stderr, "Error: ");
|
||||
vfprintf(stderr, format, args);
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
|
||||
LOVR_THREAD_LOCAL errorFn* lovrErrorCallback = defaultErrorCallback;
|
||||
LOVR_THREAD_LOCAL void* lovrErrorUserdata = NULL;
|
||||
static LOVR_THREAD_LOCAL errorFn* lovrErrorCallback;
|
||||
static LOVR_THREAD_LOCAL void* lovrErrorUserdata;
|
||||
|
||||
void lovrSetErrorCallback(errorFn* callback, void* userdata) {
|
||||
lovrErrorCallback = callback ? callback : defaultErrorCallback;
|
||||
lovrErrorCallback = callback;
|
||||
lovrErrorUserdata = userdata;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,12 +33,16 @@ typedef struct Color { float r, g, b, a; } Color;
|
|||
|
||||
// Error handling
|
||||
typedef void errorFn(void*, const char*, va_list);
|
||||
extern LOVR_THREAD_LOCAL errorFn* lovrErrorCallback;
|
||||
extern LOVR_THREAD_LOCAL void* lovrErrorUserdata;
|
||||
void lovrSetErrorCallback(errorFn* callback, void* userdata);
|
||||
void LOVR_NORETURN lovrThrow(const char* format, ...);
|
||||
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
|
||||
|
||||
#ifdef LOVR_UNCHECKED
|
||||
#define lovrCheck(c, ...) ((void) 0)
|
||||
#else
|
||||
#define lovrCheck lovrAssert
|
||||
#endif
|
||||
|
||||
// Logging
|
||||
typedef void logFn(void*, int, const char*, const char*, va_list);
|
||||
enum { LOG_DEBUG, LOG_INFO, LOG_WARN, LOG_ERROR };
|
||||
|
|
|
@ -32,7 +32,10 @@ int main(int argc, char** argv) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
lovrAssert(os_init(), "Failed to initialize platform");
|
||||
if (!os_init()) {
|
||||
fprintf(stderr, "Failed to initialize platform");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int status;
|
||||
bool restart;
|
||||
|
|
Loading…
Reference in New Issue