BelosOutputManager.hpp

Go to the documentation of this file.
00001 // @HEADER
00002 // ***********************************************************************
00003 //
00004 //                 Belos: Block Linear Solvers Package
00005 //                 Copyright (2004) Sandia Corporation
00006 //
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 //
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00025 //
00026 // ***********************************************************************
00027 // @HEADER
00028 
00029 #ifndef BELOS_OUTPUT_MANAGER_HPP
00030 #define BELOS_OUTPUT_MANAGER_HPP
00031 
00036 #include "BelosConfigDefs.hpp"
00037 #include "BelosTypes.hpp"
00038 
00051 namespace Belos {
00052   
00053   template <class ScalarType>
00054   class OutputManager {
00055     
00056   public:
00057     
00059 
00060     
00062     OutputManager();
00063     
00065     OutputManager( int myID, int vbLevel = Belos::Errors, int printID = 0, const Teuchos::RefCountPtr<ostream> &os = Teuchos::rcp(&std::cout,false) );
00066     
00068     virtual ~OutputManager() {};
00070     
00072 
00073     
00075     void SetOStream( const Teuchos::RefCountPtr<ostream> &os ) { myOS_ = os; };
00076     
00078     void SetVerbosity( int vbLevel ) { vbLevel_ = vbLevel; }; 
00079     
00081     
00083 
00084     
00086     Teuchos::RefCountPtr<ostream> GetOStream() { return myOS_; };
00087     
00089     
00091 
00092     
00094 
00097     bool isVerbosity( MsgType type ) const { return (( type == Belos::Errors ) || ( vbLevel_ & type )); }; 
00098     
00100 
00103     bool isVerbosityAndPrint( MsgType type ) const { return ( iPrint_ && isVerbosity( type )); }; 
00104     
00106     bool doPrint( void ) const { return (iPrint_); };
00107     
00109     
00110   private:
00111     
00113 
00114     
00116     OutputManager( const OutputManager<ScalarType>& OM );
00117     
00119     OutputManager<ScalarType>& operator=( const OutputManager<ScalarType>& OM );
00120     
00122     
00123     int myID_, printID_;
00124     int vbLevel_;
00125     bool iPrint_;
00126     Teuchos::RefCountPtr<ostream> myOS_;  
00127   };
00128   
00129   template<class ScalarType>
00130   OutputManager<ScalarType>::OutputManager() :
00131     myID_(0),
00132     printID_(0),
00133     vbLevel_(0),
00134     iPrint_(true),
00135     myOS_(std::cout)
00136   {
00137   }
00138   
00139   template<class ScalarType>
00140   OutputManager<ScalarType>::OutputManager( int myID, int vbLevel, int printID, const Teuchos::RefCountPtr<ostream> &os ) :
00141     myID_(myID),
00142     printID_(printID),
00143     vbLevel_(vbLevel),
00144     iPrint_(myID == printID),
00145     myOS_(os)
00146   {
00147   }
00148   
00149 } // end Belos namespace
00150 
00151 #endif
00152 
00153 // end of file BelosOutputManager.hpp

Generated on Thu Sep 18 12:30:12 2008 for Belos by doxygen 1.3.9.1