Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / containers / FRWGraph / FRWGraphI.H
blob6b08e63ecdbd3eaa2c72a2567e14910bb8706f70
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 \*---------------------------------------------------------------------------*/
26 template<class T, Foam::label width>
27 void Foam::FRWGraph<T, width>::checkIndex(const label i, const label j) const
29     if( (i < 0) || (i >= nRows_) )
30     {
31         FatalErrorIn
32         (
33             "void Foam::FRWGraph<T,width>::"
34             "checkIndex(const label i, const label j) const"
35         ) << "Row index " << i
36             << " is not in range " << 0
37             << " and " << nRows_ << abort(FatalError);
38     }
40     if( (j < 0) || (j >= width) )
41         FatalErrorIn
42         (
43             "void Foam::FRWGraph<T,width>::"
44             "checkIndex(const label i, const label j) const"
45         ) << "Column index " << j
46             << " is not in range " << 0
47             << " and " << width << abort(FatalError);
50 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
52 //- Construct null
53 template<class T, Foam::label width>
54 inline Foam::FRWGraph<T,width>::FRWGraph()
56     data_(),
57     nRows_(0)
60 //- Construct given size
61 template<class T, Foam::label width>
62 inline Foam::FRWGraph<T,width>::FRWGraph
64     const label s
67     data_(s * width),
68     nRows_(s)
72 //- Construct given size
73 template<class T, Foam::label width>
74 inline Foam::FRWGraph<T,width>::FRWGraph
76     const label s,
77     const T& t
80     data_(s * width, t),
81     nRows_(s)
84 template<class T, Foam::label width>
85 inline Foam::FRWGraph<T,width>::FRWGraph
87     const FRWGraph<T,width>& ol
90     data_(ol.data_),
91     nRows_(ol.nRows_)
94 template<class T, Foam::label width>
95 inline Foam::FRWGraph<T,width>::~FRWGraph()
99 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
101 template<class T, Foam::label width>
102 inline Foam::label Foam::FRWGraph<T,width>::size() const
104     return nRows_;
107 template<class T, Foam::label width>
108 inline Foam::label Foam::FRWGraph<T,width>::sizeOfRow(const label rowI) const
110     return width;
113 template<class T, Foam::label width>
114 inline void Foam::FRWGraph<T,width>::setSize(const label i)
116     data_.setSize(i * width);
117     nRows_ = i;
120 template<class T, Foam::label width>
121 inline void Foam::FRWGraph<T,width>::clear()
123     data_.clear();
124     nRows_ = 0;
127 template<class T, Foam::label width>
128 inline void Foam::FRWGraph<T,width>::appendFixedList
130     const FixedList<T, width>& l
133     forAll(l, elI)
134         data_.append(l[elI]);
135     ++nRows_;
138 template<class T, Foam::label width>
139 inline void Foam::FRWGraph<T,width>::setRow
141     const label rowI,
142     const FixedList<T, width>& l
145     const label start = rowI * width;
146     forAll(l, elI)
147         data_[start+elI] = l[elI];
150 template<class T, Foam::label width>
151 inline bool Foam::FRWGraph<T,width>::contains
153     const label rowI,
154     const T& e
155 ) const
157     const label start = rowI * width;
158     for(register label i=0;i<width;++i)
159         if( data_[start+i] == e )
160             return true;
162     return false;
165 template<class T, Foam::label width>
166 inline Foam::label Foam::FRWGraph<T,width>::containsAtPosition
168     const label rowI,
169     const T& e
170 ) const
172     const label start = rowI * width;
173     for(register label i=0;i<width;++i)
174         if( data_[start+i] == e )
175             return i;
177     return -1;
180 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
181 template<class T, Foam::label width>
182 inline const T& Foam::FRWGraph<T,width>::operator()
184     const label i,
185     const label j
186 ) const
188     #ifdef FULLDEBUG
189     checkIndex(i, j);
190     #endif
192     return data_[i * width + j];
195 template<class T, Foam::label width>
196 inline T& Foam::FRWGraph<T,width>::operator()
198     const label i, const label j
201     #ifdef FULLDEBUG
202     checkIndex(i, j);
203     #endif
205     return data_[i * width + j];
208 template<class T, Foam::label width>
209 inline void Foam::FRWGraph<T,width>::operator=
211     const FRWGraph<T, width>& l
214     data_ = l.data_;
215     nRows_ = l.nRows_;
219 // ************************************************************************* //