From 342b273234405ab76dc159d2e402bfb1ddfa1d8f Mon Sep 17 00:00:00 2001 From: Pixel Date: Mon, 3 Oct 2011 14:48:05 -0700 Subject: First commit - very basic features. --- src/Printer.cc | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/Printer.cc (limited to 'src/Printer.cc') diff --git a/src/Printer.cc b/src/Printer.cc new file mode 100644 index 0000000..fda9952 --- /dev/null +++ b/src/Printer.cc @@ -0,0 +1,60 @@ +#include "Printer.h" +#include "Main.h" +#include "Local.h" + +class PrinterLocal : public Balau::Local { + public: + PrinterLocal() { } + Balau::Printer * getGlobal() { return reinterpret_cast(Local::getGlobal()); } + Balau::Printer * get() { return reinterpret_cast(Local::get()); } + void setGlobal(Balau::Printer * printer) { Local::setGlobal(printer); } + void set(Balau::Printer * printer) { Local::set(printer); } +} printerLocal; + +static const char * prefixes[] = { + "(DD) ", + "(II) ", + "(--) ", + "(WW) ", + "(EE) ", + "(AA) ", +}; + +Balau::Printer::Printer() : m_verbosity(M_STATUS | M_WARNING | M_ERROR) { + if (!printerLocal.getGlobal()) + printerLocal.setGlobal(this); +} + +Balau::Printer * Balau::Printer::getPrinter() { return printerLocal.get(); } + +void Balau::Printer::_log(uint32_t level, const char * fmt, va_list ap) { + if (!(level & m_verbosity)) + return; + + int l, i; + + for (l = M_MAX, i = (sizeof(prefixes) / sizeof(*prefixes)) - 1; l; l >>= 1, i--) + if (l & level) + break; + + print(prefixes[i]); + print(fmt, ap); + print("\n"); +} + +void Balau::Printer::_print(const char * fmt, va_list ap) { + vfprintf(stderr, fmt, ap); +} + +class DefaultPrinter : public Balau::AtStart { + public: + DefaultPrinter() : AtStart(10) { } + protected: + virtual void doStart(); +}; + +static DefaultPrinter defaultPrinter; + +void DefaultPrinter::doStart() { + new Balau::Printer(); +} -- cgit v1.2.3