Bridge++  Ver. 1.3.x
bridgeIO.h
Go to the documentation of this file.
1 
14 #ifndef BRIDGEIO_INCLUDED
15 #define BRIDGEIO_INCLUDED
16 
17 #include <iostream>
18 #include <fstream>
19 #include <cstdarg>
20 
21 //#include "commonParameters.h"
22 #include "communicator.h"
23 
25 
38 namespace Bridge {
40  {
45  };
46 
47  class BridgeIO {
48  public:
49  static const std::string class_name;
50 
51  public:
52  // Constructor
53  BridgeIO() : os_(0), ildg_os_(0), is_open_(false) {}
54  ~BridgeIO() {}
55 
56  // Constructor from a stream
57  void init(std::ostream& os)
58  {
59  os_ = &os;
60  is_open_ = true;
61  }
62 
63  void ildg_init(std::ostream& os)
64  {
65  ildg_os_ = &os;
66  }
67 
68  // verbose output for c style
69  // default verbose level, node 0
70  void crucial(const char *format, ...);
71  void general(const char *format, ...);
72  void detailed(const char *format, ...);
73  void paranoiac(const char *format, ...);
74 
75  // input verbose level, node 0
76  void crucial(VerboseLevel vl, const char *format, ...);
77  void general(VerboseLevel vl, const char *format, ...);
78  void detailed(VerboseLevel vl, const char *format, ...);
79  void paranoiac(VerboseLevel vl, const char *format, ...);
80 
81  // input verbose level, input node
82  void crucial(VerboseLevel vl, int node, const char *format, ...);
83  void general(VerboseLevel vl, int node, const char *format, ...);
84  void detailed(VerboseLevel vl, int node, const char *format, ...);
85  void paranoiac(VerboseLevel vl, int node, const char *format, ...);
86 
87  void ildg(const char *format, ...);
88 
89  std::ostream& getStream() { return *os_; }
90  std::ostream& getILDGStream() { return *ildg_os_; }
91 
92  // Is the stream open?
93  bool isOpen() { return is_open_; }
94 
95  static VerboseLevel set_verbose_level(const std::string& str);
96 
97  private:
98  // main method for verbose output for c style
99  inline void print(VerboseLevel level, VerboseLevel write_level,
100  int node, const char *format, va_list& arg)
101  {
102  if ((write_level <= level) && (Communicator::nodeid() == node)) {
103  //*os_ << Communicator::nodeid() << " " << node << " ";
104  vsprintf(buff_, format, arg);
105  *os_ << buff_;
106  }
107  }
108 
109  // Hide copy constructor and =
110  BridgeIO(const BridgeIO&);
111  BridgeIO& operator=(const BridgeIO&);
112 
113  private:
114  std::ostream *os_;
115  std::ostream *ildg_os_;
116  char buff_[1024];
117  bool is_open_;
118  };
119 
120  extern BridgeIO vout;
121 }
122 #endif //BRIDGE_IO_INCLUDED
BridgeIO vout
Definition: bridgeIO.cpp:278
void detailed(const char *format,...)
Definition: bridgeIO.cpp:82
void ildg_init(std::ostream &os)
Definition: bridgeIO.h:63
void general(const char *format,...)
Definition: bridgeIO.cpp:65
std::ostream * ildg_os_
Definition: bridgeIO.h:115
void ildg(const char *format,...)
Definition: bridgeIO.cpp:254
void init(std::ostream &os)
Definition: bridgeIO.h:57
void paranoiac(const char *format,...)
Definition: bridgeIO.cpp:99
bool isOpen()
Definition: bridgeIO.h:93
void crucial(const char *format,...)
Definition: bridgeIO.cpp:48
Bridge::VerboseLevel vl
Definition: checker.cpp:18
BridgeIO & operator=(const BridgeIO &)
VerboseLevel
Definition: bridgeIO.h:39
void print(VerboseLevel level, VerboseLevel write_level, int node, const char *format, va_list &arg)
Definition: bridgeIO.h:99
static const std::string class_name
Definition: bridgeIO.h:49
char buff_[1024]
Definition: bridgeIO.h:116
BridgeIO for output under parallel environment with verbose level control.
Definition: bridgeIO.cpp:23
static int nodeid()
alternative name for self().
Definition: communicator.h:92
std::ostream * os_
Definition: bridgeIO.h:114
std::ostream & getILDGStream()
Definition: bridgeIO.h:90
std::ostream & getStream()
Definition: bridgeIO.h:89
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:28