Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / surfMesh / MeshedSurfaceAllocator / MeshedSurfaceIOAllocator.H
blob6fda1ca77a7f0ac9bd350c31c65e075d95368fed
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::MeshedSurfaceIOAllocator
27 Description
28     A helper class for storing points, faces and zones with IO capabilities.
30 SourceFiles
31     MeshedSurfaceIOAllocator.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef MeshedSurfaceIOAllocator_H
36 #define MeshedSurfaceIOAllocator_H
38 #include "pointIOField.H"
39 #include "faceIOList.H"
40 #include "surfZoneIOList.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                   Class MeshedSurfaceIOAllocator Declaration
49 \*---------------------------------------------------------------------------*/
51 //- A helper class for storing points, faces and zones
52 class MeshedSurfaceIOAllocator
54     // Private data
56         //- Points
57         pointIOField points_;
59         //- Faces
60         faceIOList faces_;
62         //- Surface zones
63         surfZoneIOList zones_;
66     // Private Member Functions
68         //- Disallow default bitwise copy construct
69         MeshedSurfaceIOAllocator(const MeshedSurfaceIOAllocator&);
71         //- Disallow default bitwise assignment
72         void operator=(const MeshedSurfaceIOAllocator&);
75 public:
77     // Constructors
79         //- Read construct from IOobjects
80         MeshedSurfaceIOAllocator
81         (
82             const IOobject& ioPoints,
83             const IOobject& ioFaces,
84             const IOobject& ioZones
85         );
87         //- Construct from IOobjects, copying components
88         MeshedSurfaceIOAllocator
89         (
90             const IOobject& ioPoints,
91             const pointField& points,
92             const IOobject& ioFaces,
93             const faceList& faces,
94             const IOobject& ioZones,
95             const surfZoneList& zones
96         );
98         //- Construct from IOobjects, possibly transferring components
99         MeshedSurfaceIOAllocator
100         (
101             const IOobject& ioPoints,
102             const Xfer< pointField >& points,
103             const IOobject& ioFaces,
104             const Xfer< faceList >& faces,
105             const IOobject& ioZones,
106             const Xfer< surfZoneList >& zones
107         );
109     // Destructor
112     // Member Functions
114         // Access
116             //- Non-const access to the points
117             pointIOField& storedIOPoints()
118             {
119                 return points_;
120             }
122             //- Non-const access to the faces
123             faceIOList& storedIOFaces()
124             {
125                 return faces_;
126             }
128             //- Non-const access to the zones
129             surfZoneIOList& storedIOZones()
130             {
131                 return zones_;
132             }
134             //- Const access to the points
135             const pointIOField& storedIOPoints() const
136             {
137                 return points_;
138             }
140             //- Const access to the faces
141             const faceIOList& storedIOFaces() const
142             {
143                 return faces_;
144             }
146             //- Const access to the zones
147             const surfZoneIOList& storedIOZones() const
148             {
149                 return zones_;
150             }
153         //  Storage management
155             //- Clear primitive data (points, faces and zones)
156             void clear();
158             //- Reset primitive data (points, faces and zones)
159             //  Note, optimized to avoid overwriting data (with Xfer::null)
160             void resetFaces
161             (
162                 const Xfer< faceList >& faces,
163                 const Xfer< surfZoneList >& zones
164             );
166             //- Reset primitive data (points, faces and zones)
167             //  Note, optimized to avoid overwriting data (with Xfer::null)
168             void reset
169             (
170                 const Xfer< pointField >& points,
171                 const Xfer< faceList >& faces,
172                 const Xfer< surfZoneList >& zones
173             );
175             //- Reset primitive data (points, faces and zones)
176             //  Note, optimized to avoid overwriting data (with Xfer::null)
177             void reset
178             (
179                 const Xfer< List<point> >& points,
180                 const Xfer< faceList >& faces,
181                 const Xfer< surfZoneList >& zones
182             );
186 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
188 } // End namespace Foam
190 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
192 #endif
194 // ************************************************************************* //