Forward compatibility: flex
[foam-extend-3.2.git] / src / foam / db / IOstreams / Sstreams / prefixOSstream.H
blob07576cf886db490b5eb4255515f417cf1bfa5366
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  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 doubleScalar
134             virtual Ostream& write(const longDoubleScalar);
136             //- Write binary block
137             virtual Ostream& write(const char*, std::streamsize);
139             //- Add indentation characters
140             virtual void indent();
143         // Print
145             //- Print description of IOstream to Ostream
146             virtual void print(Ostream&) const;
150 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 } // End namespace Foam
154 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
156 #endif
158 // ************************************************************************* //