]> Dogcows Code - chaz/yoink/blobdiff - src/moof/log.cc
remove some unused stlplus modules
[chaz/yoink] / src / moof / log.cc
index f9a3ad97d3c397b4a21e33b4793ca8bcea021622..514649653a4d4fbd1491e597d7527cd2f01eb7b4 100644 (file)
@@ -1,23 +1,24 @@
 
-/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
+/*]  Copyright (c) 2009-2011, Charles McGarvey  [*****************************
 **]  All rights reserved.
 *
-* vi:ts=4 sw=4 tw=75
-*
 * Distributable under the terms and conditions of the 2-clause BSD license;
 * see the file COPYING for a complete text of the license.
 *
-**************************************************************************/
+*****************************************************************************/
+
+#if HAVE_INCLUDE_H
+#include "config.h"
+#endif
 
 #include <fstream>
 
-#if !defined(__WIN32)
+#if PLATFORM_POSIX
 #include <termios.h>
 #else
-int isatty(int dummy) { return 0; }
+inline int isatty(int dummy) { return 0; }
 #endif
 
-
 #include "log.hh"
 #include "script.hh"
 
@@ -38,25 +39,29 @@ enum log::level log::level()
        return global_level_;
 }
 
-
 log::log(enum level level) :
        level_(level)
 {
        if (isatty(1) == 0)
                switch (level)
                {
-                       case log::error:        prefix_ = "  error: ";  break;
-                       case log::warning:      prefix_ = "warning: ";  break;
-                       case log::info:         prefix_ = "   info: ";  break;
-                       case log::none:         break;
+               case log::error:        prefix_ = "  error: ";  break;
+               case log::warning:      prefix_ = "warning: ";  break;
+               case log::info:         prefix_ = "   info: ";  break;
+               case log::debug:        prefix_ = "  debug: ";  break;
+               case log::none:         break;
                }
        else
                switch (level)
                {
-                       case log::error:        prefix_ = "\033[101m  error: "; break;
-                       case log::warning:      prefix_ = "\033[103mwarning: "; break;
-                       case log::info:         prefix_ = "   info: ";                  break;
-                       case log::none:         break;
+               case log::error:        prefix_ = "\033[30;101m  error: ";
+                                       break;
+               case log::warning:      prefix_ = "\033[30;103mwarning: ";
+                                       break;
+               case log::info:         prefix_ = "   info: ";
+                                       break;
+               case log::debug:        prefix_ = "\033[2m  debug: ";
+               case log::none:         break;
                }
 }
 
@@ -64,34 +69,40 @@ std::ostream& operator << (class log& log, log::endl_ endl)
 {
        if (log::global_level_ < log.level_) return null_log;
        if (isatty(1) == 0) return moof::log << std::endl;
-       else return moof::log << "\033[0m" << std::endl;
+       return moof::log << "\033[0m" << std::endl;
 }
 
 std::ostream& operator << (std::ostream& stream, log::endl_ endl)
 {
        if (isatty(1) == 0) return stream << std::endl;
-       else return stream << "\033[0m" << std::endl;
+       return stream << "\033[0m" << std::endl;
 }
 
-
 std::ostream& log(std::cout);
 
 static std::ofstream null_log_;
 std::ostream& null_log(null_log_);
 
-class log log_error(  log::error);
-class log log_warning(log::warning);
-class log log_info(   log::info);
-
+// These objects are intentionally not deconstructed so that logging will
+// still be available after this module has been cleaned up.
+class log& log_error(*new class log(log::error));
+class log& log_warning(*new class log(log::warning));
+class log& log_info(*new class log(log::info));
+class log& log_debug(*new class log(log::debug));
 
 static int log_script(script& script, enum log::level level)
 {
-       static class log* logs[] = {0, &log_error, &log_warning, &log_info};
+       static class log* logs[] = {
+               0,
+               &log_error,
+               &log_warning,
+               &log_info,
+               &log_debug
+       };
 
        script::slot param = script[1];
 
-       while (!param.is_none())
-       {
+       while (!param.is_none()) {
                (*logs[level])(param);
                ++param.index;
        }
@@ -102,13 +113,15 @@ static int log_script(script& script, enum log::level level)
 void log::import(script& script)
 {
        script.import_function("LogError",
-                                                 boost::bind(log_script, _1, log::error));
+                       boost::bind(log_script, _1, log::error));
        script.import_function("LogWarning",
-                                                 boost::bind(log_script, _1, log::warning));
+                       boost::bind(log_script, _1, log::warning));
        script.import_function("LogInfo",
-                                                 boost::bind(log_script, _1, log::info));
+                       boost::bind(log_script, _1, log::info));
        script.import_function("print",
-                                                 boost::bind(log_script, _1, log::info));
+                       boost::bind(log_script, _1, log::info));
+       script.import_function("LogDebug",
+                       boost::bind(log_script, _1, log::debug));
 }
 
 
This page took 0.024914 seconds and 4 git commands to generate.