Commit in slic on MAIN
include/LogLevel.hh+2-21.4 -> 1.5
       /Logger.hh+66-51.4 -> 1.5
       /Module.hh+3-31.4 -> 1.5
       /ModuleRegistry.hh+4-41.2 -> 1.3
src/Logger.cc+45-141.4 -> 1.5
   /Module.cc+8-31.2 -> 1.3
   /ModuleRegistry.cc+23-11.2 -> 1.3
+151-32
7 modified files
Updates for logging

slic/include
LogLevel.hh 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- LogLevel.hh	13 Oct 2005 01:28:03 -0000	1.4
+++ LogLevel.hh	18 Oct 2005 17:42:02 -0000	1.5
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/LogLevel.hh,v 1.4 2005/10/13 01:28:03 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/LogLevel.hh,v 1.5 2005/10/18 17:42:02 jeremy Exp $
 #ifndef slic_LogLevel_hh
 #define slic_LogLevel_hh 1
 
@@ -52,7 +52,7 @@
       return m_name;
     }
 
-    bool operator<=(LogLevel& right) const
+    bool operator<=(const LogLevel& right) const
     {
       return m_level <= right.m_level;
     }

slic/include
Logger.hh 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- Logger.hh	13 Oct 2005 01:28:04 -0000	1.4
+++ Logger.hh	18 Oct 2005 17:42:02 -0000	1.5
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/Logger.hh,v 1.4 2005/10/13 01:28:04 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/Logger.hh,v 1.5 2005/10/18 17:42:02 jeremy Exp $
 #ifndef slic_Logger_hh
 #define slic_Logger_hh
 
@@ -17,7 +17,12 @@
    * @brief A simple class for printing log messages to an ostream.
    */
   class Logger
+  //: public std::ostream
   {
+
+  public:
+    typedef std::map<std::string, Logger*> LoggerMap;
+
   public:
     Logger(const std::string& name,
 	   const LogLevel& level = LogLevel::DEFAULT,
@@ -25,26 +30,82 @@
 
   public:
 
-    void log(const LogLevel&, const char*);
-    void log(const LogLevel&, const std::string&);
-    void log(const char*);
-    void log(const std::string&);
+    // FIXME: Needs streamer handlers, too, for printing/converting variable values.
+    //
+    //        e.g.  fatal() << "foo " << i << ENDMSG;
+    //
+    // see "Standard C++ IOPStreams and Locales"
+//     friend std::ostream& operator<<(std::ostream& os, Logger& logger)
+//     {
+//       std::cout << "Logger <<" << std::endl;
+//       (*logger.m_os) << os;
+//       return (*logger.m_os);
+//     }
+
+//     std::ostream& streamref()
+//     {
+//         return *m_os;
+//     }
+
+    /* Generic logging function. */
+    void log(const LogLevel&, const char*) const;
+    void log(const LogLevel&, const std::string&) const;
+
+    /* Log at the level of this Logger. */
+    void log(const char*) const;
+    void log(const std::string&) const;
+
+    /* Utility functions for logging at a given level. */
+    void fatal(const char*) const;
+    void error(const char*) const;
+    void warn(const char*) const;
+    void debug(const char*) const;
+    void okay(const char*) const;
+    void verbose(const char*) const;
 
     const std::string& name()
     {
       return m_name;
     }
 
+    const LogLevel& level()
+    {
+      return m_level;
+    }
+
     static Logger* getLogger(const std::string& filename);
 
     static void registerLogger(Logger* logger);
 
+    void deregisterLogger(Logger* logger)
+    {
+      deregisterLogger(logger->name());
+    }
+
+    // FIXME: Does this actually work???
+    void deregisterLogger(const std::string& name)
+    {
+      Logger* l = getLogger(name);
+      if ( l ) {
+	LoggerMap::iterator it;
+	for ( it = m_logs.begin();
+	      it != m_logs.end();
+	      it++) {
+	  if ( it->second == l ) {
+	    break;
+	  }
+	}
+	m_logs.erase(it, it);
+      }
+    }
+
   private:
     std::string m_name;
     LogLevel m_level;
     std::ostream* m_os;
     static std::map<std::string, Logger*> m_logs;
   };
+
 };
 
 #endif

slic/include
Module.hh 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- Module.hh	13 Oct 2005 01:29:05 -0000	1.4
+++ Module.hh	18 Oct 2005 17:42:02 -0000	1.5
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/Module.hh,v 1.4 2005/10/13 01:29:05 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/Module.hh,v 1.5 2005/10/18 17:42:02 jeremy Exp $
 #ifndef slic_Module_hh
 #define slic_Module_hh 1
 
@@ -49,9 +49,9 @@
     virtual void reset() {}
     virtual void cleanup() {}
 
-    Logger* logger() const
+    Logger& logger() const
     {
-      return m_logger;
+      return *m_logger;
     }
 
   public:

slic/include
ModuleRegistry.hh 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- ModuleRegistry.hh	16 Sep 2005 23:22:46 -0000	1.2
+++ ModuleRegistry.hh	18 Oct 2005 17:42:02 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/include/ModuleRegistry.hh,v 1.2 2005/09/16 23:22:46 jeremy Exp $
+// $Header: /cvs/lcd/slic/include/ModuleRegistry.hh,v 1.3 2005/10/18 17:42:02 jeremy Exp $
 
 // std
 #include <map>
@@ -13,6 +13,7 @@
    * @class ModuleRegistry
    * @brief A central store for classes inheriting from Module.
    */
+  // FIXME: Combine this with Module for increased encapsulation.
   class ModuleRegistry
   {
   public:
@@ -30,9 +31,8 @@
     void registerModule(Module*);
     Module* findModule(const std::string&);
 
-    const ModuleMap& getModuleMap() const {
-      return m_modules;
-    }
+    void deregisterModule(Module* module);
+    void deregisterModule(const std::string& name);
 
     std::ostream& print(std::ostream& os) const;
 

slic/src
Logger.cc 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- Logger.cc	13 Oct 2005 01:28:04 -0000	1.4
+++ Logger.cc	18 Oct 2005 17:42:03 -0000	1.5
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/Logger.cc,v 1.4 2005/10/13 01:28:04 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/Logger.cc,v 1.5 2005/10/18 17:42:03 jeremy Exp $
 #include "Logger.hh"
 
 // slic
@@ -17,19 +17,20 @@
   Logger::Logger(const std::string& name,
 		 const LogLevel& level,
 		 std::ostream* os)
-    : m_name(name),
-      m_level(level),
-      m_os(os)
+    :
+    //std::ostream(os->rdbuf()),
+    m_name(name),
+    m_level(level),
+    //,
+    m_os(os)
   {
-    if ( os == 0 ) {
-      os = &std::cout;
-    }
-
     registerLogger(this);
   }
 
-  void Logger::log(const LogLevel& level, const char* mesg)
+  void Logger::log(const LogLevel& level, const char* mesg) const
   {
+    std::cout << "Logger::log" << std::endl;
+
     if ( level <= m_level ) {
 
       /* Print log level. */
@@ -52,19 +53,49 @@
     }
   }
 
-  void Logger::log(const LogLevel& level, const std::string& mesg)
+  void Logger::log(const char* mesg) const
+  {
+    log( m_level, mesg );
+  }
+
+  void Logger::log(const LogLevel& level, const std::string& mesg) const
   {
     log( level, mesg.c_str() );
   }
 
-  void Logger::log(const char* mesg)
+  void Logger::log(const std::string& mesg) const
   {
-    log( m_level, mesg );
+    log( m_level, mesg.c_str() );
   }
 
-  void Logger::log(const std::string& mesg)
+  void Logger::fatal(const char* mesg) const
   {
-    log( m_level, mesg );
+    log( LogLevel::FATAL, mesg );
+  }
+
+  void Logger::error(const char* mesg) const
+  {
+    log( LogLevel::ERROR, mesg );
+  }
+
+  void Logger::warn(const char* mesg) const
+  {
+    log( LogLevel::WARN, mesg );
+  }
+
+  void Logger::debug(const char* mesg) const
+  {
+    log( LogLevel::DEBUG, mesg );
+  }
+
+  void Logger::okay(const char* mesg) const
+  {
+    log( LogLevel::OKAY, mesg );
+  }
+
+  void Logger::verbose(const char* mesg) const
+  {
+    log( LogLevel::VERBOSE, mesg );
   }
 
   Logger* Logger::getLogger(const std::string& filename)

slic/src
Module.cc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- Module.cc	13 Oct 2005 01:29:06 -0000	1.2
+++ Module.cc	18 Oct 2005 17:42:03 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/Module.cc,v 1.2 2005/10/13 01:29:06 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/Module.cc,v 1.3 2005/10/18 17:42:03 jeremy Exp $
 #include "Module.hh"
 
 // slic
@@ -20,9 +20,14 @@
     /*
      * Print initialization message to the log.
      */
-    //    logger()->log( LogLevel::OKAY, "Created Module " + getName() );
+//    logger().log(LogLevel::OKAY, "Created Module " + getName() );
+
+    //    logger() << "foo" << "bar" << "baz" << std::endl;
   }
 
   Module::~Module()
-  {}
+  {
+    delete m_logger;
+    ModuleRegistry::instance()->deregisterModule(this);
+  }
 }

slic/src
ModuleRegistry.cc 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- ModuleRegistry.cc	19 Sep 2005 17:34:12 -0000	1.2
+++ ModuleRegistry.cc	18 Oct 2005 17:42:03 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/slic/src/ModuleRegistry.cc,v 1.2 2005/09/19 17:34:12 jeremy Exp $
+// $Header: /cvs/lcd/slic/src/ModuleRegistry.cc,v 1.3 2005/10/18 17:42:03 jeremy Exp $
 #include "ModuleRegistry.hh"
 
 // slic
@@ -42,6 +42,28 @@
     }
   }
 
+  void ModuleRegistry::deregisterModule(Module* module)
+  {
+    deregisterModule(module->getName());
+  }
+
+  // FIXME: Does this actually work???
+  void ModuleRegistry::deregisterModule(const std::string& name)
+  {
+    Module* m = findModule(name);
+    if ( m ) {
+      ModuleMap::iterator it;
+      for ( it = m_modules.begin();
+	    it != m_modules.end();
+	    it++) {
+	if ( it->second == m ) {
+	  break;
+	}
+      }
+      m_modules.erase(it, it);
+    }
+  }
+
   std::ostream& ModuleRegistry::print(std::ostream& os) const
   {
     std::cout << endl;
CVSspam 0.2.8