summaryrefslogtreecommitdiffstats
path: root/src/common/assert.h
diff options
context:
space:
mode:
authorarchshift <admin@archshift.com>2015-01-21 02:16:47 +0100
committerarchshift <admin@archshift.com>2015-02-11 03:30:31 +0100
commitef24e72b2618806f64345544fa46c84f3f494890 (patch)
treefca138e8377c4d66bd1fe026a3d2fef54a7f090c /src/common/assert.h
parentGSP: Fixed typo in SignalInterrupt (diff)
downloadyuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar.gz
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar.bz2
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar.lz
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar.xz
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.tar.zst
yuzu-ef24e72b2618806f64345544fa46c84f3f494890.zip
Diffstat (limited to '')
-rw-r--r--src/common/assert.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/common/assert.h b/src/common/assert.h
new file mode 100644
index 000000000..3b2232a7e
--- /dev/null
+++ b/src/common/assert.h
@@ -0,0 +1,36 @@
+// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include "common/common_funcs.h"
+
+// TODO (yuriks) allow synchronous logging so we don't need printf
+#define ASSERT(_a_) \
+ do if (!(_a_)) {\
+ fprintf(stderr, "Assertion Failed!\n\n Line: %d\n File: %s\n Time: %s\n", \
+ __LINE__, __FILE__, __TIME__); \
+ Crash(); \
+ } while (0)
+
+#define ASSERT_MSG(_a_, ...) \
+ do if (!(_a_)) {\
+ fprintf(stderr, "Assertion Failed!\n\n Line: %d\n File: %s\n Time: %s\n", \
+ __LINE__, __FILE__, __TIME__); \
+ fprintf(stderr, __VA_ARGS__); \
+ fprintf(stderr, "\n"); \
+ Crash(); \
+ } while (0)
+
+#define UNREACHABLE() ASSERT_MSG(false, "Unreachable code!")
+
+#ifdef _DEBUG
+#define DEBUG_ASSERT(_a_) ASSERT(_a_)
+#define DEBUG_ASSERT_MSG(_a_, ...) ASSERT_MSG(_a_, __VA_ARGS__)
+#else // not debug
+#define DEBUG_ASSERT(_a_)
+#define DEBUG_ASSERT_MSG(_a_, _desc_, ...)
+#endif
+
+#define UNIMPLEMENTED() DEBUG_ASSERT_MSG(false, "Unimplemented code!")