-#ifndef LOG_H
-#define LOG_H
+#pragma once
+
+#include "progname.qh"
#define assert(expr, ...) _assert(LOG_SEVERE, expr, __VA_ARGS__)
+#define devassert(...) MACRO_BEGIN if (autocvar_developer) assert(__VA_ARGS__); MACRO_END
+
#define assert_once(expr, ...) \
MACRO_BEGIN { \
static bool __once; \
__once = true; \
} \
} MACRO_END
+#define devassert_once(...) MACRO_BEGIN if (autocvar_developer) assert_once(__VA_ARGS__); MACRO_END
+
#define demand(expr, ...) _assert(LOG_FATAL, expr, __VA_ARGS__)
+#define devdemand(...) MACRO_BEGIN if (autocvar_developer) demand(__VA_ARGS__); MACRO_END
+
#define _assert(f, expr, then) \
MACRO_BEGIN \
{ \
string(string...) strcat0n = #115;
#endif
+#define __SOURCELOC__ (sprintf("^9"__FILE__"^7" ":" "^9%s^7" ":" "^9"STR(__LINE__)"^7", __FUNC__))
+
#define _LOG(f, level, s) \
MACRO_BEGIN { \
- f(sprintf("^9[::"level "^9] ["__FILE__ "^7:^9%s^7:^9%d] \n^7%s\n", __FUNC__, __LINE__, s)); \
+ f(sprintf("^9[::^7" PROGNAME "^9::" level "^9] [%s^9]\n^7%s\n", __SOURCELOC__, s)); \
} MACRO_END
#define LOG_FATAL(...) _LOG_FATAL(strcat0n(__VA_ARGS__))
bt_cvar_set("developer", ftos(dev)); \
bt_cvar_set("prvm_backtraceforwarnings", ftos(war)); \
} MACRO_END
-
-#endif