Teuchos::Describable Class Reference
[Teuchos Outputting Utilities]

Base class for all objects that can describe themselves and their current state. More...

#include <Teuchos_Describable.hpp>

Inheritance diagram for Teuchos::Describable:

Teuchos::Comm< Ordinal > Teuchos::ConstHandle< PointerType > Teuchos::MpiReductionOpBase Teuchos::Polynomial< CoeffT > Teuchos::ReferenceTypeReductionOp< Ordinal, T > Teuchos::ValueTypeReductionOp< Ordinal, T > Teuchos::ValueTypeReductionOp< Ordinal, char > Teuchos::ValueTypeReductionOp< Ordinal, Packet > List of all members.

Public Member Functions

virtual ~Describable ()
Public virtual member functions
virtual std::string description () const
 Return a simple description (usually just one line) of this object.
virtual void describe (FancyOStream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
 Print the object with some verbosity level to an FancyOStream object.

Static Public Attributes

const EVerbosityLevel verbLevel_default = VERB_DEFAULT
 Default value for verLevel in description().

Related Functions

(Note that these are not member functions.)

DescribableStreamManipulatorState describe (const Describable &describable, const EVerbosityLevel verbLevel=Describable::verbLevel_default)
 Describable output stream maniuplator.
std::ostream & operator<< (std::ostream &os, const DescribableStreamManipulatorState &d)
 Output stream operator for Describable manipulator.

Detailed Description

Base class for all objects that can describe themselves and their current state.

This base class is designed to be a minimally invasive approach for allowing subclasses to optionally provide detailed debug-style information about their current state. This interface has just two virtual member functions, describe(void) and description(), which both have default implementations. The shorter version of describe(void) (which takes no arguments and returns an std::string object) is meant for very short descriptions while the longer version of description() takes and returns a FancyOStream object and is designed for more detailed formated output.

Since both of these description() functions have reasonable default implementations, when a subclass inherits from this base class, no virtual functions need to be overridden to start with. However, when debugging time comes, one or both of these functions should be overridden to provide more useful information.

ToDo: Include an example/testing function for a few different use cases to demonstrate how to use this interface properly.

Definition at line 62 of file Teuchos_Describable.hpp.

Constructor & Destructor Documentation

virtual Teuchos::Describable::~Describable  )  [inline, virtual]

Definition at line 69 of file Teuchos_Describable.hpp.

Member Function Documentation

std::string Teuchos::Describable::description  )  const [virtual]

Return a simple description (usually just one line) of this object.

The default implementation just returns typeid(*this).name() but a subclass can modify this if needed. Note that some compilers return a mangled name from std::type_info::name() (e.g. g++ version 3.4.x and before) that is hard for non-g++ developers to read. Therefore, it is usually beneficial to override this function to build a more human-readable name for a subclass, especially if templating is used.

Reimplemented in Teuchos::MpiComm< Ordinal >, and Teuchos::SerialComm< Ordinal >.

Definition at line 35 of file Teuchos_Describable.cpp.

void Teuchos::Describable::describe FancyOStream out,
const EVerbosityLevel  verbLevel = verbLevel_default
const [virtual]

Print the object with some verbosity level to an FancyOStream object.

out [in] The FancyOStream object that output is sent to.
verbLevel [in] Determines the level of verbosity for which the the object will be printed. If verbLevel==VERB_DEFAULT (which is the default value), then the verbosity level will be determined by the *this object (i.e. perhaps through the ObjectWithVerbosity interface). It is up to *this how to interpret the level represented by verbLevel. The default value is VERB_DEFAULT.
In order for this function to work effectively for independently developed classes, a general consensus needs be reached as to what the various verbosity levels represented in verbLevel mean in relation to the amount of output produced.

A default implementation of this function is provided that simply performs:

   return out << this->description() << std::endl; 

A subclass should override this function to provide more interesting and more useful information about the object.

Definition at line 40 of file Teuchos_Describable.cpp.

Friends And Related Function Documentation

DescribableStreamManipulatorState describe const Describable describable,
const EVerbosityLevel  verbLevel = Describable::verbLevel_default

Describable output stream maniuplator.

This simple function allows you to insert ouptut from Describable::describe() right in the middle of a chain of insertion operations. For example, you can write:

  void someFunc( const Teuchos::Describable &obj )
    std::cout << "The object is described as " << describe(obj,Teuchos::VERB_MEDIUM);

Definition at line 156 of file Teuchos_Describable.hpp.

std::ostream & operator<< std::ostream &  os,
const DescribableStreamManipulatorState &  d

Output stream operator for Describable manipulator.

To call this function use something like:

  void someFunc( const Teuchos::Describable &obj )
    std::cout << "The object is described as " << describe(obj,Teuchos::VERB_MEDIUM);

Note: The input std::ostream is casted to a FancyOStream object before calling Describable::describe() on the underlying Describable object. There is no way around this since this function must be written in terms of std::ostream rather than FancyOStream if one is to write compound output statements involving primitive data types.

Definition at line 189 of file Teuchos_Describable.hpp.

Member Data Documentation

const EVerbosityLevel Teuchos::Describable::verbLevel_default = VERB_DEFAULT [static]

Default value for verLevel in description().

Definition at line 33 of file Teuchos_Describable.cpp.

The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:30:32 2008 for Teuchos - Trilinos Tools Package by doxygen