Moving cfMesh into place. Updated contibutors list
[foam-extend-3.2.git] / src / mesh / cfMesh / meshLibrary / utilities / containers / subGraph / subGraphI.H
blob0ac33821eca1f04ba31337545174bd2e2ead9756
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 namespace Foam
29 template<class graphType>
30 inline void Foam::subGraph<graphType>::checkIndex(const label i) const
32     if( (i < 0) || (i >= size_) )
33     {
34         FatalErrorIn
35         (
36             "void Foam::subGraph<graphType>::"
37             "checkIndex(const label i) const"
38         ) << "Row index " << i
39             << " is not in range " << Foam::label(0)
40             << " and " << size_ << abort(FatalError);
41     }
44 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
46 template<class graphType>
47 inline Foam::subGraph<graphType>::subGraph
49     graphType& g,
50     const label start,
51     const label size
54     data_(g),
55     start_(start),
56     size_(size)
60 template<class graphType>
61 inline Foam::subGraph<graphType>::subGraph
63     const subGraph<graphType>& ol
66     data_(ol.data_),
67     start_(ol.start_),
68     size_(ol.size_)
72 template<class graphType>
73 inline Foam::subGraph<graphType>::~subGraph()
78 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
80 template<class graphType>
81 inline Foam::label Foam::subGraph<graphType>::size() const
83     return size_;
86 template<class graphType>
87 inline Foam::label Foam::subGraph<graphType>::sizeOfRow(const label rowI) const
89     return data_.sizeOfRow(start_+rowI);
92 template<class graphType>
93 inline void Foam::subGraph<graphType>::append(const label rowI, const label el)
95     data_.append(start_+rowI, el);
98 template<class graphType>
99 inline void Foam::subGraph<graphType>::appendIfNotIn
101     const label rowI,
102     const label el
105     data_.appendIfNotIn(start_+rowI, el);
108 template<class graphType>
109 inline bool Foam::subGraph<graphType>::contains
111     const label rowI,
112     const label e
113 ) const
115     return data_.contains(start_+rowI, e);
118 template<class graphType>
119 inline Foam::label Foam::subGraph<graphType>::containsAtPosition
121     const label rowI,
122     const label e
123 ) const
125     return data_.containsAtPosition(start_+rowI, e);
128 // * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
130 template<class graphType>
131 inline Foam::label Foam::subGraph<graphType>::operator()
133     const label i,
134     const label j
135 ) const
137     # ifdef FULLDEBUG
138     checkIndex(i);
139     # endif
140     
141     return data_(start_+i, j);
144 template<class graphType>
145 inline Foam::label& Foam::subGraph<graphType>::operator()
147     const label i,
148     const label j
151     return data_(start_+i, j);
155 template<class graphType>
156 inline const Foam::graphRow<const graphType>
157 Foam::subGraph<graphType>::operator[]
159     const label i
160 ) const
162     return data_[start_+i];
165 template<class graphType>
166 inline Foam::graphRow<graphType>
167 Foam::subGraph<graphType>::operator[](const label i)
169     return data_[start_+i];
172 template<class graphType>
173 inline Foam::Ostream& operator<<
175     Foam::Ostream& os,
176     const Foam::subGraph<graphType>& sg
179     os << sg.size() << "\n" << "(";
180     for(Foam::label i=0;i<sg.size();++i)
181     {
182         os << "\n" << sg.sizeOfRow(i) << "(";
183         for(Foam::label j=0;j<sg.sizeOfRow(i);++j)
184         {
185             if( j > 0 ) os << " ";
186             
187             os << sg(i, j);
188         }
189         
190         os << ")";
191     }
192     
193     os << "\n" << ")";
195     return os;
198 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
200 } // End namespace Foam
202 // ************************************************************************* //