Index: compiled/debug.h |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/compiled/debug.h |
@@ -0,0 +1,64 @@ |
+#pragma once |
+ |
+#include <emscripten.h> |
+#include <emscripten/trace.h> |
+ |
+#if defined(assert) |
+#undef assert |
+#endif |
+ |
+class String; |
+ |
+struct console_type |
+{ |
+ static void log(const String& str) |
+ { |
+ EM_ASM_ARGS(console.log(getStringData($0)), &str); |
+ } |
+ |
+ static void log(int i) |
+ { |
+ EM_ASM_ARGS(console.log($0), i); |
+ } |
+ |
+ static void log(void* ptr) |
+ { |
+ EM_ASM_ARGS(console.log($0), ptr); |
+ } |
+ |
+ static void error(const String& str) |
+ { |
+ EM_ASM_ARGS(console.error(new Error(getStringData($0)).stack), &str); |
+ } |
+}; |
+ |
+static console_type console; |
+ |
+inline void assert(bool condition, const String& str) |
+{ |
+#if defined(DEBUG) |
+ if (!condition) |
+ console.error(str); |
+#endif |
+} |
sergei
2016/02/23 15:45:57
BTW, I would #define `assert` to nothing when DEBU
Wladimir Palant
2016/02/23 21:35:01
Done.
|
+ |
+inline void annotate_address(void* address, const char* name) |
+{ |
+#if defined(__EMSCRIPTEN_TRACING__) |
+ emscripten_trace_annotate_address_type(address, name); |
+#endif |
+} |
+ |
+inline void enter_context(const char* context) |
+{ |
+#if defined(__EMSCRIPTEN_TRACING__) |
+ emscripten_trace_enter_context(context); |
+#endif |
+} |
+ |
+inline void exit_context() |
+{ |
+#if defined(__EMSCRIPTEN_TRACING__) |
+ emscripten_trace_exit_context(); |
+#endif |
+} |