diff --git a/applications/test/dynamicLibrary/Test-dynamicLibrary.C b/applications/test/dynamicLibrary/Test-dynamicLibrary.C index 0e878a5616..c30c84a0c1 100644 --- a/applications/test/dynamicLibrary/Test-dynamicLibrary.C +++ b/applications/test/dynamicLibrary/Test-dynamicLibrary.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2020-2021 OpenCFD Ltd. + Copyright (C) 2020-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -46,8 +46,8 @@ int main(int argc, char *argv[]) profiling::disable(); // No profiling output argList::noBanner(); argList::noParallel(); + argList::noFunctionObjects(); argList::removeOption("case"); - argList::removeOption("noFunctionObjects"); argList::addBoolOption("no-close", "Skip dlclose"); argList::addBoolOption("quiet", "Disable verbosity"); diff --git a/applications/test/timeSelector/Test-timeSelector.C b/applications/test/timeSelector/Test-timeSelector.C index f3adeb3cba..52b48210df 100644 --- a/applications/test/timeSelector/Test-timeSelector.C +++ b/applications/test/timeSelector/Test-timeSelector.C @@ -63,7 +63,6 @@ int main(int argc, char *argv[]) argList::addNote("Test timeSelector and TimePaths"); timeSelector::addOptions(true, true); - argList::noLibs(); argList::noFunctionObjects(); argList::addOption("relative", "PATH", "Test relativePath"); diff --git a/applications/utilities/miscellaneous/foamHasLibrary/foamHasLibrary.C b/applications/utilities/miscellaneous/foamHasLibrary/foamHasLibrary.C index a087842d50..523f892b3d 100644 --- a/applications/utilities/miscellaneous/foamHasLibrary/foamHasLibrary.C +++ b/applications/utilities/miscellaneous/foamHasLibrary/foamHasLibrary.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2020-2021 OpenCFD Ltd. + Copyright (C) 2020-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -65,8 +65,8 @@ int main(int argc, char *argv[]) profiling::disable(); // No profiling output argList::noBanner(); argList::noParallel(); + argList::noFunctionObjects(); argList::removeOption("case"); - argList::removeOption("noFunctionObjects"); argList::addBoolOption ( "or", diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C index a2510f3086..1758e484af 100644 --- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C +++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C @@ -1014,7 +1014,9 @@ int main(int argc, char *argv[]) Time::controlDictName, args.rootPath(), args.caseName() - / ("processor" + Foam::name(proci)) + / ("processor" + Foam::name(proci)), + args.allowFunctionObjects(), + args.allowLibs() ) ); } diff --git a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C index 4e3968cd33..da63e26e21 100644 --- a/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C +++ b/applications/utilities/parallelProcessing/reconstructPar/reconstructPar.C @@ -244,7 +244,9 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/("processor" + Foam::name(proci)) + args.caseName()/("processor" + Foam::name(proci)), + args.allowFunctionObjects(), + args.allowLibs() ) ); } diff --git a/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C b/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C index 05f55248a7..7eedd53eaa 100644 --- a/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C +++ b/applications/utilities/parallelProcessing/reconstructParMesh/reconstructParMesh.C @@ -731,7 +731,9 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/("processor" + Foam::name(proci)) + args.caseName()/("processor" + Foam::name(proci)), + args.allowFunctionObjects(), + args.allowLibs() ) ); } diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C b/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C index fab7b60eb8..f666628618 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C +++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/foamToEnsight.C @@ -168,7 +168,6 @@ int main(int argc, char *argv[]) // Less frequently used - reduce some clutter argList::setAdvanced("decomposeParDict"); - argList::setAdvanced("noFunctionObjects"); argList::addVerboseOption("Additional verbosity"); diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C index 22f3bdd5c4..0e0b1b4f67 100644 --- a/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C +++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/foamToVTK.C @@ -268,7 +268,6 @@ int main(int argc, char *argv[]) // Less frequently used - reduce some clutter argList::setAdvanced("decomposeParDict"); - argList::setAdvanced("noFunctionObjects"); argList::addVerboseOption("Additional verbosity"); diff --git a/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C b/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C index a86ab41748..d68800a141 100644 --- a/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C +++ b/applications/utilities/postProcessing/lagrangian/particleTracks/particleTracks.C @@ -87,7 +87,6 @@ int main(int argc, char *argv[]) // Less frequently used - reduce some clutter argList::setAdvanced("decomposeParDict"); - argList::setAdvanced("noFunctionObjects"); argList::addOption ( diff --git a/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C b/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C index e08b94f232..c2d0a56a37 100644 --- a/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C +++ b/applications/utilities/postProcessing/miscellaneous/profilingSummary/profilingSummary.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2017-2020 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -100,7 +100,9 @@ int main(int argc, char *argv[]) ( Time::controlDictName, args.rootPath(), - args.caseName()/("processor" + Foam::name(proci)) + args.caseName()/("processor" + Foam::name(proci)), + args.allowFunctionObjects(), + args.allowLibs() ) ); } diff --git a/applications/utilities/preProcessing/setExprBoundaryFields/setExprBoundaryFields.C b/applications/utilities/preProcessing/setExprBoundaryFields/setExprBoundaryFields.C index 6116871109..6b96e1cd16 100644 --- a/applications/utilities/preProcessing/setExprBoundaryFields/setExprBoundaryFields.C +++ b/applications/utilities/preProcessing/setExprBoundaryFields/setExprBoundaryFields.C @@ -56,6 +56,7 @@ using namespace Foam; int main(int argc, char *argv[]) { + // Normally without functionObjects, with -withFunctionObjects to enable argList::noFunctionObjects(true); // No -constant, no special treatment for 0/ diff --git a/applications/utilities/preProcessing/setExprFields/setExprFields.C b/applications/utilities/preProcessing/setExprFields/setExprFields.C index 71019ca540..d662325998 100644 --- a/applications/utilities/preProcessing/setExprFields/setExprFields.C +++ b/applications/utilities/preProcessing/setExprFields/setExprFields.C @@ -494,6 +494,7 @@ void evaluate int main(int argc, char *argv[]) { + // Normally without functionObjects, with -withFunctionObjects to enable argList::noFunctionObjects(true); // No -constant, no special treatment for 0/ @@ -741,7 +742,7 @@ int main(int argc, char *argv[]) ); } - if (args.found("withFunctionObjects")) + if (args.allowFunctionObjects()) { runTime.functionObjects().start(); } diff --git a/applications/utilities/surface/surfaceMeshExtract/surfaceMeshExtract.C b/applications/utilities/surface/surfaceMeshExtract/surfaceMeshExtract.C index 67caa47ee9..cd9c96f667 100644 --- a/applications/utilities/surface/surfaceMeshExtract/surfaceMeshExtract.C +++ b/applications/utilities/surface/surfaceMeshExtract/surfaceMeshExtract.C @@ -120,7 +120,6 @@ int main(int argc, char *argv[]) // Less frequently used - reduce some clutter argList::setAdvanced("decomposeParDict"); - argList::setAdvanced("noFunctionObjects"); argList::addArgument("output", "The output surface file"); diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index 20879ec959..d83ba735f2 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -535,25 +535,15 @@ Foam::Time::Time // * '-withFunctionObjects' exists and used = enable // * '-noFunctionObjects' exists and used = disable // * default: no functions if there is no way to enable/disable them - if - ( - argList::validOptions.found("withFunctionObjects") - ? args.found("withFunctionObjects") - : argList::validOptions.found("noFunctionObjects") - ? !args.found("noFunctionObjects") - : false - ) + if (enableFunctionObjects && args.allowFunctionObjects()) { - if (enableFunctionObjects) - { - functionObjects_.on(); - } + functionObjects_.on(); } // Libraries // // * enable by default unless '-no-libs' option was used - if (enableLibs && !args.found("no-libs")) + if (enableLibs && args.allowLibs()) { libs_.open("libs", controlDict_); } diff --git a/src/OpenFOAM/db/error/messageStream.C b/src/OpenFOAM/db/error/messageStream.C index 064a95ea87..b810fba54c 100644 --- a/src/OpenFOAM/db/error/messageStream.C +++ b/src/OpenFOAM/db/error/messageStream.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2017-2021 OpenCFD Ltd. + Copyright (C) 2017-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -261,7 +261,7 @@ Foam::OSstream& Foam::messageStream::operator() functionName, sourceFileName, sourceFileLineNumber, - ioStream.name(), + ioStream.relativeName(), ioStream.lineNumber(), -1 // No known endLineNumber ); diff --git a/src/OpenFOAM/db/error/messageStream.H b/src/OpenFOAM/db/error/messageStream.H index cadd11688d..36da124720 100644 --- a/src/OpenFOAM/db/error/messageStream.H +++ b/src/OpenFOAM/db/error/messageStream.H @@ -50,8 +50,8 @@ SourceFiles \*---------------------------------------------------------------------------*/ -#ifndef messageStream_H -#define messageStream_H +#ifndef Foam_messageStream_H +#define Foam_messageStream_H #include "label.H" #include "string.H" diff --git a/src/OpenFOAM/global/argList/argList.C b/src/OpenFOAM/global/argList/argList.C index 3fdedbb473..4a766fe4e2 100644 --- a/src/OpenFOAM/global/argList/argList.C +++ b/src/OpenFOAM/global/argList/argList.C @@ -82,8 +82,14 @@ Foam::argList::initValidTables::initValidTables() ( "lib", "name", - "Additional library or library list to load" - " (can be used multiple times)", + "Additional library or library list to load." + " (Can be used multiple times)", + true // advanced option + ); + argList::addBoolOption + ( + "no-libs", + "Disable use of the controlDict 'libs' entry", true // advanced option ); @@ -483,8 +489,8 @@ void Foam::argList::noFunctionObjects(bool addWithOption) argList::addBoolOption ( "withFunctionObjects", - "Execute functionObjects", - true // advanced option + "Execute functionObjects" + // An advanced option, but seldom used so expose it more ); } } @@ -1755,6 +1761,32 @@ Foam::argList::~argList() } +// * * * * * * * * * * * * * * * Capabilities * * * * * * * * * * * * * * * // + +bool Foam::argList::allowFunctionObjects() const +{ + if (validOptions.found("withFunctionObjects")) + { + // '-withFunctionObjects' is available and explicitly enabled + return options_.found("withFunctionObjects"); + } + else if (validOptions.found("noFunctionObjects")) + { + // '-noFunctionObjects' is available and not explicitly disabled + return !options_.found("noFunctionObjects"); + } + + // Disallow functions if there is no way to enable/disable them + return false; +} + + +bool Foam::argList::allowLibs() const +{ + return !options_.found("no-libs"); +} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::label Foam::argList::count(const UList& optionNames) const diff --git a/src/OpenFOAM/global/argList/argList.H b/src/OpenFOAM/global/argList/argList.H index 02f3c468fc..bbf4f0f6fb 100644 --- a/src/OpenFOAM/global/argList/argList.H +++ b/src/OpenFOAM/global/argList/argList.H @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation - Copyright (C) 2016-2021 OpenCFD Ltd. + Copyright (C) 2016-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -382,6 +382,15 @@ public: //- Modify the verbose flag inline int verbose(const int level) noexcept; + //- The controlDict 'functions' entry is allowed to be used. + // There must be a command-line option to enable/disable + // (-withFunctionObjects, -noFunctionObjects) + // and has not been explicitly disabled + bool allowFunctionObjects() const; + + //- The controlDict 'libs' entry is allowed to be used. + //- (eg, has not been disabled by the -no-libs option) + bool allowLibs() const; //- Mutable access to the loaded dynamic libraries inline dlLibraryTable& libs() const noexcept;