From 75f13e18909875a09ce2ff271c42be768e790598 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 14 Dec 2020 14:23:54 +0100 Subject: [PATCH] ENH: expose fileOperation::sortTimes as public --- .../fileOperation/fileOperation.C | 85 ++++++++++--------- .../fileOperation/fileOperation.H | 14 ++- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C index fa5345096d7..99a5ca1af36 100644 --- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C +++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C @@ -179,63 +179,51 @@ static bool parseProcsNumRange } // End anonymous namespace -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -Foam::fileMonitor& Foam::fileOperation::monitor() const -{ - if (!monitorPtr_) - { - monitorPtr_.reset - ( - new fileMonitor - ( - regIOobject::fileModificationChecking == IOobject::inotify - || regIOobject::fileModificationChecking == IOobject::inotifyMaster - ) - ); - } - return *monitorPtr_; -} +// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // - -Foam::instantList Foam::fileOperation::sortTimes +Foam::instantList +Foam::fileOperation::sortTimes ( - const fileNameList& dirNames, + const fileNameList& dirEntries, const word& constantName ) { - // Initialise instant list - instantList times(dirNames.size() + 1); - label nTimes = 0; - // Check for "constant" bool haveConstant = false; - for (const fileName& dirName : dirNames) + + if (!constantName.empty()) { - if (dirName == constantName) + for (const fileName& dirName : dirEntries) { - haveConstant = true; - times[nTimes].value() = 0; - times[nTimes].name() = constantName; - ++nTimes; - break; + if (dirName == constantName) + { + haveConstant = true; + break; + } } } - // Read and parse all the entries in the directory - for (const fileName& dirName : dirNames) + instantList times(dirEntries.size() + 1); + label nTimes = 0; + + if (haveConstant) { - scalar timeValue; - if (readScalar(dirName, timeValue)) + times[nTimes].value() = 0; + times[nTimes].name() = constantName; + ++nTimes; + } + + // Parse directory entries for scalar values + for (const fileName& dirName : dirEntries) + { + if (readScalar(dirName, times[nTimes].value())) { - times[nTimes].value() = timeValue; times[nTimes].name() = dirName; ++nTimes; } } - // Reset the length of the times list - times.setSize(nTimes); + times.resize(nTimes); if (haveConstant) { @@ -246,13 +234,32 @@ Foam::instantList Foam::fileOperation::sortTimes } else if (nTimes > 1) { - std::sort(×[0], times.end(), instant::less()); + std::sort(times.begin(), times.end(), instant::less()); } return times; } +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +Foam::fileMonitor& Foam::fileOperation::monitor() const +{ + if (!monitorPtr_) + { + monitorPtr_.reset + ( + new fileMonitor + ( + regIOobject::fileModificationChecking == IOobject::inotify + || regIOobject::fileModificationChecking == IOobject::inotifyMaster + ) + ); + } + return *monitorPtr_; +} + + void Foam::fileOperation::mergeTimes ( const instantList& extraTimes, diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H index 7fa6fb93487..412c22ef866 100644 --- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H +++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H @@ -131,9 +131,6 @@ protected: //- Get or create fileMonitor singleton fileMonitor& monitor() const; - //- Sort directory entries according to time value - static instantList sortTimes(const fileNameList&, const word&); - //- Merge two times static void mergeTimes ( @@ -225,6 +222,17 @@ public: virtual ~fileOperation() = default; + // Static Functions + + //- Sort directory entries according to time value, + // with "constant" appearing first (if it exists) + static instantList sortTimes + ( + const fileNameList& dirEntries, + const word& constantName = "constant" + ); + + // Member Functions //- Distributed roots (parallel run) -- GitLab