fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / surfMesh / surfaceFormats / stl / STLsurfaceFormatCore.H
blobcd5879440646c2ddecbe7f9bd78f1444f2a00a4f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::fileFormats::STLsurfaceFormatCore
28 Description
29     Internal class used by the STLsurfaceFormat
31 SourceFiles
32     STLsurfaceFormatCore.C
33     STLsurfaceFormatASCII.L
35 \*---------------------------------------------------------------------------*/
37 #ifndef STLsurfaceFormatCore_H
38 #define STLsurfaceFormatCore_H
40 #include "STLtriangle.H"
41 #include "triFace.H"
42 #include "IFstream.H"
43 #include "Ostream.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
49 namespace fileFormats
52 /*---------------------------------------------------------------------------*\
53                     Class STLsurfaceFormatCore Declaration
54 \*---------------------------------------------------------------------------*/
56 class STLsurfaceFormatCore
58     // Private Data
60         bool sorted_;
62         //- The points supporting the facets
63         pointField points_;
65         //- The zones associated with the faces
66         List<label> zoneIds_;
68         //- The solid names, in the order of their first appearance
69         List<word> names_;
71         //- The solid count, in the order of their first appearance
72         List<label> sizes_;
75     // Private Member Functions
77         //- Disallow default bitwise copy construct
78         STLsurfaceFormatCore(const STLsurfaceFormatCore&);
80         //- Disallow default bitwise assignment
81         void operator=(const STLsurfaceFormatCore&);
83         //- Determine the file type
84         static int detectBINARY(const fileName&);
86         //- Read ASCII
87         bool readASCII(istream&, const off_t);
89         //- Read BINARY
90         bool readBINARY(istream&, const off_t);
93 public:
95     // Static Data
97         //- The number of bytes in the STL binary header
98         static const unsigned int headerSize = 80;
101     // Static Member Functions
103         //- Write "STL binary file" and number of triangles to stream
104         static void writeHeaderBINARY(ostream&, unsigned int);
107     // Constructors
109         //- Read from file, filling in the information
110         STLsurfaceFormatCore(const fileName&);
113     // Destructor
115         ~STLsurfaceFormatCore();
118     // Member Functions
120         //- File read was already sorted
121         bool sorted() const
122         {
123             return sorted_;
124         }
126         //- Flush all values
127         void clear()
128         {
129             sorted_ = true;
130             points_.clear();
131             zoneIds_.clear();
132             names_.clear();
133             sizes_.clear();
134         }
136         //- Return full access to the points
137         pointField& points()
138         {
139             return points_;
140         }
142         //- Return full access to the zoneIds
143         List<label>& zoneIds()
144         {
145             return zoneIds_;
146         }
148         //- The list of solid names in the order of their first appearance
149         List<word>& names()
150         {
151             return names_;
152         }
154         //- The list of solid sizes in the order of their first appearance
155         List<label>& sizes()
156         {
157             return sizes_;
158         }
162 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
164 } // End namespace fileFormats
165 } // End namespace Foam
167 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
169 #endif
171 // ************************************************************************* //