prefixOSstream.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2014 OpenFOAM Foundation
9  Copyright (C) 2020-2022 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::prefixOSstream
29 
30 Description
31  Version of OSstream that prints a prefix on each line.
32 
33  This is useful for running in parallel as it allows the processor number
34  to be automatically prepended to each message line.
35 
36 SourceFiles
37  prefixOSstream.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef Foam_prefixOSstream_H
42 #define Foam_prefixOSstream_H
43 
44 #include "OSstream.H"
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 /*---------------------------------------------------------------------------*\
52  Class prefixOSstream Declaration
53 \*---------------------------------------------------------------------------*/
54 
55 class prefixOSstream
56 :
57  public OSstream
58 {
59  // Private Data
60 
61  bool printPrefix_;
62 
63  string prefix_;
64 
65 
66  // Private Member Functions
67 
68  inline void checkWritePrefix();
69 
70 
71 public:
72 
73  // Constructors
74 
75  //- Construct and set stream status
77  (
78  std::ostream& os,
79  const string& streamName,
80  IOstreamOption streamOpt = IOstreamOption()
81  );
82 
83 
84  // Member Functions
85 
86  // Enquiry
87 
88  //- Return the stream prefix
89  const string& prefix() const noexcept
90  {
91  return prefix_;
92  }
93 
94  //- Return non-const access to the stream prefix
95  string& prefix() noexcept
96  {
97  return prefix_;
98  }
99 
100 
101  // Write Functions
102 
103  //- Write token to stream or otherwise handle it.
104  // \return false if the token type was not handled by this method
105  virtual bool write(const token& tok);
106 
107  //- Write character
108  virtual Ostream& write(const char c);
109 
110  //- Write character string
111  virtual Ostream& write(const char* str);
112 
113  //- Write word
114  virtual Ostream& write(const word& val);
115 
116  //- Write string
117  virtual Ostream& write(const string& val);
118 
119  //- Write std::string surrounded by quotes.
120  // Optional write without quotes.
121  virtual Ostream& writeQuoted
122  (
123  const std::string& val,
124  const bool quoted=true
125  );
126 
127  //- Write int32_t
128  virtual Ostream& write(const int32_t val);
129 
130  //- Write int64_t
131  virtual Ostream& write(const int64_t val);
132 
133  //- Write float
134  virtual Ostream& write(const float val);
135 
136  //- Write double
137  virtual Ostream& write(const double val);
138 
139  //- Write binary block
140  virtual Ostream& write(const char* buf, std::streamsize count);
141 
142  //- Add indentation characters
143  virtual void indent();
144 
145 
146  // Print
147 
148  //- Print stream description to Ostream
149  virtual void print(Ostream& os) const;
150 };
151 
152 
153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
154 
155 } // End namespace Foam
156 
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158 
159 #endif
160 
161 // ************************************************************************* //
Generic output stream using a standard (STL) stream.
Definition: OSstream.H:50
virtual Ostream & writeQuoted(const std::string &val, const bool quoted=true)
Write std::string surrounded by quotes.
A token holds an item read from Istream.
Definition: token.H:64
A simple container for options an IOstream can normally have.
constexpr IOstreamOption(streamFormat fmt=streamFormat::ASCII, compressionType comp=compressionType::UNCOMPRESSED) noexcept
Default construct (ASCII, UNCOMPRESSED, currentVersion) or construct with format, compression...
unsigned int count(const UList< bool > &bools, const bool val=true)
Count number of &#39;true&#39; entries.
Definition: BitOps.H:73
Version of OSstream that prints a prefix on each line.
A class for handling words, derived from Foam::string.
Definition: word.H:63
const string & prefix() const noexcept
Return the stream prefix.
virtual void print(Ostream &os) const
Print stream description to Ostream.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:55
const direction noexcept
Definition: Scalar.H:258
OBJstream os(runTime.globalPath()/outputName)
virtual void indent()
Add indentation characters.
const dimensionedScalar c
Speed of light in a vacuum.
virtual bool write(const token &tok)
Write token to stream or otherwise handle it.
prefixOSstream(std::ostream &os, const string &streamName, IOstreamOption streamOpt=IOstreamOption())
Construct and set stream status.
Namespace for OpenFOAM.