7 modified files
slic/include
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
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
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
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
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
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
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