ENH: relocate inplaceUniq (wordReList) into wordRes

This commit is contained in:
Mark Olesen
2017-05-22 14:59:05 +02:00
parent 667b885116
commit 9fef27cb7d
4 changed files with 37 additions and 34 deletions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd. \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -36,15 +36,12 @@ Foam::wordReList Foam::wordRes::uniq(const UList<wordRe>& input)
label count = 0; label count = 0;
forAll(input, i) forAll(input, i)
{ {
const wordRe& select = input[i]; const auto& select = input[i];
if if (select.isPattern() || uniqWord.insert(select))
(
select.isPattern()
|| uniqWord.insert(static_cast<const word&>(select))
)
{ {
retain[count++] = select; retain[count] = select;
++count;
} }
} }
@ -53,4 +50,27 @@ Foam::wordReList Foam::wordRes::uniq(const UList<wordRe>& input)
} }
void Foam::wordRes::inplaceUniq(wordReList& input)
{
wordHashSet uniqWord;
label count = 0;
forAll(input, i)
{
const auto& select = input[i];
if (select.isPattern() || uniqWord.insert(select))
{
if (count != i)
{
input[count] = input[i];
}
++count;
}
}
input.setSize(count);
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -78,6 +78,10 @@ public:
// No filtering is done on regular expressions. // No filtering is done on regular expressions.
static wordReList uniq(const UList<wordRe>& input); static wordReList uniq(const UList<wordRe>& input);
//- Inplace subset of wordReList with duplicate words filtered out.
// No filtering is done on regular expressions.
static void inplaceUniq(wordReList& input);
// Member Functions // Member Functions

View File

@ -2,7 +2,7 @@
========= | ========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd. \\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -26,6 +26,7 @@ License
#include "ensightWrite.H" #include "ensightWrite.H"
#include "Time.H" #include "Time.H"
#include "polyMesh.H" #include "polyMesh.H"
#include "wordRes.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -47,25 +48,6 @@ namespace functionObjects
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
void Foam::functionObjects::ensightWrite::uniqWords(wordReList& lst)
{
boolList retain(lst.size());
wordHashSet uniq;
forAll(lst, i)
{
const wordRe& select = lst[i];
retain[i] =
(
select.isPattern()
|| uniq.insert(static_cast<const word&>(select))
);
}
inplaceSubset(retain, lst);
}
int Foam::functionObjects::ensightWrite::process(const word& fieldName) int Foam::functionObjects::ensightWrite::process(const word& fieldName)
{ {
int state = 0; int state = 0;
@ -140,7 +122,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict)
if (dict.found("patches")) if (dict.found("patches"))
{ {
wordReList lst(dict.lookup("patches")); wordReList lst(dict.lookup("patches"));
uniqWords(lst); wordRes::inplaceUniq(lst);
writeOpts_.patchSelection(lst); writeOpts_.patchSelection(lst);
} }
@ -148,7 +130,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict)
if (dict.found("faceZones")) if (dict.found("faceZones"))
{ {
wordReList lst(dict.lookup("faceZones")); wordReList lst(dict.lookup("faceZones"));
uniqWords(lst); wordRes::inplaceUniq(lst);
writeOpts_.faceZoneSelection(lst); writeOpts_.faceZoneSelection(lst);
} }
@ -174,7 +156,7 @@ bool Foam::functionObjects::ensightWrite::read(const dictionary& dict)
// output fields // output fields
// //
dict.lookup("fields") >> selectFields_; dict.lookup("fields") >> selectFields_;
uniqWords(selectFields_); wordRes::inplaceUniq(selectFields_);
return true; return true;
} }

View File

@ -135,9 +135,6 @@ class ensightWrite
// Private Member Functions // Private Member Functions
//- Eliminate duplicate 'word' entries
static void uniqWords(wordReList&);
//- Ensight case handler //- Ensight case handler
ensightCase& ensCase() ensightCase& ensCase()
{ {