Mercurial > projects > ldc
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