Moving cfMesh into place. Updated contibutors list
[foam-extend-3.2.git] / src / mesh / cfMesh / meshLibrary / utilities / containers / Lists / cellListPMGI.H
bloba85205a09bdb009d3e36e1ff3faa61526591e5bc
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 Description
27 \*---------------------------------------------------------------------------*/
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 #include "SubList.H"
34 namespace Foam
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
38 // Constructors
40 inline cellListPMG::cellListPMG()
42     cellList(),
43     nElmts_(0)
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 // Destructor
50 inline cellListPMG::~cellListPMG()
54 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55             
56 inline label cellListPMG::size() const
58     return nElmts_;
61 inline void cellListPMG::setSize(const label nElmts)
63     if( nElmts >= cellList::size() )
64     {
65         if( cellList::size() != 0 )
66         {
67             Info << "Resizing cells!" << endl;
68             cellList copy(label(1.5*nElmts));
69             for(label i=0;i<nElmts_;++i)
70                 copy[i].transfer(this->operator[](i));
71             
72             cellList::transfer(copy);
73         }
74         else
75         {
76             cellList::setSize(label(1.5*nElmts));
77         }
78     }
80     nElmts_ = nElmts;
83 inline void cellListPMG::clear()
85     nElmts_ = 0;
88 inline void cellListPMG::append(const cell& c)
90     const label i = nElmts_;
91     setSize(i+1);
92     this->operator[](i) = c;
95 inline cell& cellListPMG::newElmt(const label cI)
97     setSize(cI+1);
98     return this->operator[](cI);
101 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
103 inline void cellListPMG::operator=(const cellList& cls)
105     setSize(cls.size());
106     forAll(cls, cI)
107         this->operator[](cI) = cls[cI];
109     
110 inline Ostream& operator<<(Ostream& os, const cellListPMG& cls)
112     SubList<cell> c(cls, cls.nElmts_, 0);
113     
114     os << c;
115     return os;
118 inline Istream& operator>>(Istream& is, cellListPMG& cls)
120     cellList& cells = static_cast<cellList&>(cls);
121     is >> cells;
122     cls.nElmts_  = cells.size();
123     
124     return is;
127 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
129 } // End namespace Foam
131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //