QMCPACK
InfoStream Class Reference

Interface to output streams. More...

+ Collaboration diagram for InfoStream:

Public Member Functions

 InfoStream (std::ostream *output_stream)
 
 InfoStream (const InfoStream &in)=delete
 
InfoStreamoperator= (const InfoStream &in)=delete
 
std::ostream & getStream (const std::string &tag="")
 returns current stream More...
 
void setStream (std::ostream *output_stream)
 
void flush ()
 flush stream buffer More...
 
void pause ()
 Stop output (redirect to a null stream) More...
 
void resume ()
 Continue output on the stream used before pausing. More...
 
bool isActive () const
 check if the stream is active More...
 
void redirectToFile (const std::string &fname)
 Open a file and output to that file. More...
 
void redirectToSameStream (InfoStream &info)
 Copy a stream. More...
 
void shutOff ()
 Permanently turn off the stream. More...
 

Private Member Functions

bool checkCurr () const
 

Private Attributes

std::ostream * currStream
 
std::ostream * outputStream
 
std::ostream nullStream
 
std::unique_ptr< std::ofstream > fileStream
 

Detailed Description

Interface to output streams.

Can redirect output to stdout/stderr, a file, or a null stream.

Definition at line 28 of file InfoStream.h.

Constructor & Destructor Documentation

◆ InfoStream() [1/2]

InfoStream ( std::ostream *  output_stream)

Definition at line 17 of file InfoStream.cpp.

References currStream, nullStream, and outputStream.

18  : currStream(output_stream), outputStream(output_stream), nullStream(nullptr)
19 {
20  if (output_stream == nullptr)
22 }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::ostream * currStream
Definition: InfoStream.h:67

◆ InfoStream() [2/2]

InfoStream ( const InfoStream in)
delete

Member Function Documentation

◆ checkCurr()

bool checkCurr ( ) const
inlineprivate

Definition at line 64 of file InfoStream.h.

References currStream, nullStream, and outputStream.

Referenced by pause(), redirectToFile(), redirectToSameStream(), resume(), setStream(), and shutOff().

64 { return currStream == outputStream || currStream == &nullStream; }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::ostream * currStream
Definition: InfoStream.h:67

◆ flush()

◆ getStream()

std::ostream& getStream ( const std::string &  tag = "")
inline

returns current stream

Definition at line 37 of file InfoStream.h.

References currStream.

Referenced by qmcplusplus::app_debug_stream(), qmcplusplus::app_error(), qmcplusplus::app_log(), qmcplusplus::app_summary(), qmcplusplus::app_warning(), operator<<(), and TEST_CASE().

37 { return *currStream; }
std::ostream * currStream
Definition: InfoStream.h:67

◆ isActive()

bool isActive ( ) const
inline

check if the stream is active

Definition at line 51 of file InfoStream.h.

References currStream, and nullStream.

Referenced by TEST_CASE().

51 { return currStream != &nullStream; }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * currStream
Definition: InfoStream.h:67

◆ operator=()

InfoStream& operator= ( const InfoStream in)
delete

◆ pause()

void pause ( )

Stop output (redirect to a null stream)

Definition at line 41 of file InfoStream.cpp.

References checkCurr(), currStream, and nullStream.

Referenced by OutputManagerClass::pause(), OutputManagerClass::setVerbosity(), and TEST_CASE().

42 {
43  assert(checkCurr());
45 }
std::ostream nullStream
Definition: InfoStream.h:73
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

◆ redirectToFile()

void redirectToFile ( const std::string &  fname)

Open a file and output to that file.

Definition at line 60 of file InfoStream.cpp.

References checkCurr(), currStream, fileStream, nullStream, and outputStream.

Referenced by main(), and TEST_CASE().

61 {
62  assert(checkCurr());
63  fileStream = std::make_unique<std::ofstream>(fname);
64  outputStream = fileStream.get();
65  if (currStream != &nullStream)
67  assert(checkCurr());
68 }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::unique_ptr< std::ofstream > fileStream
Definition: InfoStream.h:76
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

◆ redirectToSameStream()

void redirectToSameStream ( InfoStream info)

Copy a stream.

Definition at line 70 of file InfoStream.cpp.

References checkCurr(), currStream, fileStream, nullStream, and outputStream.

Referenced by main(), and TEST_CASE().

71 {
72  if (this == &info)
73  return;
74  assert(checkCurr());
76  if (currStream != &nullStream)
78  fileStream.reset();
79  assert(checkCurr());
80 }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::unique_ptr< std::ofstream > fileStream
Definition: InfoStream.h:76
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

◆ resume()

void resume ( )

Continue output on the stream used before pausing.

Definition at line 47 of file InfoStream.cpp.

References checkCurr(), currStream, and outputStream.

Referenced by CloneManager::makeClones(), OutputManagerClass::resume(), OutputManagerClass::setVerbosity(), and TEST_CASE().

48 {
49  assert(checkCurr());
51 }
std::ostream * outputStream
Definition: InfoStream.h:70
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

◆ setStream()

void setStream ( std::ostream *  output_stream)

Definition at line 24 of file InfoStream.cpp.

References checkCurr(), currStream, fileStream, nullStream, and outputStream.

Referenced by qmcplusplus::init_string_output().

25 {
26  if (outputStream == output_stream)
27  return;
28  assert(checkCurr());
29  if (output_stream == nullptr)
31  else
32  outputStream = output_stream;
33  if (currStream != &nullStream)
35  fileStream.reset();
36  assert(checkCurr());
37 }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::unique_ptr< std::ofstream > fileStream
Definition: InfoStream.h:76
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

◆ shutOff()

void shutOff ( )

Permanently turn off the stream.

Definition at line 53 of file InfoStream.cpp.

References checkCurr(), currStream, fileStream, nullStream, and outputStream.

Referenced by OutputManagerClass::shutOff(), and TEST_CASE().

54 {
55  assert(checkCurr());
57  fileStream.reset();
58 }
std::ostream nullStream
Definition: InfoStream.h:73
std::ostream * outputStream
Definition: InfoStream.h:70
std::unique_ptr< std::ofstream > fileStream
Definition: InfoStream.h:76
bool checkCurr() const
Definition: InfoStream.h:64
std::ostream * currStream
Definition: InfoStream.h:67

Member Data Documentation

◆ currStream

std::ostream* currStream
private

◆ fileStream

std::unique_ptr<std::ofstream> fileStream
private

Definition at line 76 of file InfoStream.h.

Referenced by redirectToFile(), redirectToSameStream(), setStream(), and shutOff().

◆ nullStream

std::ostream nullStream
private

◆ outputStream

std::ostream* outputStream
private

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