QDP++
qdp_stdio.h
Go to the documentation of this file.
1// -*- C++ -*-
2
9
10#ifndef QDP_STDIO_H
11#define QDP_STDIO_H
12
13#include <istream>
14#include <ostream>
15//#include <streambuf>
16#include <string>
17
18namespace QDP {
19
20
27
28//--------------------------------------------------------------------------------
30
33{
34public:
37
40
42 void init(std::istream *is);
43
44// //! Redirect input stream
45// void rdbuf(std::streambuf* b);
46
48 bool fail();
49
50 // Overloaded input functions
51 StandardInputStream& operator>>(std::string& input);
52 StandardInputStream& operator>>(char& input);
54 StandardInputStream& operator>>(unsigned int& input);
55 StandardInputStream& operator>>(short int& input);
56 StandardInputStream& operator>>(unsigned short int& input);
57 StandardInputStream& operator>>(long int& input);
58 StandardInputStream& operator>>(unsigned long int& input);
59 StandardInputStream& operator>>(long long int& input);
60 StandardInputStream& operator>>(float& input);
61 StandardInputStream& operator>>(double& input);
62 StandardInputStream& operator>>(long double& input);
63 StandardInputStream& operator>>(bool& input);
64
65
66private:
69 void operator=(const StandardInputStream&) {}
70
71protected:
72 // The universal data-reader. All the read functions call this
73 template<typename T>
75
76 // Get the internal istream
77 std::istream& getIstream() {return *is;}
78
80 bool is_open() {return open;}
81
82private:
83 std::istream* is;
84 bool open;
85};
86
87
89template<class T>
90inline
92{
93 for(int i=0; i < d.size(); ++i)
94 s >> d[i];
95
96 return s;
97}
98
99
100
101//--------------------------------------------------------------------------------
103
106{
107public:
110
112
114 void init(std::ostream *os);
115
116// //! Redirect output stream
117// void rdbuf(std::streambuf* b);
118
120 void flush();
121
123 bool fail();
124
126 StandardOutputStream& operator<<(std::ostream& (*op)(std::ostream&));
127
128 // Overloaded output functions
129 StandardOutputStream& operator<<(const std::string& output);
130 StandardOutputStream& operator<<(const char* output);
131 StandardOutputStream& operator<<(char output);
132 StandardOutputStream& operator<<(int output);
133 StandardOutputStream& operator<<(unsigned int output);
134 StandardOutputStream& operator<<(short int output);
135 StandardOutputStream& operator<<(unsigned short int output);
136 StandardOutputStream& operator<<(long int output);
137 StandardOutputStream& operator<<(unsigned long int output);
138 StandardOutputStream& operator<<(long long int output);
139 StandardOutputStream& operator<<(float output);
140 StandardOutputStream& operator<<(double output);
141 StandardOutputStream& operator<<(long double output);
142 StandardOutputStream& operator<<(bool output);
143
144
145private:
148 void operator=(const StandardOutputStream&) {}
149
150protected:
151 // The universal data-writer. All the write functions call this
152 template<typename T>
154
155 // Get the internal ostream
156 std::ostream& getOstream() {return *os;}
157
159 bool is_open() {return open;}
160
161private:
162 std::ostream* os;
163 bool open;
164};
165
166
167// NOTE: A write of an array is *NOT* provided since these are usual special purpose
168//template<class T>
169//inline
170//StandardOutputStream& operator<<(StandardOutputStream& s, const multi1d<T>& d);
171
172
173
174// Make global (parallel) versions of stdin, stdout, stderr
175// Put this in a different namespace to avoid collisions
176namespace QDPIO
177{
178 extern StandardInputStream cin;
179 extern StandardOutputStream cout;
180 extern StandardOutputStream cerr;
181}
182
183 // end of group stdio
185
186} // namespace QDP
187
188#endif
StandardInputStream class.
Definition qdp_stdio.h:33
~StandardInputStream()
destructor
Definition qdp_stdio.cc:48
bool fail()
Return true if some failure occurred in previous IO operation.
Definition qdp_stdio.cc:37
StandardInputStream()
Constructor.
Definition qdp_stdio.cc:28
StandardInputStream & readPrimitive(T &output)
Definition qdp_stdio.cc:117
bool is_open()
Is the stream open?
Definition qdp_stdio.h:80
StandardInputStream & operator>>(std::string &input)
Definition qdp_stdio.cc:52
std::istream & getIstream()
Definition qdp_stdio.h:77
void init(std::istream *is)
Constructor from a stream.
Definition qdp_stdio.cc:30
StandardOutputStream & writePrimitive(T output)
Definition qdp_stdio.cc:270
StandardOutputStream()
Constructor.
Definition qdp_stdio.cc:131
bool fail()
Return true if some failure occurred in previous IO operation.
Definition qdp_stdio.cc:149
std::ostream & getOstream()
Definition qdp_stdio.h:156
bool is_open()
Is the stream open?
Definition qdp_stdio.h:159
void flush()
Flush the buffer.
Definition qdp_stdio.cc:139
StandardOutputStream & operator<<(std::ostream &(*op)(std::ostream &))
Hook for manipulators.
Definition qdp_stdio.cc:164
void init(std::ostream *os)
Constructor from a stream.
Definition qdp_stdio.cc:133
Container for a multi-dimensional 1D array.
Definition qdp_multi.h:25
int size() const
Size of array.
Definition qdp_multi.h:60
TextReader & operator>>(TextReader &txt, std::string &input)
Definition qdp_io.cc:121
StandardOutputStream cout
Definition qdp_stdio.cc:21
StandardOutputStream cerr
Definition qdp_stdio.cc:22
StandardInputStream cin
Definition qdp_stdio.cc:20
Yet another random number generator.