fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / OpenFOAM / primitives / Lists / stringListOps.H
blob1b0530e82f569f5e5a555ca3690527557c20aa3a
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 InNamspace
26     Foam
28 Description
29     Operations on lists of strings.
31 SourceFiles
32     stringListOpsTemplates.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef stringListOps_H
37 #define stringListOps_H
39 #include "regExp.H"
40 #include "labelList.H"
41 #include "stringList.H"
42 #include "wordReList.H"
43 #include "wordReListMatcher.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
49     // single-string matches:
51     //- Return true if string matches one of the regular expressions
52     inline bool findStrings
53     (
54         const wordReListMatcher& matcher,
55         const std::string& str
56     )
57     {
58         return matcher.match(str);
59     }
61     // multi-string matches:
63     //- Return list indices for matching strings
64     template<class Matcher, class StringType>
65     labelList findMatchingStrings
66     (
67         const Matcher&,
68         const UList<StringType>&,
69         const bool invert=false
70     );
72     //- Return list indices for strings matching the regular expression
73     //  Template partial specialization of findMatchingStrings
74     template<class StringType>
75     labelList findStrings
76     (
77         const regExp& re,
78         const UList<StringType>& lst,
79         const bool invert=false
80     )
81     {
82         return findMatchingStrings(re, lst, invert);
83     }
85     //- Return list indices for strings matching the regular expression
86     //  Template partial specialization of findMatchingStrings
87     template<class StringType>
88     labelList findStrings
89     (
90         const char* rePattern,
91         const UList<StringType>& lst,
92         const bool invert=false
93     )
94     {
95         regExp rp(rePattern);
97         return findStrings(rp, lst, invert);
98     }
100     //- Return list indices for strings matching the regular expression
101     //  Template partial specialization of findMatchingStrings
102     template<class StringType>
103     labelList findStrings
104     (
105         const std::string& rePattern,
106         const UList<StringType>& lst,
107         const bool invert=false
108     )
109     {
110         regExp rp(rePattern);
111         return findMatchingStrings(rp, lst, invert);
112     }
114     //- Return list indices for strings matching the regular expression
115     //  Template partial specialization of findMatchingStrings
116     template<class StringType>
117     labelList findStrings
118     (
119         const wordRe& wre,
120         const UList<StringType>& lst,
121         const bool invert=false
122     )
123     {
124         return findMatchingStrings(wre, lst, invert);
125     }
128     //- Return list indices for strings matching one of the regular expression
129     //  Template partial specialization of findMatchingStrings
130     template<class StringType>
131     labelList findStrings
132     (
133         const wordReListMatcher& matcher,
134         const UList<StringType>& lst,
135         const bool invert=false
136     )
137     {
138         return findMatchingStrings(matcher, lst, invert);
139     }
141     // subsetting multi-string matches (similar to ListOp):
143     //- Extract elements of StringList when regular expression matches
144     //  optionally invert the match
145     //  eg, to extract all selected elements:
146     //    subsetMatchingStrings<regExp, stringList>(myRegExp, lst);
147     template<class Matcher, class StringListType>
148     StringListType subsetMatchingStrings
149     (
150         const Matcher&,
151         const StringListType&,
152         const bool invert=false
153     );
155     //- Extract elements of StringList when regular expression matches
156     //  Template partial specialization of subsetMatchingStrings
157     template<class StringListType>
158     StringListType subsetStrings
159     (
160         const regExp& re,
161         const StringListType& lst,
162         const bool invert=false
163     )
164     {
165         return subsetMatchingStrings(re, lst, invert);
166     }
168     //- Extract elements of StringList when regular expression matches
169     //  Template partial specialization of subsetMatchingStrings
170     template<class StringListType>
171     StringListType subsetStrings
172     (
173         const char* rePattern,
174         const StringListType& lst,
175         const bool invert=false
176     )
177     {
178         regExp rp(rePattern);
179         return subsetMatchingStrings(rp, lst, invert);
180     }
182     //- Extract elements of StringList when regular expression matches
183     //  Template partial specialization of subsetMatchingStrings
184     template<class StringListType>
185     StringListType subsetStrings
186     (
187         const std::string& rePattern,
188         const StringListType& lst,
189         const bool invert=false
190     )
191     {
192         regExp rp(rePattern);
193         return subsetMatchingStrings(rp, lst, invert);
194     }
196     //- Extract elements of StringList when regular expression matches
197     //  Template partial specialization of subsetMatchingStrings
198     template<class StringListType>
199     StringListType subsetStrings
200     (
201         const wordRe& wre,
202         const StringListType& lst,
203         const bool invert=false
204     )
205     {
206         return subsetMatchingStrings(wre, lst, invert);
207     }
209     //- Extract elements of StringList when regular expression matches
210     //  Template partial specialization of subsetMatchingStrings
211     template<class StringListType>
212     StringListType subsetStrings
213     (
214         const wordReListMatcher& matcher,
215         const StringListType& lst,
216         const bool invert=false
217     )
218     {
219         return subsetMatchingStrings(matcher, lst, invert);
220     }
223     //- Inplace extract elements of StringList when regular expression matches
224     //  optionally invert the match
225     //  eg, to extract all selected elements:
226     //    inplaceSubsetMatchingStrings<regExp, stringList>(myRegExp, lst);
227     template<class Matcher, class StringListType>
228     void inplaceSubsetMatchingStrings
229     (
230         const Matcher&,
231         StringListType&,
232         const bool invert=false
233     );
235     //- Inplace extract elements of StringList when regular expression matches
236     //  Template partial specialization of inplaceSubsetMatchingStrings
237     template<class StringListType>
238     void inplaceSubsetStrings
239     (
240         const regExp& re,
241         StringListType& lst,
242         const bool invert=false
243     )
244     {
245         inplaceSubsetMatchingStrings(re, lst, invert);
246     }
248     //- Inplace extract elements of StringList when regular expression matches
249     //  Template partial specialization of inplaceSubsetMatchingStrings
250     template<class StringListType>
251     void inplaceSubsetStrings
252     (
253         const char* rePattern,
254         StringListType& lst,
255         const bool invert=false
256     )
257     {
258         regExp rp(rePattern);
259         inplaceSubsetMatchingStrings(rp, lst, invert);
260     }
262     //- Inplace extract elements of StringList when regular expression matches
263     //  Template partial specialization of inplaceSubsetMatchingStrings
264     template<class StringListType>
265     void inplaceSubsetStrings
266     (
267         const std::string& rePattern,
268         StringListType& lst,
269         const bool invert=false
270     )
271     {
272         regExp rp(rePattern);
273         inplaceSubsetMatchingStrings(rp, lst, invert);
274     }
276     //- Inplace extract elements of StringList when regular expression matches
277     //  Template partial specialization of inplaceSubsetMatchingStrings
278     template<class StringListType>
279     void inplaceSubsetStrings
280     (
281         const wordRe& wre,
282         StringListType& lst,
283         const bool invert=false
284     )
285     {
286         inplaceSubsetMatchingStrings(wre, lst, invert);
287     }
289     //- Inplace extract elements of StringList when regular expression matches
290     //  Template partial specialization of inplaceSubsetMatchingStrings
291     template<class StringListType>
292     void inplaceSubsetStrings
293     (
294         const wordReListMatcher& matcher,
295         StringListType& lst,
296         const bool invert=false
297     )
298     {
299         inplaceSubsetMatchingStrings(matcher, lst, invert);
300     }
305 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
307 #ifdef NoRepository
308 #   include "stringListOpsTemplates.C"
309 #endif
311 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
313 #endif
315 // ************************************************************************* //