Adding cfMesh-v1.0 into the repository
[foam-extend-3.2.git] / src / meshLibrary / utilities / containers / Lists / faceListPMG.H
blobd17c5d78c5a3ee97f66a9c048f7e35e1a5067273
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     faceListPMG
27 Description
28     This is a container with additional size to prevent re-allocation
29     every time it is resized
31 SourceFiles
34 \*---------------------------------------------------------------------------*/
36 #ifndef faceListPMG_H
37 #define faceListPMG_H
39 #include "regIOobject.H"
40 #include "faceList.H"
41 #include "Istream.H"
42 #include "Ostream.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 class faceListPMG
52 :   public regIOobject,
53     public faceList
55     // Private data
56         //- number of used elements
57         label nElmts_;
59     // Disallow bitwise assignment
60         void operator=(const faceListPMG&);
62         faceListPMG(const faceListPMG&);
64     // Disallow transfer from faceList
65         void transfer(faceList&);
67 public:
69         TypeName("faceList");
71     // Constructors
72         //- construct from IOobject
73         inline faceListPMG(const IOobject&);
75         //- construct from IOobject and size
76         inline faceListPMG(const IOobject&, const label);
78         //- construct from IOobject and faceList
79         inline faceListPMG(const IOobject&, const faceList&);
81     // Destructor
82         inline ~faceListPMG();
84     // Member functions
85         //- return the number of used elements
86         inline label size() const;
88         //- set the number of used elements
89         inline void setSize(const label nElmts);
91         //- set the size to zero
92         inline void clear();
94         //- add a face at the end of the list
95         inline void append(const face&);
97         //- return an element with bound checking
98         inline face& newElmt(const label);
100         //- read/write the list onto disk
101         inline bool writeData(Ostream&) const;
103     // Member operators
104         inline void operator=(const faceList&);
106         friend inline Ostream& operator<<(Ostream&, const faceListPMG&);
108         friend inline Istream& operator>>(Istream&, faceListPMG&);
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 } // End namespace Foam
115 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
117 #include "faceListPMGI.H"
119 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
121 #endif
123 // ************************************************************************* //