Mercurial > projects > ldc
view gen/logger.cpp @ 119:79c9ac745fbc trunk
[svn r123] Fixed some typeinfo module name mismatches.
Fixed D-style varargs returning through pointer.
Fixed converting nested function to delegate.
Added std.string and std.format to Phobos.
author | lindquist |
---|---|
date | Mon, 26 Nov 2007 06:45:13 +0100 |
parents | 027b8d8b71ec |
children | 5825d48b27d1 |
line wrap: on
line source
#include <cassert> #include <cstdarg> #include <cstdio> #include <cstdlib> #include <iostream> #include <fstream> #include <string> #include "gen/logger.h" 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() { if (enabled) { assert(!indent_str.empty()); indent_str.resize(indent_str.size()-2); } } std::ostream& cout() { if (enabled) return std::cout << indent_str; else return null_out; } void println(const char* fmt,...) { 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,...) { 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; } void attention(const char* fmt,...) { printf("***ATTENTION*** "); va_list va; va_start(va,fmt); vprintf(fmt,va); va_end(va); printf("\n"); } }