Use LLVM OStream wrapper instead of <iostream> in the logger.

llvm::OStream provides all std::ostream functionality (by holding a
std::ostream* internally), but
 * doesn't include <iostream>, avoiding per-file overhead.
 * allows the stream pointer to be null, and the (inlined) operators do nothing
   when that's the case. (This also allows removal of the ofstream("/dev/null")
   hack Logger used when disabled, which presumably wasn't very portable)
This commit is contained in:
Frits van Bommel
2009-02-26 14:51:02 +01:00
parent 58a8711bc1
commit e37c82d1ec
10 changed files with 19 additions and 25 deletions

View File

@@ -2,7 +2,6 @@
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
@@ -14,7 +13,6 @@
namespace Logger
{
static std::string indent_str;
static std::ofstream null_out("/dev/null");
llvm::cl::opt<bool> _enabled("vv",
llvm::cl::desc("Very verbose"),
@@ -33,12 +31,12 @@ namespace Logger
indent_str.resize(indent_str.size()-2);
}
}
std::ostream& cout()
llvm::OStream cout()
{
if (_enabled)
return std::cout << indent_str;
return llvm::cout << indent_str;
else
return null_out;
return 0;
}
void println(const char* fmt,...)
{