Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / helperClasses / sortEdgesIntoChains / sortEdgesIntoChains.H
blobc8139440f564921a587f783d2724ce3d538ab9be
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     sortEdgesIntoChains
27 Description
28     Creates boundary faces from a chain of open edges
30 SourceFiles
31     sortEdgesIntoChains.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef sortEdgesIntoChains_H
36 #define sortEdgesIntoChains_H
38 #include "DynList.H"
39 #include "labelList.H"
40 #include "edge.H"
41 #include "Map.H"
42 #include "boolList.H"
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                            Class sortEdgesIntoChains Declaration
49 \*---------------------------------------------------------------------------*/
51 class sortEdgesIntoChains
53     // Members
54         const DynList<edge>& bEdges_;
56         bool openEdges_;
58         Map<label> newNodeLabel_;
60         List<DynList<label> > edgesAtPoint_;
62         DynList<labelList> createdChains_;
64     // Private member functions
65         void createNodeLabels();
67         bool findPointsBelongingToTheChain
68         (
69             const label currPos,
70             boolList& chainEdges
71         ) const;
73         void shrinkEdges(const boolList& chainEdges);
75         void createChainFromEdges(const boolList& chainEdges);
77         void sortEdges();
79     public:
81         sortEdgesIntoChains
82         (
83             const DynList<edge>& bEdges
84         );
86         ~sortEdgesIntoChains();
88     // Member functions
90         //- a list of points which have not yet been resolved
91         const DynList<labelList>& sortedChains() const;
94 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
96 } // End namespace Foam
98 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
100 #endif
102 // ************************************************************************* //