SortableListDRGEP.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2016 OpenFOAM Foundation
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::SortableListDRGEP
28
29Description
30 A list that is sorted upon construction or when explicitly requested
31 with the sort() method.
32
33SourceFiles
34 SortableListDRGEP.C
35
36\*---------------------------------------------------------------------------*/
37
38#ifndef SortableListDRGEP_H
39#define SortableListDRGEP_H
40
41#include "labelList.H"
42
43// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44
45namespace Foam
46{
47
48/*---------------------------------------------------------------------------*\
49 Class SortableListDRGEP Declaration
50\*---------------------------------------------------------------------------*/
51
52template <class Type>
54:
55 public List<Type>
56{
57 // Private data
58
59 //- Original indices
60 labelList indices_;
61
62
63public:
64
65 // Public classes
66
67 //- Less function class used by the sort function
68 class less
69 {
70 const UList<Type>& values_;
71
72 public:
74 less(const UList<Type>& values)
75 :
76 values_(values)
77 {}
79 bool operator()(const label a, const label b)
80 {
81 return values_[a] < values_[b];
82 }
83 };
84
85
86 // Constructors
87
88 //- Construct from List, sorting the elements. Starts with indices set
89 // to index in argument
90 explicit SortableListDRGEP(const List<Type>&);
91
92 //- Construct given size. Sort later on.
93 explicit SortableListDRGEP(const label size);
94
95 //- Construct given size and initial value. Sort later on.
96 SortableListDRGEP(const label size, const Type&);
97
98 //- Construct as copy.
100
101
102 // Member Functions
103
104 //- Return the list of sorted indices. Updated every sort.
105 const labelList& indices() const
106 {
107 return indices_;
108 }
109
110 //- Size the list. If grow can cause undefined indices (until next sort)
111 void setSize(const label);
112
113 //- Sort the list (if changed after construction time)
114 void sort();
115
116 //- Partial sort the list (if changed after construction time)
117 void partialSort(int M);
118
119 //- Sort the list (if changed after construction time)
120 void stableSort();
121
122
123 // Member Operators
124
126
127};
128
129
130// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
131
132} // End namespace Foam
133
134// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135
136#ifdef NoRepository
137 #include "SortableListDRGEP.C"
138#endif
139
140// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141
142#endif
143
144// ************************************************************************* //
#define M(I)
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: List.H:77
Less function class used by the sort function.
bool operator()(const label a, const label b)
less(const UList< Type > &values)
A list that is sorted upon construction or when explicitly requested with the sort() method.
const labelList & indices() const
Return the list of sorted indices. Updated every sort.
void stableSort()
Sort the list (if changed after construction time)
void partialSort(int M)
Partial sort the list (if changed after construction time)
void sort()
Sort the list (if changed after construction time)
void operator=(const SortableListDRGEP< Type > &)
void setSize(const label)
Size the list. If grow can cause undefined indices (until next sort)
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: UList.H:94
label size() const noexcept
The number of elements in the UList.
Definition: UListI.H:420
Namespace for OpenFOAM.
volScalarField & b
Definition: createFields.H:27