prefixedoutstream.hpp
Go to the documentation of this file.
1 
13 #ifndef MLPACK_CORE_UTIL_PREFIXEDOUTSTREAM_HPP
14 #define MLPACK_CORE_UTIL_PREFIXEDOUTSTREAM_HPP
15 
16 #include <mlpack/prereqs.hpp>
17 
18 namespace mlpack {
19 namespace util {
20 
47 {
48  public:
61  const char* prefix,
62  bool ignoreInput = false,
63  bool fatal = false,
64  bool backtrace = true) :
65  destination(destination),
68  prefix(prefix),
69  // We want the first call to operator<< to prefix the prefix so we set
70  // carriageReturned to true.
71  carriageReturned(true),
72  fatal(fatal)
73  { /* nothing to do */ }
74 
76  PrefixedOutStream& operator<<(bool val);
78  PrefixedOutStream& operator<<(short val);
80  PrefixedOutStream& operator<<(unsigned short val);
82  PrefixedOutStream& operator<<(int val);
84  PrefixedOutStream& operator<<(unsigned int val);
86  PrefixedOutStream& operator<<(long val);
88  PrefixedOutStream& operator<<(unsigned long val);
90  PrefixedOutStream& operator<<(float val);
92  PrefixedOutStream& operator<<(double val);
94  PrefixedOutStream& operator<<(long double val);
96  PrefixedOutStream& operator<<(void* val);
98  PrefixedOutStream& operator<<(const char* str);
100  PrefixedOutStream& operator<<(std::string& str);
102  PrefixedOutStream& operator<<(std::streambuf* sb);
104  PrefixedOutStream& operator<<(std::ostream& (*pf)(std::ostream&));
106  PrefixedOutStream& operator<<(std::ios& (*pf)(std::ios&));
108  PrefixedOutStream& operator<<(std::ios_base& (*pf)(std::ios_base&));
109 
111  template<typename T>
112  PrefixedOutStream& operator<<(const T& s);
113 
116  std::ostream& destination;
117 
120 
123  bool backtrace;
124 
125  private:
136  template<typename T>
137  typename std::enable_if<!arma::is_arma_type<T>::value>::type
138  BaseLogic(const T& val);
139 
150  template<typename T>
151  typename std::enable_if<arma::is_arma_type<T>::value>::type
152  BaseLogic(const T& val);
153 
157  inline void PrefixIfNeeded();
158 
160  std::string prefix;
161 
164  bool carriageReturned;
165 
168  bool fatal;
169 };
170 
171 } // namespace util
172 } // namespace mlpack
173 
174 // Template definitions.
175 #include "prefixedoutstream_impl.hpp"
176 
177 #endif
bool backtrace
If true, on a fatal error, a backtrace will be printed if HAS_BFD_DL is defined.
Linear algebra utility functions, generally performed on matrices or vectors.
The core includes that mlpack expects; standard C++ includes and Armadillo.
PrefixedOutStream & operator<<(bool val)
Write a bool to the stream.
bool ignoreInput
Discards input, prints nothing if true.
std::ostream & destination
The output stream that all data is to be sent to; example: MLPACK_COUT_STREAM.
PrefixedOutStream(std::ostream &destination, const char *prefix, bool ignoreInput=false, bool fatal=false, bool backtrace=true)
Set up the PrefixedOutStream.
Allows us to output to an ostream with a prefix at the beginning of each line, in the same way we wou...