BUGFIX: Illegal use of uninitialised value (backport)
[foam-extend-3.2.git] / src / triSurface / tools / labelledTri / sortLabelledTri.H
blob8725bebc077a0581c555fb4469597625c3410302
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM 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 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::sortLabelledTri
28 Description
29     Helper class which when constructed with a triSurface
30     sorts the faces according to region number (or rather constructs a
31     mapping).
33 SourceFiles
34     sortLabelledTri.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef sortLabelledTri_H
39 #define sortLabelledTri_H
41 #include "labelList.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 class sortLabelledTri;
49 class triSurface;
51 /*---------------------------------------------------------------------------*\
52                          Class surfAndLabel Declaration
53 \*---------------------------------------------------------------------------*/
55 //- Hold surface and label
56 class surfAndLabel
58     const triSurface* surfPtr_;
60     label index_;
62     // Private Classes
64         //- scalar comparison function used for sorting
65         class less
66         {
67         public:
69             inline bool operator()
70             (
71                 const surfAndLabel& one,
72                 const surfAndLabel& two
73             ) const;
74         };
77 public:
79     friend class sortLabelledTri;
81     // Constructors
83         //- Construct null
84         surfAndLabel()
85         :
86             surfPtr_(NULL),
87             index_(-1)
88         {}
90         //- Construct from surface and index
91         surfAndLabel(const triSurface& surf, const label index)
92         :
93             surfPtr_(&surf),
94             index_(index)
95         {}
99 /*---------------------------------------------------------------------------*\
100                            Class sortLabelledTri Declaration
101 \*---------------------------------------------------------------------------*/
103 class sortLabelledTri
105     public List<surfAndLabel>
108 public:
110     // Constructors
112         //- Construct from surface, sorting the faces according to patch
113         sortLabelledTri(const triSurface&);
116     // Member Functions
118         // Access
120             //- Set the labelList to those of sorted point indices
121             void indices(labelList&) const;
123             //- Return the list of sorted point indices
124             labelList indices() const;
128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
130 } // End namespace Foam
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
134 #endif
136 // ************************************************************************* //