 // -*- C++ -*-


 /*! \class    tstream
  *  \brief    Trace & indentation enabled stream.
  *
  *            Traced \e stream are a derived class of std::ostream that provides
  *            integrated indentation and selective printing according to a
  *            verbosity level. Only messages comprised between \c minLevel and
  *            \c maxLevel are to be printed:
               \f[
                  minLevel \leq level < maxLevel
               \f]
  *
  *            The cdebug instance of this class, in conjunction with Hurricane::DebugSession
  *            is provided to create tailored program traces. cdebug is a global
  *            variable which is put in the root namespace (not the Hurricane namespace).
  */

//! \function  int  tstream::getMinLevel () const;
//! \Return    The current mimimum level for the messages to be printeds  
//!            (equal or superior).

//! \function  int  tstream::getMaxLevel () const;
//! \Return    The current maximum level for the messages to be printeds
//!            (strictly inferior).

//! \function  int  tstream::setMinLevel ( int level );
//!            Sets the minimum level, returns the \e previous value of the level.

//! \function  int  tstream::setMaxLevel ( int level );
//!            Sets the maximum level, returns the \e previous value of the level.

//! \function  int  tstream::getLevel () const;
//! \Return    The level of the latest message that was submitted to the stream.
//!            It is automatically set up after any call to tstream::log() or
//!            tstream::tabw().

//! \function  int  tstream::setLevel ( int level );
//!            Sets the current level, returns the \e previous value of the level.
//!            This is the level of the latest message that was submitted to the
//!            stream.

//! \function  bool  tstream::enabled () const;
//! \Return    \true if the currently memorised level is inside the current valid range.

//! \function  bool  tstream::enabled ( int level ) const;
//! \Return    \true if this level is inside the current valid range.

//! \function  tstream& tstream::log ( int level, int count=0 ) const;
//! \param     level   The level into which to print.
//! \param     count   Increment/decrement the number of tabulations to print
//!                    at the beginning of a line.
//! \return    A reference to the stream so the operator \c << can be used. 
//!
//!            Send a message into the stream, that will be displayed if \c level
//!            is enabled. The number of tabulations printed at the beginning of
//!            the line will be changed \e after this message has been printed
//!            (or discarted).

//! \function  tstream& tstream::tabw ( int level, int count=0 ) const;
//! \param     level   The level into which to print.
//! \param     count   Increment/decrement the number of tabulations to print
//!                    at the beginning of a line.
//! \return    A reference to the stream.
//!
//!            This function is dedicated to change the indentation level, but
//!            not print something on the stream (event if it returns a reference
//!            to it).


 namespace Hurricane {

 /*! \namespace    Hurricane
  *
  *  \brief        Contains Almost Everything.
  *
  *                Almost everything is inside the Hurricane namespace.
  */


 //! \addtogroup   Generalities
 //  \{

 /*! \function     string  demangle ( const char* symbol );
  *                Translate (demangle) a symbol from C++ (\c gnu-v3) internal format
  *                into a human readable \string.
  */

 /*! \function     string  demangle ( const type_info& info );
  *  \param        info  a type_info structure as returned by \c typeid().
  *
  *                Translate (demangle) a symbol from C++ (\c gnu-v3) internal format
  *                into a human readable \string.
  */

 // \}

 }
