Bridge++  Ver. 2.0.4
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 <string>
20 #include <stack>
21 #include <cstdarg>
23 
25 
44 namespace Bridge {
46  {
51  };
52 
53  class BridgeIO {
54  public:
55  static const std::string class_name;
56 
57  public:
58  // Constructor
59  BridgeIO(const std::string& filename = "stdout");
60  BridgeIO(const std::string& filename, int node);
61  BridgeIO(const std::string& filename, int node, std::ios_base::openmode mode);
62 
63  virtual ~BridgeIO();
64 
65  // set output to file or stream
66  void init(const std::string& filename);
67  void init(const std::string& filename, int node);
68  void init(const std::string& filename, int node, std::ios_base::openmode mode);
69 
70  void init(const std::ostream& os); // for a safe sprintf
71  void init(const std::ostream& os, int node); // for a safe sprintf
72 
73  // pop out current output stream
74  void unset();
75 
76  // verbose output for c style
77  // default verbose level, node 0
78  void crucial(const char *format, ...);
79  void general(const char *format, ...);
80  void detailed(const char *format, ...);
81  void paranoiac(const char *format, ...);
82 
83  // input verbose level, node 0
84  void crucial(VerboseLevel vl, const char *format, ...);
85  void general(VerboseLevel vl, const char *format, ...);
86  void detailed(VerboseLevel vl, const char *format, ...);
87  void paranoiac(VerboseLevel vl, const char *format, ...);
88 
89 
90  // input verbose level, input node
91  void crucial(VerboseLevel vl, int node, const char *format, ...);
92  void general(VerboseLevel vl, int node, const char *format, ...);
93  void detailed(VerboseLevel vl, int node, const char *format, ...);
94  void paranoiac(VerboseLevel vl, int node, const char *format, ...);
95 
96  void increase_indent();
97  void decrease_indent();
98 
99  int indent_level() { return m_indent_level; }
100  void set_indent(const int level);
101 
102  bool isOpen();
103 
104  std::ostream& getStream();
105 
106  //#ifdef ENABLE_ILDG_TAG
107  DEPRECATED
108  void ildg_init(const std::ostream& os) {}
109  DEPRECATED
110  void ildg_init(const std::string& filename) {}
111  DEPRECATED
112  void ildg(const char *format, ...) {}
113 
114  // std::ostream& getILDGStream();
115  //#endif
116 
117  // convert between VerboseLevel and string expression
118  static VerboseLevel set_verbose_level(const std::string& str);
119  static std::string get_verbose_level(const VerboseLevel vl);
120 
121  private:
122 
123  // Hide copy constructor and assignment.
124  BridgeIO(const BridgeIO&);
125  BridgeIO& operator=(const BridgeIO&);
126 
127  // main method for verbose output for c style
128  inline void print(VerboseLevel level, VerboseLevel write_level,
129  int node, const char *format, va_list& arg);
130 
131  // internal methods
132  void push_();
133  void rewind_();
134  void tidyup_();
135 
136  private:
137 
138  // current output target
139  std::ostream *os_;
140 
141  // previous output targets
142  //std::stack<std::ostream *> stack_;
143 
144  // workarea
145  char buff_[1024];
146 
147  static int m_indent_level;
148 
149  // current output information
151 
152  // previous information
153  struct os_info{
154  std::ostream* os;
156  };
157 
158  std::stack<os_info> stack_;
159 
160  };
161 
162  extern BridgeIO vout;
163 }
164 #endif //BRIDGE_IO_INCLUDED
Bridge::PARANOIAC
@ PARANOIAC
Definition: bridgeIO.h:50
Bridge::BridgeIO::rewind_
void rewind_()
Definition: bridgeIO.cpp:164
Bridge::BridgeIO::init
void init(const std::string &filename)
Definition: bridgeIO.cpp:62
Bridge::BridgeIO::os_info::node_write
int node_write
Definition: bridgeIO.h:155
Bridge::BridgeIO::os_
std::ostream * os_
Definition: bridgeIO.h:139
Bridge::BridgeIO::ildg
DEPRECATED void ildg(const char *format,...)
Definition: bridgeIO.h:112
Bridge::BridgeIO::set_indent
void set_indent(const int level)
Definition: bridgeIO.cpp:526
Bridge::BridgeIO::decrease_indent
void decrease_indent()
Definition: bridgeIO.cpp:517
Bridge
BridgeIO for output under parallel environment with verbose level control.
Definition: bridgeIO.cpp:24
Bridge::BridgeIO::ildg_init
DEPRECATED void ildg_init(const std::ostream &os)
Definition: bridgeIO.h:108
Bridge::BridgeIO::increase_indent
void increase_indent()
Definition: bridgeIO.cpp:508
Bridge::BridgeIO::detailed
void detailed(const char *format,...)
Definition: bridgeIO.cpp:281
Bridge::GENERAL
@ GENERAL
Definition: bridgeIO.h:48
Bridge::BridgeIO::unset
void unset()
Definition: bridgeIO.cpp:142
Bridge::BridgeIO::os_info
Definition: bridgeIO.h:153
Bridge::BridgeIO::~BridgeIO
virtual ~BridgeIO()
Definition: bridgeIO.cpp:55
Bridge::BridgeIO::paranoiac
void paranoiac(const char *format,...)
Definition: bridgeIO.cpp:300
Bridge::BridgeIO::tidyup_
void tidyup_()
Definition: bridgeIO.cpp:179
Bridge::BridgeIO::stack_
std::stack< os_info > stack_
Definition: bridgeIO.h:158
Bridge::BridgeIO::ildg_init
DEPRECATED void ildg_init(const std::string &filename)
Definition: bridgeIO.h:110
Bridge::BridgeIO::push_
void push_()
Definition: bridgeIO.cpp:151
ParameterCheck::vl
Bridge::VerboseLevel vl
Definition: parameterCheck.cpp:18
Bridge::BridgeIO
Definition: bridgeIO.h:53
Bridge::BridgeIO::operator=
BridgeIO & operator=(const BridgeIO &)
Bridge::BridgeIO::class_name
static const std::string class_name
Definition: bridgeIO.h:55
Bridge::BridgeIO::buff_
char buff_[1024]
Definition: bridgeIO.h:145
Bridge::BridgeIO::m_node_write
int m_node_write
Definition: bridgeIO.h:150
Bridge::BridgeIO::set_verbose_level
static VerboseLevel set_verbose_level(const std::string &str)
Definition: bridgeIO.cpp:195
Bridge::BridgeIO::BridgeIO
BridgeIO(const std::string &filename="stdout")
Definition: bridgeIO.cpp:29
Bridge::DETAILED
@ DETAILED
Definition: bridgeIO.h:49
Bridge::BridgeIO::m_indent_level
static int m_indent_level
Definition: bridgeIO.h:147
Bridge::BridgeIO::os_info::os
std::ostream * os
Definition: bridgeIO.h:154
Bridge::BridgeIO::isOpen
bool isOpen()
Definition: bridgeIO.cpp:503
Bridge::BridgeIO::indent_level
int indent_level()
Definition: bridgeIO.h:99
Bridge::BridgeIO::crucial
void crucial(const char *format,...)
Definition: bridgeIO.cpp:242
communicator.h
Bridge::VerboseLevel
VerboseLevel
Definition: bridgeIO.h:45
Bridge::BridgeIO::getStream
std::ostream & getStream()
Definition: bridgeIO.cpp:496
Bridge::CRUCIAL
@ CRUCIAL
Definition: bridgeIO.h:47
Bridge::BridgeIO::print
void print(VerboseLevel level, VerboseLevel write_level, int node, const char *format, va_list &arg)
Definition: bridgeIO.cpp:538
Bridge::BridgeIO::general
void general(const char *format,...)
Definition: bridgeIO.cpp:262
DEPRECATED
#define DEPRECATED
Definition: configure.h:28
Bridge::vout
BridgeIO vout
Definition: bridgeIO.cpp:569
Bridge::BridgeIO::get_verbose_level
static std::string get_verbose_level(const VerboseLevel vl)
Definition: bridgeIO.cpp:216