OpenFOAM logo
Open Source CFD Toolkit

OFstream.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2005 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software; you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by the
00013     Free Software Foundation; either version 2 of the License, or (at your
00014     option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM; if not, write to the Free Software Foundation,
00023     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00024 
00025 Class
00026     OFstream
00027 
00028 Description
00029     Output to file stream.
00030 
00031 SourceFiles
00032     OFstream.C
00033 
00034 \*---------------------------------------------------------------------------*/
00035 
00036 #ifndef OFstream_H
00037 #define OFstream_H
00038 
00039 #include "OSstream.H"
00040 #include "fileName.H"
00041 #include "className.H"
00042 
00043 #include <fstream>
00044 using std::ofstream;
00045 
00046 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00047 
00048 namespace Foam
00049 {
00050 
00051 class OFstream;
00052 
00053 /*---------------------------------------------------------------------------*\
00054                        Class OFstreamAllocator Declaration
00055 \*---------------------------------------------------------------------------*/
00056 
00057 class OFstreamAllocator
00058 {
00059     friend class OFstream;
00060 
00061     ostream* ofPtr_;
00062 
00063     // Constructors
00064 
00065         //- Construct from pathname
00066         OFstreamAllocator
00067         (
00068             const fileName& pathname,
00069             IOstream::compressionType compression=IOstream::UNCOMPRESSED
00070         );
00071 
00072     // Destructor
00073 
00074         ~OFstreamAllocator();
00075 };
00076 
00077 
00078 /*---------------------------------------------------------------------------*\
00079                            Class OFstream Declaration
00080 \*---------------------------------------------------------------------------*/
00081 
00082 class OFstream
00083 :
00084     private OFstreamAllocator,
00085     public OSstream
00086 {
00087     // Private data
00088 
00089         fileName pathname_;
00090 
00091 
00092 public:
00093 
00094     // Declare name of the class and it's debug switch
00095     ClassName("OFstream");
00096 
00097 
00098     // Constructors
00099 
00100         //- Construct from pathname
00101         OFstream
00102         (
00103             const fileName& pathname,
00104             streamFormat format=ASCII,
00105             versionNumber version=currentVersion,
00106             compressionType compression=UNCOMPRESSED
00107         );
00108 
00109 
00110     // Destructor
00111 
00112         ~OFstream();
00113 
00114 
00115     // Member functions
00116 
00117         // Access
00118 
00119             //- Return the name of the stream
00120             const fileName& name() const
00121             {
00122                 return pathname_;
00123             }
00124 
00125             //- Return non-const access to the name of the stream
00126             fileName& name()
00127             {
00128                 return pathname_;
00129             }
00130 
00131 
00132         // Print
00133 
00134             //- Print description of IOstream to Ostream
00135             void print(Ostream&) const;
00136 };
00137 
00138 
00139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00140 // Global predefined null output stream
00141 
00142 extern OFstream Snull;
00143 
00144 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00145 
00146 } // End namespace Foam
00147 
00148 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00149 
00150 #endif
00151 
00152 // ************************************************************************* //
For further information go to www.openfoam.org