diff gen/logger.c @ 38:27b2f40bdb58 trunk

[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back. Fiddled a bit the the testing system. Added a very simple SDL graphics demo.
author lindquist
date Wed, 10 Oct 2007 06:16:48 +0200
parents e116aa1488e6
children
line wrap: on
line diff
--- a/gen/logger.c	Wed Oct 10 03:38:24 2007 +0200
+++ b/gen/logger.c	Wed Oct 10 06:16:48 2007 +0200
@@ -1,10 +1,9 @@
-#ifndef LLVMD_NO_LOGGER
-
 #include <cassert>
 #include <cstdarg>
 #include <cstdio>
 #include <cstdlib>
 #include <iostream>
+#include <fstream>
 #include <string>
 
 #include "gen/logger.h"
@@ -12,36 +11,56 @@
 namespace Logger
 {
     static std::string indent_str;
+    static std::ofstream null_out("/dev/null");
+
+    static bool enabled = false;
     void indent()
     {
+        if (enabled)
         indent_str += "  ";
     }
     void undent()
     {
-        assert(!indent_str.empty());
-        indent_str.resize(indent_str.size()-2);
+        if (enabled) {
+            assert(!indent_str.empty());
+            indent_str.resize(indent_str.size()-2);
+        }
     }
     std::ostream& cout()
     {
-        return std::cout << indent_str;
+        if (enabled)
+            return std::cout << indent_str;
+        else
+            return null_out;
     }
     void println(const char* fmt,...)
     {
-        printf(indent_str.c_str());
-        va_list va;
-        va_start(va,fmt);
-        vprintf(fmt,va);
-        va_end(va);
-        printf("\n");
+        if (enabled) {
+            printf(indent_str.c_str());
+            va_list va;
+            va_start(va,fmt);
+            vprintf(fmt,va);
+            va_end(va);
+            printf("\n");
+        }
     }
     void print(const char* fmt,...)
     {
-        printf(indent_str.c_str());
-        va_list va;
-        va_start(va,fmt);
-        vprintf(fmt,va);
-        va_end(va);
+        if (enabled) {
+            printf(indent_str.c_str());
+            va_list va;
+            va_start(va,fmt);
+            vprintf(fmt,va);
+            va_end(va);
+        }
+    }
+    void enable()
+    {
+        enabled = true;
+    }
+    void disable()
+    {
+        enabled = false;
     }
 }
 
-#endif