1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
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
13 the Free Software Foundation, either version 3 of the License, or
14 (at your 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
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
28 template<class Matcher, class StringType>
29 Foam::labelList Foam::findMatchingStrings
31 const Matcher& matcher,
32 const UList<StringType>& lst,
36 labelList indices(lst.size());
41 if (matcher.match(lst[elemI]) ? !invert : invert)
43 indices[nElem++] = elemI;
46 indices.setSize(nElem);
52 template<class Matcher, class StringListType>
53 StringListType Foam::subsetMatchingStrings
55 const Matcher& matcher,
56 const StringListType& lst,
61 StringListType newLst(lst.size());
63 // ensure consistent addressable size (eg, DynamicList)
64 newLst.setSize(lst.size());
69 if (matcher.match(lst[elemI]) ? !invert : invert)
71 newLst[nElem++] = lst[elemI];
74 newLst.setSize(nElem);
80 template<class Matcher, class StringListType>
81 void Foam::inplaceSubsetMatchingStrings
83 const Matcher& matcher,
91 if (matcher.match(lst[elemI]) ? !invert : invert)
93 lst[nElem++] = lst[elemI];
100 // ************************************************************************* //