summaryrefslogtreecommitdiff
path: root/qstd/plat.c
diff options
context:
space:
mode:
Diffstat (limited to 'qstd/plat.c')
-rw-r--r--qstd/plat.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/qstd/plat.c b/qstd/plat.c
index 61385ff..7f07b96 100644
--- a/qstd/plat.c
+++ b/qstd/plat.c
@@ -84,3 +84,73 @@ void pbreak(int code) {
}
#endif
+
+#ifdef plat_win
+
+#define _POSIX_SOURCE
+#define _GNU_SOURCE
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#include <windows.h>
+#include <stdio.h>
+#include <io.h>
+
+int imp_assert(
+ int val,
+ const char* expr,
+ const char* file,
+ int line
+) {
+ if (!val) {
+ print_err(
+ "%d:%s: Assertion failed: %s.\n",
+ line,
+ file,
+ expr
+ );
+ pbreak(420);
+ return 0;
+ }
+ return 1;
+}
+
+void print(const char* fmt, ...) {
+ char buf[1024];
+ va_list args;
+ va_start(args, fmt);
+ vsprintf(buf, fmt, args);
+ va_end(args);
+ OutputDebugStringA(buf);
+}
+
+void print_err(const char* fmt, ...) {
+ char buf[1024];
+ va_list args;
+ va_start(args, fmt);
+ vsprintf(buf, fmt, args);
+ va_end(args);
+ OutputDebugStringA(buf);
+}
+
+void print_war(const char* fmt, ...) {
+ char buf[1024];
+ va_list args;
+ va_start(args, fmt);
+ vsprintf(buf, fmt, args);
+ va_end(args);
+ OutputDebugStringA(buf);
+}
+
+void pbreak(int code) {
+#if defined(DEBUG) && defined(plat_x86)
+ __debugbreak();
+ (void)code;
+#else
+ exit(code);
+#endif
+}
+
+
+#endif \ No newline at end of file