OpenLB 1.7
Loading...
Searching...
No Matches
ostreamManager.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2011 Lukas Baron, Mathias Krause
4 * E-mail contact: info@openlb.net
5 * The most recent release of OpenLB can be downloaded at
6 * <http://www.openlb.net/>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program; if not, write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301, USA.
22*/
23
24
25#ifndef OSTREAM_MANAGER_H
26#define OSTREAM_MANAGER_H
27
28#include <iostream>
29#include <sstream>
30#include <iomanip>
31
32namespace olb {
33
35
36class OMBuf : public std::stringbuf {
37private:
38 std::ostream* output;
39 std::string text;
40 static bool multiOutput;
41public:
42 OMBuf();
43 ~OMBuf() override;
44 OMBuf(const OMBuf& rhs);
45 OMBuf& operator=(const OMBuf& rhs);
46 void swap(OMBuf& rhs);
47 OMBuf(std::ostream& str, std::string classname);
48 void setMultiOutput(bool b);
50
53 int sync() override;
54};
55
57
81class OstreamManager : public std::ostream {
82private:
83 // OstreamManager clout should use it's own special buffer
85 OMBuf buffer;
86
87public:
88 // standard constructor (should be unnecessary due to absence of classname-text)
89 // OstreamManager();
91 OstreamManager(std::string classname);
93 OstreamManager(std::ostream& str, std::string classname);
94 // Copy construction
96 // Copy assignment
98 // Destructor
99 ~OstreamManager() override { };
101 void setMultiOutput(bool b);
102};
103
104} // namespace olb
105
106#endif
userdefined stream buffer for OstreamManager
void setMultiOutput(bool b)
~OMBuf() override
void swap(OMBuf &rhs)
OMBuf & operator=(const OMBuf &rhs)
int sync() override
sync the stream with the output:
class for marking output with some text
~OstreamManager() override
OstreamManager & operator=(const OstreamManager &rhs)
OstreamManager(std::string classname)
constructor that uses std::cout by default
void setMultiOutput(bool b)
enable message output for all MPI processes, disabled by default
Top level namespace for all of OpenLB.