Retrofitted functionality from our development line to improve error and warning
[OpenFOAM-1.6.x.git] / src / OpenFOAM / primitives / Lists / stringListOpsTemplates.C
blob6489658d531ffad6edddee5974bc8c0672143e6d
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
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 \*---------------------------------------------------------------------------*/
27 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
29 template<class Matcher, class StringType>
30 Foam::labelList Foam::findMatchingStrings
32     const Matcher& matcher,
33     const UList<StringType>& lst,
34     const bool invert
37     labelList indices(lst.size());
39     label nElem = 0;
40     forAll(lst, elemI)
41     {
42         if (matcher.match(lst[elemI]) ? !invert : invert)
43         {
44             indices[nElem++] = elemI;
45         }
46     }
47     indices.setSize(nElem);
49     return indices;
53 template<class Matcher, class StringListType>
54 StringListType Foam::subsetMatchingStrings
56     const Matcher& matcher,
57     const StringListType& lst,
58     const bool invert
61     StringListType newLst(lst.size());
63     label nElem = 0;
64     forAll(lst, elemI)
65     {
66         if (matcher.match(lst[elemI]) ? !invert : invert)
67         {
68             newLst[nElem++] = lst[elemI];
69         }
70     }
71     newLst.setSize(nElem);
73     return newLst;
77 template<class Matcher, class StringListType>
78 void Foam::inplaceSubsetMatchingStrings
80     const Matcher& matcher,
81     StringListType& lst,
82     const bool invert
85     label nElem = 0;
86     forAll(lst, elemI)
87     {
88         if (matcher.match(lst[elemI]) ? !invert : invert)
89         {
90             lst[nElem++] = lst[elemI];
91         }
92     }
93     lst.setSize(nElem);
97 // ************************************************************************* //