Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 template<class Matcher, class StringType>
00029 Foam::labelList Foam::findMatchingStrings
00030 (
00031 const Matcher& matcher,
00032 const UList<StringType>& lst,
00033 const bool invert
00034 )
00035 {
00036 labelList indices(lst.size());
00037
00038 label nElem = 0;
00039 forAll(lst, elemI)
00040 {
00041 if (matcher.match(lst[elemI]) ? !invert : invert)
00042 {
00043 indices[nElem++] = elemI;
00044 }
00045 }
00046 indices.setSize(nElem);
00047
00048 return indices;
00049 }
00050
00051
00052 template<class Matcher, class StringListType>
00053 StringListType Foam::subsetMatchingStrings
00054 (
00055 const Matcher& matcher,
00056 const StringListType& lst,
00057 const bool invert
00058 )
00059 {
00060 StringListType newLst(lst.size());
00061
00062 label nElem = 0;
00063 forAll(lst, elemI)
00064 {
00065 if (matcher.match(lst[elemI]) ? !invert : invert)
00066 {
00067 newLst[nElem++] = lst[elemI];
00068 }
00069 }
00070 newLst.setSize(nElem);
00071
00072 return newLst;
00073 }
00074
00075
00076 template<class Matcher, class StringListType>
00077 void Foam::inplaceSubsetMatchingStrings
00078 (
00079 const Matcher& matcher,
00080 StringListType& lst,
00081 const bool invert
00082 )
00083 {
00084 label nElem = 0;
00085 forAll(lst, elemI)
00086 {
00087 if (matcher.match(lst[elemI]) ? !invert : invert)
00088 {
00089 lst[nElem++] = lst[elemI];
00090 }
00091 }
00092 lst.setSize(nElem);
00093 }
00094
00095
00096