OFConsole Class Reference

Singleton class which provides thread-safe access to the standard console output and error streams. More...

List of all members.

Public Member Functions

virtual ~OFConsole ()
 destructor.
ostream & lockCout ()
 acquires a lock on the cout stream and returns a reference to the stream.
void unlockCout ()
 releases the lock on the cout stream.
ostream & getCout ()
 returns a reference to the current cout stream.
ostream * setCout (ostream *newCout=NULL)
 exchanges the cout stream object.
ostream & lockCerr ()
 acquires a lock on the cerr stream and returns a reference to the stream.
ostream & getCerr ()
 returns a reference to the current cerr stream.
void unlockCerr ()
 releases the lock on the cerr stream.
ostream * setCerr (ostream *newCerr=NULL)
 exchanges the cerr stream object.
void join ()
 combines the cerr and cout streams.
void split ()
 splits combined cerr and cout streams.
OFBool isJoined ()
 Checks whether cout and cerr are currently combined.

Static Public Member Functions

static OFConsoleinstance ()
 returns the singleton instance of this class.

Private Member Functions

 OFConsole ()
 default constructor.
 OFConsole (const OFConsole &arg)
 private undefined copy constructor
OFConsoleoperator= (const OFConsole &arg)
 private undefined assignment operator

Private Attributes

ostream * currentCout
 pointer to current cout stream, never NULL
ostream * currentCerr
 pointer to current cerr stream, never NULL
int joined
 true if streams are combined, false otherwise

Friends

class OFConsoleDummyFriend


Detailed Description

Singleton class which provides thread-safe access to the standard console output and error streams.

Allows multiple threads to concurrently create output even if that output is redirected to file or memory. Protection is implemented if the module is compiled with -D_REENTRANT and is based on Mutexes. Use of the singleton prior to start of main (i.e. from global constructors) is allowed, but any use after the end of main is undefined.

Definition at line 83 of file ofconsol.h.


Constructor & Destructor Documentation

OFConsole::OFConsole  )  [private]
 

default constructor.

After construction, the cout methods refer to the standard output stream and the cerr methods refer to the standard error stream. If compiled with -DDCMTK_GUI, string streams named COUT and CERR are used instead.


Member Function Documentation

ostream& OFConsole::getCerr  )  [inline]
 

returns a reference to the current cerr stream.

This method neither locks nor unlocks the stream - the called must ensure that the stream is locked and unlocked appropriately.

Returns:
reference to cerr stream

Definition at line 159 of file ofconsol.h.

References currentCerr, currentCout, and joined.

ostream& OFConsole::getCout  )  [inline]
 

returns a reference to the current cout stream.

This method neither locks nor unlocks the stream - the called must ensure that the stream is locked and unlocked appropriately.

Returns:
reference to cout stream

Definition at line 117 of file ofconsol.h.

References currentCout.

static OFConsole& OFConsole::instance  )  [static]
 

returns the singleton instance of this class.

May be called before main() but not after end of main

OFBool OFConsole::isJoined  ) 
 

Checks whether cout and cerr are currently combined.

This method acquires its own locks. Neither cout nor cerr may be locked by the calling thread, otherwise a deadlock may occur.

Returns:
OFTrue if streams are combined, OFFalse otherwise.

void OFConsole::join  ) 
 

combines the cerr and cout streams.

After a call to this method, both cout and cerr related methods lock, unlock and return the cout stream. This method acquires its own locks. Neither cout nor cerr may be locked by the calling thread, otherwise a deadlock may occur.

ostream& OFConsole::lockCerr  )  [inline]
 

acquires a lock on the cerr stream and returns a reference to the stream.

Returns:
reference to cerr stream

Definition at line 139 of file ofconsol.h.

References currentCerr, currentCout, and joined.

ostream& OFConsole::lockCout  )  [inline]
 

acquires a lock on the cout stream and returns a reference to the stream.

Returns:
reference to cout stream

Definition at line 95 of file ofconsol.h.

References currentCout.

ostream* OFConsole::setCerr ostream *  newCerr = NULL  ) 
 

exchanges the cerr stream object.

This method acquires its own lock. Cerr must not be locked by the calling thread, otherwise a deadlock may occur. The caller must ensure that the same stream object is not set both as cout and cerr because this might result in a conflict if one thread locks and uses cout, and another one locks and uses cerr. Use the join() method instead, see below.

Parameters:
newCerr new cerr stream, default: restore the stream that was active upon creation of the console object.
Returns:
pointer to replaced cerr stream.

ostream* OFConsole::setCout ostream *  newCout = NULL  ) 
 

exchanges the cout stream object.

This method acquires its own lock. Cout must not be locked by the calling thread, otherwise a deadlock may occur. The caller must ensure that the same stream object is not set both as cout and cerr because this might result in a conflict if one thread locks and uses cout, and another one locks and uses cerr. Use the join() method instead, see below.

Parameters:
newCout new cout stream, default: restore the stream that was active upon creation of the console object.
Returns:
pointer to replaced cout stream.

void OFConsole::split  ) 
 

splits combined cerr and cout streams.

After a call to this method, cout and cerr related methods again lock, unlock and return different cout and cerr objects. This method acquires its own locks. Neither cout nor cerr may be locked by the calling thread, otherwise a deadlock may occur.


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


Generated on 20 Dec 2005 for OFFIS DCMTK Version 3.5.4 by Doxygen 1.4.5