dune-fem 2.12-git
Loading...
Searching...
No Matches
virtualstreams.hh
Go to the documentation of this file.
1#ifndef DUNE_FEM_VIRTUALSTREAMS_HH
2#define DUNE_FEM_VIRTUALSTREAMS_HH
3
5
6namespace Dune
7{
8
9 namespace Fem
10 {
11
12 // Forward Declarations
13 // --------------------
14
15 class VirtualOutStream;
16
17 class VirtualInStream;
18
19 template< class Traits >
20 VirtualOutStream virtualize ( OutStreamInterface< Traits > &stream );
21
22 template< class Traits >
23 VirtualInStream virtualize ( InStreamInterface< Traits > &stream );
24
25
26
27 // VirtualOutStreamObject
28 // ----------------------
29
31 {
33
34 friend class VirtualOutStream;
35
36 private:
37 unsigned int refCount;
38
39 protected:
41 : refCount( 0 )
42 {}
44
45 public:
46 virtual void flush () = 0;
47 virtual void writeDouble ( double value ) = 0;
48 virtual void writeFloat ( float value ) = 0;
49 virtual void writeInt ( int value ) = 0;
50 virtual void writeSignedInt64 ( int64_t value ) = 0;
51 virtual void writeString ( const std::string &s ) = 0;
52 virtual void writeUnsignedInt ( unsigned int value ) = 0;
53 virtual void writeUnsignedInt64 ( uint64_t value ) = 0;
54 };
55
56
57
58 // VirtualOutStreamTraits
59 // ----------------------
60
65
66
67
68 // VirtualOutStream
69 // ----------------
70
72 : public OutStreamInterface< VirtualOutStreamTraits >
73 {
76
77 template< class T >
79
80 private:
81 VirtualOutStreamObject *const stream_;
82
83 private:
84 explicit VirtualOutStream ( VirtualOutStreamObject *stream )
85 : stream_( stream )
86 {
87 ++stream_->refCount;
88 }
89
90 public:
91 VirtualOutStream ( const ThisType &other )
92 : stream_( other.stream_ )
93 {
94 ++stream_->refCount;
95 }
96
98 {
99 if( --stream_->refCount == 0 )
100 delete stream_;
101 }
102
103 private:
104 ThisType &operator= ( const ThisType & );
105
106 public:
107 void flush ()
108 {
109 stream_->flush();
110 }
111
112 void writeDouble ( double value )
113 {
114 stream_->writeDouble( value );
115 }
116
117 void writeFloat ( float value )
118 {
119 stream_->writeFloat( value );
120 }
121
122 void writeInt ( int value )
123 {
124 stream_->writeInt( value );
125 }
126
127 void writeSignedInt64 ( int64_t value )
128 {
129 stream_->writeSignedInt64( value );
130 }
131
132 void writeString ( const std :: string &s )
133 {
134 stream_->writeString( s );
135 }
136
137 void writeUnsignedInt ( unsigned int value )
138 {
139 stream_->writeUnsignedInt( value );
140 }
141
142 void writeUnsignedInt64 ( unsigned int value )
143 {
144 stream_->writeUnsignedInt64( value );
145 }
146 };
147
148
149
150 // VirtualInStreamObject
151 // ---------------------
152
154 {
156
157 friend class VirtualInStream;
158
159 private:
160 unsigned int refCount;
161
162 protected:
164 : refCount( 0 )
165 {}
166
168
169 public:
170 virtual void readDouble ( double &value ) = 0;
171 virtual void readFloat ( float &value ) = 0;
172 virtual void readInt ( int &value ) = 0;
173 virtual void readSignedInt64 ( int64_t &value ) = 0;
174 virtual void readString ( std::string &s ) = 0;
175 virtual void readUnsignedInt ( unsigned int &value ) = 0;
176 virtual void readUnsignedInt64 ( uint64_t &value ) = 0;
177 };
178
179
180
181 // VirtualInStreamTraits
182 // ---------------------
183
188
189
190
191 // VirtualInStream
192 // ---------------
193
195 : public InStreamInterface< VirtualInStreamTraits >
196 {
199
200 template< class T >
202
203 private:
204 VirtualInStreamObject *const stream_;
205
206 private:
207 explicit VirtualInStream ( VirtualInStreamObject *stream )
208 : stream_( stream )
209 {
210 ++stream_->refCount;
211 }
212
213 public:
214 VirtualInStream ( const ThisType &other )
215 : stream_( other.stream_ )
216 {
217 ++stream_->refCount;
218 }
219
221 {
222 if( --stream_->refCount == 0 )
223 delete stream_;
224 }
225
226 private:
227 ThisType &operator= ( const ThisType & );
228
229 public:
230 void readDouble ( double &value )
231 {
232 stream_->readDouble( value );
233 }
234
235 void readFloat ( float &value )
236 {
237 stream_->readFloat( value );
238 }
239
240 void readInt ( int &value )
241 {
242 stream_->readInt( value );
243 }
244
245 void readSignedInt64 ( int64_t &value )
246 {
247 stream_->readSignedInt64( value );
248 }
249
250 void readString ( std :: string &s )
251 {
252 stream_->readString( s );
253 }
254
255 void readUnsignedInt ( unsigned int &value )
256 {
257 stream_->readUnsignedInt( value );
258 }
259
260 void readUnsignedInt64 ( uint64_t &value )
261 {
262 stream_->readUnsignedInt64( value );
263 }
264 };
265
266
267
268 // VirtualOutStreamWrapper
269 // -----------------------
270
271 template< class Traits >
274 {
277
278 template< class T >
280
281 public:
283
284 private:
285 StreamType &stream_;
286
287 private:
288 explicit VirtualOutStreamWrapper ( StreamType &stream )
289 : stream_( stream )
290 {}
291
292 VirtualOutStreamWrapper ( const ThisType & );
293 ThisType &operator= ( const ThisType & );
294
295 public:
296 virtual void flush ()
297 {
298 stream_.flush();
299 }
300
301 virtual void writeDouble ( double value )
302 {
303 stream_.writeDouble( value );
304 }
305
306 virtual void writeFloat ( float value )
307 {
308 stream_.writeFloat( value );
309 }
310
311 virtual void writeInt ( int value )
312 {
313 stream_.writeInt( value );
314 }
315
316 virtual void writeSignedInt64 ( int64_t value )
317 {
318 stream_.writeSignedInt64( value );
319 }
320
321 virtual void writeString ( const std :: string &s )
322 {
323 stream_.writeString( s );
324 }
325
326 virtual void writeUnsignedInt( unsigned int value )
327 {
328 stream_.writeUnsignedInt( value );
329 }
330
331 virtual void writeUnsignedInt64( uint64_t value )
332 {
333 stream_.writeUnsignedInt64( value );
334 }
335 };
336
337
338
339 // VirtualInStreamWrapper
340 // ----------------------
341
342 template< class Traits >
344 : public VirtualInStreamObject
345 {
348
349 template< class T >
351
352 public:
354
355 private:
356 StreamType &stream_;
357
358 private:
359 explicit VirtualInStreamWrapper ( StreamType &stream )
360 : stream_( stream )
361 {}
362
363 VirtualInStreamWrapper ( const ThisType & );
364 ThisType &operator= ( const ThisType & );
365
366 public:
367 virtual void readDouble ( double &value )
368 {
369 stream_.readDouble( value );
370 }
371
372 virtual void readFloat ( float &value )
373 {
374 stream_.readFloat( value );
375 }
376
377 virtual void readInt ( int &value )
378 {
379 stream_.readInt( value );
380 }
381
382 virtual void readSignedInt64 ( int64_t &value )
383 {
384 stream_.readSignedInt64( value );
385 }
386
387 virtual void readString ( std :: string &s )
388 {
389 stream_.readString( s );
390 }
391
392 virtual void readUnsignedInt( unsigned int &value )
393 {
394 stream_.readUnsignedInt( value );
395 }
396
397 virtual void readUnsignedInt64( uint64_t &value )
398 {
399 stream_.readUnsignedInt64( value );
400 }
401 };
402
403
404
405 // virtualize
406 // ----------
407
408 template< class Traits >
413
414 template< class Traits >
419
420 } // namespave Fem
421
422} // namespace Dune
423
424#endif // #ifndef DUNE_FEM_VIRTUALSTREAMS_HH
VirtualOutStream virtualize(OutStreamInterface< Traits > &stream)
Definition virtualstreams.hh:409
abstract interface for an output stream
Definition streams.hh:48
void writeInt(const int value)
write an int to the stream
Definition streams.hh:98
void writeSignedInt64(int64_t value)
write an int64_t to the stream
Definition streams.hh:107
void flush()
flush the stream
Definition streams.hh:71
void writeUnsignedInt(unsigned int value)
write an unsigned int to the stream
Definition streams.hh:143
void writeDouble(const double value)
write a double to the stream
Definition streams.hh:80
void writeString(const std::string &s)
write a string to the stream
Definition streams.hh:134
void writeFloat(const float value)
write a float to the stream
Definition streams.hh:89
void writeUnsignedInt64(uint64_t value)
write an uint64_t to the stream
Definition streams.hh:152
abstract interface for an input stream
Definition streams.hh:190
void readUnsignedInt(unsigned int &value)
read an unsigned int from the stream
Definition streams.hh:342
void readString(std::string &s)
read a string from the stream
Definition streams.hh:333
void readInt(int &value)
read an int from the stream
Definition streams.hh:252
void readDouble(double &value)
read a double from the stream
Definition streams.hh:212
void readFloat(float &value)
read a float from the stream
Definition streams.hh:232
void readSignedInt64(int64_t &value)
read an int64_t from the stream
Definition streams.hh:272
void readUnsignedInt64(uint64_t &value)
read an uint64_t from the stream
Definition streams.hh:362
Definition virtualstreams.hh:31
virtual void writeUnsignedInt64(uint64_t value)=0
virtual void writeFloat(float value)=0
virtual void writeString(const std::string &s)=0
VirtualOutStreamObject()
Definition virtualstreams.hh:40
virtual void writeUnsignedInt(unsigned int value)=0
virtual void writeInt(int value)=0
virtual ~VirtualOutStreamObject()
Definition virtualstreams.hh:43
virtual void writeSignedInt64(int64_t value)=0
virtual void writeDouble(double value)=0
Definition virtualstreams.hh:62
VirtualOutStream OutStreamType
Definition virtualstreams.hh:63
Definition virtualstreams.hh:73
friend VirtualOutStream virtualize(OutStreamInterface< T > &)
void flush()
Definition virtualstreams.hh:107
VirtualOutStream(const ThisType &other)
Definition virtualstreams.hh:91
void writeUnsignedInt(unsigned int value)
Definition virtualstreams.hh:137
void writeUnsignedInt64(unsigned int value)
Definition virtualstreams.hh:142
void writeString(const std ::string &s)
Definition virtualstreams.hh:132
void writeInt(int value)
Definition virtualstreams.hh:122
void writeDouble(double value)
Definition virtualstreams.hh:112
void writeFloat(float value)
Definition virtualstreams.hh:117
void writeSignedInt64(int64_t value)
Definition virtualstreams.hh:127
virtual ~VirtualOutStream()
Definition virtualstreams.hh:97
Definition virtualstreams.hh:154
virtual void readInt(int &value)=0
virtual void readSignedInt64(int64_t &value)=0
virtual void readUnsignedInt64(uint64_t &value)=0
VirtualInStreamObject()
Definition virtualstreams.hh:163
virtual void readUnsignedInt(unsigned int &value)=0
virtual void readString(std::string &s)=0
virtual void readDouble(double &value)=0
virtual void readFloat(float &value)=0
virtual ~VirtualInStreamObject()
Definition virtualstreams.hh:167
Definition virtualstreams.hh:185
VirtualInStream InStreamType
Definition virtualstreams.hh:186
Definition virtualstreams.hh:196
void readString(std ::string &s)
Definition virtualstreams.hh:250
void readDouble(double &value)
Definition virtualstreams.hh:230
void readUnsignedInt(unsigned int &value)
Definition virtualstreams.hh:255
void readUnsignedInt64(uint64_t &value)
Definition virtualstreams.hh:260
virtual ~VirtualInStream()
Definition virtualstreams.hh:220
VirtualInStream(const ThisType &other)
Definition virtualstreams.hh:214
void readSignedInt64(int64_t &value)
Definition virtualstreams.hh:245
void readInt(int &value)
Definition virtualstreams.hh:240
friend VirtualInStream virtualize(InStreamInterface< T > &)
void readFloat(float &value)
Definition virtualstreams.hh:235
Definition virtualstreams.hh:274
virtual void writeFloat(float value)
Definition virtualstreams.hh:306
friend VirtualOutStream virtualize(OutStreamInterface< T > &)
virtual void writeUnsignedInt64(uint64_t value)
Definition virtualstreams.hh:331
virtual void writeUnsignedInt(unsigned int value)
Definition virtualstreams.hh:326
virtual void writeString(const std ::string &s)
Definition virtualstreams.hh:321
virtual void writeSignedInt64(int64_t value)
Definition virtualstreams.hh:316
virtual void flush()
Definition virtualstreams.hh:296
virtual void writeInt(int value)
Definition virtualstreams.hh:311
virtual void writeDouble(double value)
Definition virtualstreams.hh:301
OutStreamInterface< Traits > StreamType
Definition virtualstreams.hh:282
Definition virtualstreams.hh:345
InStreamInterface< Traits > StreamType
Definition virtualstreams.hh:353
virtual void readInt(int &value)
Definition virtualstreams.hh:377
virtual void readUnsignedInt(unsigned int &value)
Definition virtualstreams.hh:392
virtual void readDouble(double &value)
Definition virtualstreams.hh:367
virtual void readUnsignedInt64(uint64_t &value)
Definition virtualstreams.hh:397
virtual void readFloat(float &value)
Definition virtualstreams.hh:372
friend VirtualInStream virtualize(InStreamInterface< T > &)
virtual void readSignedInt64(int64_t &value)
Definition virtualstreams.hh:382
virtual void readString(std ::string &s)
Definition virtualstreams.hh:387