Transferred copyright to the OpenFOAM Foundation
[OpenFOAM-2.0.x.git] / src / OpenFOAM / db / IOstreams / Sstreams / prefixOSstream.H
blobb6d824da467aaa0929245350f44ecbf1153a5085
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::prefixOSstream
27 Description
28     Version of OSstream which prints a prefix on each line.
30     This is useful for running in parallel as it allows the processor number
31     to be automatically prepended to each message line.
33 SourceFiles
34     prefixOSstream.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef prefixOSstream_H
39 #define prefixOSstream_H
41 #include "OSstream.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class prefixOSstream Declaration
50 \*---------------------------------------------------------------------------*/
52 class prefixOSstream
54     public OSstream
56     // Private data
58         bool printPrefix_;
59         string prefix_;
62     // Private Member Functions
64         inline void checkWritePrefix();
67 public:
69     // Constructors
71         //- Set stream status
72         prefixOSstream
73         (
74             ostream& os,
75             const string& name,
76             streamFormat format=ASCII,
77             versionNumber version=currentVersion,
78             compressionType compression=UNCOMPRESSED
79         );
82     // Member functions
84         // Enquiry
86             //- Return the prefix of the stream
87             const string& prefix() const
88             {
89                 return prefix_;
90             }
92             //- Return non-const access to the prefix of the stream
93             string& prefix()
94             {
95                 return prefix_;
96             }
99         // Write functions
101             //- Write next token to stream
102             virtual Ostream& write(const token&);
104             //- Write character
105             virtual Ostream& write(const char);
107             //- Write character string
108             virtual Ostream& write(const char*);
110             //- Write word
111             virtual Ostream& write(const word&);
113             //- Write string
114             virtual Ostream& write(const string&);
116             //- Write std::string surrounded by quotes.
117             //  Optional write without quotes.
118             virtual Ostream& writeQuoted
119             (
120                 const std::string&,
121                 const bool quoted=true
122             );
124             //- Write label
125             virtual Ostream& write(const label);
127             //- Write floatScalar
128             virtual Ostream& write(const floatScalar);
130             //- Write doubleScalar
131             virtual Ostream& write(const doubleScalar);
133             //- Write binary block
134             virtual Ostream& write(const char*, std::streamsize);
136             //- Add indentation characters
137             virtual void indent();
140         // Print
142             //- Print description of IOstream to Ostream
143             virtual void print(Ostream&) const;
147 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
149 } // End namespace Foam
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 #endif
155 // ************************************************************************* //