Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / utilities / postProcessing / dataConversion / foamToEnsight / ensightBinaryStream.H
blob749b47b7027bbf827347ab5dcc7dda420b906a88
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
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::ensightBinaryStream
27 Description
29 SourceFiles
30     ensightBinaryStream.C
32 \*---------------------------------------------------------------------------*/
34 #ifndef ensightBinaryStream_H
35 #define ensightBinaryStream_H
37 #include "ensightStream.H"
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 namespace Foam
44 /*---------------------------------------------------------------------------*\
45                          Class ensightBinaryStream Declaration
46 \*---------------------------------------------------------------------------*/
48 class ensightBinaryStream
50     public ensightStream
52     // Private data
54         //- Description of data_
55         autoPtr<std::ofstream> str_;
58     // Private Member Functions
60         //- Disallow default bitwise copy construct
61         ensightBinaryStream(const ensightBinaryStream&);
63         //- Disallow default bitwise assignment
64         void operator=(const ensightBinaryStream&);
67 public:
69     // Constructors
71         //- Construct from components
72         ensightBinaryStream(const fileName& f, const Time&)
73         :
74             ensightStream(f),
75             str_
76             (
77                 new std::ofstream
78                 (
79                     f.c_str(),
80                     ios_base::out | ios_base::binary | ios_base::trunc
81                 )
82             )
83         {}
86     //- Destructor
87     virtual ~ensightBinaryStream()
88     {}
91     // Member Functions
93         virtual bool ascii() const
94         {
95             return false;
96         }
98         virtual void write(const char* val)
99         {
100             char buffer[80] = {0};
101             strcpy(buffer, val);
102             str_().write(buffer, 80*sizeof(char));
103         }
105         virtual void write(const int val)
106         {
107             str_().write(reinterpret_cast<const char*>(&val), sizeof(int));
108         }
110         virtual void write(const scalarField& sf)
111         {
112             if (sf.size())
113             {
114                 List<float> temp(sf.size());
116                 forAll(sf, i)
117                 {
118                     temp[i] = float(sf[i]);
119                 }
121                 str_().write
122                 (
123                     reinterpret_cast<const char*>(temp.begin()),
124                     sf.size()*sizeof(float)
125                 );
126             }
127         }
129         virtual void write(const List<int>& sf)
130         {
131             str_().write
132             (
133                 reinterpret_cast<const char*>(sf.begin()),
134                 sf.size()*sizeof(int)
135             );
136         }
138         virtual void writePartHeader(const label partI)
139         {
140             write("part");
141             write(partI);
142         }
144     // Member Operators
146     // Friend Functions
148     // Friend Operators
150     // IOstream Operators
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 } // End namespace Foam
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
161 #endif
163 // ************************************************************************* //