OFstream.H 3.93 KB
Newer Older
1
2
3
4
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     |
5
    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
6
     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
7
8
9
10
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.

11
12
13
14
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
15
16
17
18
19
20
21

    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.

    You should have received a copy of the GNU General Public License
22
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
23
24
25
26
27

Class
    Foam::OFstream

Description
28
    Output to file stream, using a OSstream
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

SourceFiles
    OFstream.C

\*---------------------------------------------------------------------------*/

#ifndef OFstream_H
#define OFstream_H

#include "OSstream.H"
#include "fileName.H"
#include "className.H"

#include <fstream>
using std::ofstream;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

namespace Foam
{

/*---------------------------------------------------------------------------*\
51
                      Class OFstreamAllocator Declaration
52
53
\*---------------------------------------------------------------------------*/

54
//- A std::ostream with the ability to handle compressed files
55
56
class OFstreamAllocator
{
57
58
59
60
61
62
protected:

    // Member Data

        //- The allocated stream pointer (ofstream or ogzstream).
        std::ostream* allocatedPtr_;
63
64
65
66
67
68
69
70


    // Constructors

        //- Construct from pathname
        OFstreamAllocator
        (
            const fileName& pathname,
71
72
            IOstream::compressionType compression=IOstream::UNCOMPRESSED,
            const bool append = false
73
74
        );

75

76
77
    //- Destructor
    ~OFstreamAllocator();
78

79
80
81
82
83
84

    // Protected Member Functions

        //- Delete the stream pointer
        void deallocate();

85
86
87
88
};


/*---------------------------------------------------------------------------*\
89
                          Class OFstream Declaration
90
91
92
93
\*---------------------------------------------------------------------------*/

class OFstream
:
94
    public OFstreamAllocator,
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
    public OSstream
{
public:

    // Declare name of the class and its debug switch
    ClassName("OFstream");


    // Constructors

        //- Construct from pathname
        OFstream
        (
            const fileName& pathname,
            streamFormat format=ASCII,
            versionNumber version=currentVersion,
111
112
            compressionType compression=UNCOMPRESSED,
            const bool append = false
113
114
115
        );


116
117
    //- Destructor
    ~OFstream();
118
119
120
121


    // Member functions

122
      // Access
123

124
125
        //- Read/write access to the name of the stream
        using OSstream::name;
126
127


128
      // STL stream
129

130
131
        //- Access to underlying std::ostream
        virtual std::ostream& stdStream();
132

133
134
        //- Const access to underlying std::ostream
        virtual const std::ostream& stdStream() const;
135
136


137
      // Print
138

139
140
        //- Print description of IOstream to Ostream
        void print(Ostream& os) const;
141
142
143
144
145
};


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

146
//- Global predefined null output stream "/dev/null"
147
148
149
150
151
152
153
154
155
156
157
extern OFstream Snull;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

} // End namespace Foam

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#endif

// ************************************************************************* //