SLIC  6.1.1
Simulation for the Linear Collider (SLIC) - Geant4 simulation application
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
LogManager Class Reference

Manages LogStreams and their associated LogMessenger objects. More...

#include <LogManager.hh>

Inheritance diagram for LogManager:
Singleton< LogManager >

Public Member Functions

 LogManager ()
 
virtual ~LogManager ()
 
LogStream * createLog (std::string name="NONE", LOG::ELevel level=LOG::okay, ostream *os=&std::cout)
 
LogStream * createLogWithMessenger (std::string name="NONE", LOG::ELevel level=LOG::okay, ostream *os=&std::cout)
 
void removeLog (LogStream *log)
 
- Public Member Functions inherited from Singleton< LogManager >
 Singleton ()
 
 ~Singleton ()
 
void release ()
 

Private Types

typedef std::vector< LogStream * > LogList
 
typedef LogList::iterator LogListIterator
 
typedef std::vector< LogMessenger * > LogMessengerList
 
typedef LogMessengerList::iterator LogMessengerListIterator
 
typedef std::map< LogStream *, LogMessenger * > LogMessengerMap
 
typedef std::map< std::string, LogStream * > LogNameMap
 

Private Member Functions

LogMessenger * createLogMessenger (LogStream *l)
 
LogStream * findLog (const std::string &name)
 
LogListIterator findLog (LogStream *log)
 
LogMessengerListIterator findLogMessenger (LogMessenger *lm)
 
LogMessenger * findLogMessenger (LogStream *s)
 
void removeLogMessenger (LogMessenger *lm)
 

Private Attributes

G4UIdirectory * m_logDir
 
LogMessengerMap m_logMessengerMap
 
LogNameMap m_logNameMap
 
LogList m_logs
 
LogMessengerList m_messengers
 

Friends

class LogStream
 

Additional Inherited Members

- Static Public Member Functions inherited from Singleton< LogManager >
static LogManager * instance ()
 

Detailed Description

Manages LogStreams and their associated LogMessenger objects.

Note
This class "owns" both LogStream and LogMessenger objects, so neither of these classes should be deleted outside of this class.
LogManager and LogStream are both friends of each other.

Definition at line 31 of file LogManager.hh.

Member Typedef Documentation

◆ LogList

typedef std::vector<LogStream*> LogList
private

LogStream vector.

Definition at line 36 of file LogManager.hh.

◆ LogListIterator

typedef LogList::iterator LogListIterator
private

LogStream vector iterator.

Definition at line 39 of file LogManager.hh.

◆ LogMessengerList

typedef std::vector<LogMessenger*> LogMessengerList
private

LogMessenger vector.

Definition at line 42 of file LogManager.hh.

◆ LogMessengerListIterator

typedef LogMessengerList::iterator LogMessengerListIterator
private

LogMessenger vector iterator.

Definition at line 45 of file LogManager.hh.

◆ LogMessengerMap

typedef std::map<LogStream*, LogMessenger*> LogMessengerMap
private

LogMessenger to LogStream map.

Definition at line 51 of file LogManager.hh.

◆ LogNameMap

typedef std::map<std::string, LogStream*> LogNameMap
private

Name to LogStream map.

Definition at line 48 of file LogManager.hh.

Constructor & Destructor Documentation

◆ LogManager()

LogManager ( )
inline

Class constructor.

Definition at line 58 of file LogManager.hh.

References LogManager::m_logDir.

◆ ~LogManager()

virtual ~LogManager ( )
inlinevirtual

Class destructor.

Definition at line 66 of file LogManager.hh.

References LogManager::m_logDir.

Member Function Documentation

◆ createLog()

LogStream* createLog ( std::string  name = "NONE",
LOG::ELevel  level = LOG::okay,
ostream *  os = &std::cout 
)
inline

Create a LogStream.

Parameters
[in]nameThe name of the LogStream.
[in]levelThe log level.
[in]osThe output stream.

Definition at line 78 of file LogManager.hh.

References LOG::level, LogManager::LogStream, LogManager::m_logNameMap, LogManager::m_logs, and LOG::name.

Referenced by LogManager::createLogWithMessenger().

◆ createLogMessenger()

LogMessenger* createLogMessenger ( LogStream *  l)
inlineprivate

Create a LogMessenger attached to the given LogStream.

Parameters
[in]lThe LogStream.
Returns
The new LogMessenger assigned to the LogStream.

Definition at line 129 of file LogManager.hh.

References LogManager::findLogMessenger(), LogManager::m_logMessengerMap, and LogManager::m_messengers.

Referenced by LogManager::createLogWithMessenger().

◆ createLogWithMessenger()

LogStream* createLogWithMessenger ( std::string  name = "NONE",
LOG::ELevel  level = LOG::okay,
ostream *  os = &std::cout 
)
inline

Create a LogStream and associated LogMessenger.

Parameters
[in]nameThe name of the LogStream.
[in]levelThe log level.
[in]osThe output stream.

Definition at line 91 of file LogManager.hh.

References LogManager::createLog(), LogManager::createLogMessenger(), LOG::level, and LOG::name.

◆ findLog() [1/2]

LogStream* findLog ( const std::string &  name)
inlineprivate

Find a LogStream pointer by name.

Parameters
[in]nameThe name of the LogStream.

Definition at line 161 of file LogManager.hh.

References LogManager::m_logNameMap, and LOG::name.

Referenced by LogManager::removeLog().

◆ findLog() [2/2]

LogListIterator findLog ( LogStream *  log)
inlineprivate

Get position of LogStream by its pointer.

Parameters
[in]logThe LogStream.
Returns
An iterator pointing to the LogStream.

Definition at line 170 of file LogManager.hh.

References LogManager::m_logs.

◆ findLogMessenger() [1/2]

LogMessengerListIterator findLogMessenger ( LogMessenger *  lm)
inlineprivate

Find position of LogMessenger by its pointer.

Parameters
[in]lmThe LogMessenger.
Returns
An iterator pointing to the LogMessenger.

Definition at line 181 of file LogManager.hh.

References LogManager::m_messengers.

Referenced by LogManager::createLogMessenger(), LogManager::removeLog(), and LogManager::removeLogMessenger().

◆ findLogMessenger() [2/2]

LogMessenger* findLogMessenger ( LogStream *  s)
inlineprivate

Find a LogMessenger by its associated LogStream.

Parameters
[in]sThe LogStream.
Returns
The LogMessenger or null if not found.

Definition at line 192 of file LogManager.hh.

References LogManager::m_logMessengerMap.

◆ removeLog()

void removeLog ( LogStream *  log)
inline

Remove a LogStream and also its LogMessenger, if it exists.

Parameters
[in]logThe LogStream to remove.

Definition at line 101 of file LogManager.hh.

References LogManager::findLog(), LogManager::findLogMessenger(), LogManager::m_logs, and LogManager::removeLogMessenger().

◆ removeLogMessenger()

void removeLogMessenger ( LogMessenger *  lm)
inlineprivate

Remove a LogMessenger.

Parameters
lmThe LogMessenger to remove.

Definition at line 147 of file LogManager.hh.

References LogManager::findLogMessenger(), and LogManager::m_messengers.

Referenced by LogManager::removeLog().

Friends And Related Function Documentation

◆ LogStream

friend class LogStream
friend

Definition at line 196 of file LogManager.hh.

Referenced by LogManager::createLog().

Member Data Documentation

◆ m_logDir

G4UIdirectory* m_logDir
private

Definition at line 204 of file LogManager.hh.

Referenced by LogManager::LogManager(), and LogManager::~LogManager().

◆ m_logMessengerMap

LogMessengerMap m_logMessengerMap
private

Definition at line 202 of file LogManager.hh.

Referenced by LogManager::createLogMessenger(), and LogManager::findLogMessenger().

◆ m_logNameMap

LogNameMap m_logNameMap
private

Definition at line 201 of file LogManager.hh.

Referenced by LogManager::createLog(), and LogManager::findLog().

◆ m_logs

LogList m_logs
private

◆ m_messengers

LogMessengerList m_messengers
private

The documentation for this class was generated from the following file: