mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: add prescan handling of -debug-switch etc
- allows use of registered switches before startup of UPstream etc.
This commit is contained in:
@ -123,15 +123,12 @@ int main(int argc, char *argv[])
|
|||||||
argList::addDryRunOption("Just for testing");
|
argList::addDryRunOption("Just for testing");
|
||||||
argList::addVerboseOption("Increase verbosity");
|
argList::addVerboseOption("Increase verbosity");
|
||||||
|
|
||||||
// Check -verbose before initialisation
|
|
||||||
UPstream::debug = argList::verbose(argc, argv);
|
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
|
|
||||||
Pout<< "command-line ("
|
Pout<< "command-line ("
|
||||||
<< args.options().size() << " options, "
|
<< args.options().size() << " options, "
|
||||||
<< args.args().size() << " args)" << nl
|
<< args.args().size() << " args)" << nl
|
||||||
<< " " << args.commandLine().c_str() << nl << nl;
|
<< " " << args.commandLine().data() << nl << nl;
|
||||||
|
|
||||||
Pout<< "rootPath: " << args.rootPath() << nl
|
Pout<< "rootPath: " << args.rootPath() << nl
|
||||||
<< "globalCase: " << args.globalCaseName() << nl
|
<< "globalCase: " << args.globalCaseName() << nl
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2022-2023 OpenCFD Ltd.
|
Copyright (C) 2022-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -67,10 +67,6 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
argList::noBanner();
|
argList::noBanner();
|
||||||
argList::noCheckProcessorDirectories();
|
argList::noCheckProcessorDirectories();
|
||||||
argList::addVerboseOption("Set UPstream::debug level");
|
|
||||||
|
|
||||||
// Check -verbose before initialisation
|
|
||||||
UPstream::debug = argList::verbose(argc, argv);
|
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2022-2023 OpenCFD Ltd.
|
Copyright (C) 2022-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -66,7 +66,6 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
argList::noBanner();
|
argList::noBanner();
|
||||||
argList::noCheckProcessorDirectories();
|
argList::noCheckProcessorDirectories();
|
||||||
argList::addVerboseOption("Set UPstream::debug level");
|
|
||||||
argList::addBoolOption("info", "information");
|
argList::addBoolOption("info", "information");
|
||||||
argList::addBoolOption("print-tree", "Report tree(s) as graph");
|
argList::addBoolOption("print-tree", "Report tree(s) as graph");
|
||||||
argList::addBoolOption("comm-split", "Test simple comm split");
|
argList::addBoolOption("comm-split", "Test simple comm split");
|
||||||
@ -74,9 +73,6 @@ int main(int argc, char *argv[])
|
|||||||
argList::addBoolOption("host-comm", "Test Pstream host-comm");
|
argList::addBoolOption("host-comm", "Test Pstream host-comm");
|
||||||
argList::addBoolOption("host-broadcast", "Test host-base broadcasts");
|
argList::addBoolOption("host-broadcast", "Test host-base broadcasts");
|
||||||
|
|
||||||
// Check -verbose before initialisation
|
|
||||||
UPstream::debug = argList::verbose(argc, argv);
|
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
|
|
||||||
const bool optPrintTree = args.found("print-tree");
|
const bool optPrintTree = args.found("print-tree");
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019-2023 OpenCFD Ltd.
|
Copyright (C) 2019-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -125,13 +125,16 @@ int main(int argc, char *argv[])
|
|||||||
argList::addVerboseOption("Set UPstream::debug level");
|
argList::addVerboseOption("Set UPstream::debug level");
|
||||||
|
|
||||||
// Check -verbose before initialisation
|
// Check -verbose before initialisation
|
||||||
|
if (!UPstream::debug)
|
||||||
|
{
|
||||||
UPstream::debug = argList::verbose(argc, argv);
|
UPstream::debug = argList::verbose(argc, argv);
|
||||||
|
}
|
||||||
|
|
||||||
startMPI();
|
startMPI();
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
|
|
||||||
Pout<< message().c_str();
|
Pout<< message().data();
|
||||||
|
|
||||||
stopMPI();
|
stopMPI();
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2022-2023 OpenCFD Ltd.
|
Copyright (C) 2022-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -44,19 +44,15 @@ using namespace Foam;
|
|||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argList::noFunctionObjects();
|
argList::noFunctionObjects();
|
||||||
argList::addVerboseOption("Set UPstream::debug level");
|
|
||||||
argList::addBoolOption("comm-graph", "Test simple graph communicator");
|
argList::addBoolOption("comm-graph", "Test simple graph communicator");
|
||||||
argList::addNote
|
argList::addNote
|
||||||
(
|
(
|
||||||
"Create graph of OpenFOAM mesh connections"
|
"Create graph of OpenFOAM mesh connections"
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check -verbose before initialisation
|
|
||||||
UPstream::debug = argList::verbose(argc, argv);
|
|
||||||
|
|
||||||
#include "setRootCase.H"
|
#include "setRootCase.H"
|
||||||
|
|
||||||
if (!Pstream::parRun())
|
if (!UPstream::parRun())
|
||||||
{
|
{
|
||||||
FatalErrorInFunction
|
FatalErrorInFunction
|
||||||
<< "Only meaningful in parallel"
|
<< "Only meaningful in parallel"
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2015-2024 OpenCFD Ltd.
|
Copyright (C) 2015-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -916,6 +916,8 @@ Foam::argList::argList
|
|||||||
// Pre-scan for some options needed for initial setup:
|
// Pre-scan for some options needed for initial setup:
|
||||||
// -fileHandler (takes an argument)
|
// -fileHandler (takes an argument)
|
||||||
// -mpi-threads (bool option)
|
// -mpi-threads (bool option)
|
||||||
|
// -debug-switch, -info-switch, -opt-switch
|
||||||
|
// so their values can also influence the initial setup
|
||||||
//
|
//
|
||||||
// Also handle -dry-run and -verbose counting
|
// Also handle -dry-run and -verbose counting
|
||||||
// (it is left to the application to decide what to do with them).
|
// (it is left to the application to decide what to do with them).
|
||||||
@ -963,6 +965,53 @@ Foam::argList::argList
|
|||||||
emitErrorMessage = true;
|
emitErrorMessage = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (strcmp(optName, "debug-switch") == 0)
|
||||||
|
{
|
||||||
|
// The '-debug-switch' option:
|
||||||
|
// change registered debug switch
|
||||||
|
if (argi < argc-1)
|
||||||
|
{
|
||||||
|
++argi;
|
||||||
|
debug::debugObjects()
|
||||||
|
.setNamedValue(argv[argi], 1); // silent
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// emit error on the second pass
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(optName, "info-switch") == 0)
|
||||||
|
{
|
||||||
|
// The '-info-switch' option:
|
||||||
|
// change registered info switch
|
||||||
|
if (argi < argc-1)
|
||||||
|
{
|
||||||
|
++argi;
|
||||||
|
DetailInfo << "info-switch ";
|
||||||
|
debug::infoObjects()
|
||||||
|
.setNamedValue(argv[argi], 1); // silent
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// emit error on the second pass
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strcmp(optName, "opt-switch") == 0)
|
||||||
|
{
|
||||||
|
// The '-opt-switch' option:
|
||||||
|
// change registered optimisation switch
|
||||||
|
if (argi < argc-1)
|
||||||
|
{
|
||||||
|
++argi;
|
||||||
|
DetailInfo << "opt-switch ";
|
||||||
|
debug::optimisationObjects()
|
||||||
|
.setNamedValue(argv[argi], 1); // silent
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// emit error on the second pass
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (validParOptions.contains(optName))
|
else if (validParOptions.contains(optName))
|
||||||
{
|
{
|
||||||
// Contains a parallel run option
|
// Contains a parallel run option
|
||||||
@ -977,8 +1026,6 @@ Foam::argList::argList
|
|||||||
Info<< nl
|
Info<< nl
|
||||||
<< "Error: option '-" << optName
|
<< "Error: option '-" << optName
|
||||||
<< "' requires an argument" << nl << nl;
|
<< "' requires an argument" << nl << nl;
|
||||||
|
|
||||||
//NO: UPstream::exit(1); // works for serial and parallel
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1102,26 +1149,26 @@ Foam::argList::argList
|
|||||||
else if (strcmp(optName, "debug-switch") == 0)
|
else if (strcmp(optName, "debug-switch") == 0)
|
||||||
{
|
{
|
||||||
// The '-debug-switch' option:
|
// The '-debug-switch' option:
|
||||||
// change registered debug switch
|
// dryrun reporting only (already set above)
|
||||||
DetailInfo << "debug-switch ";
|
DetailInfo << "debug-switch ";
|
||||||
debug::debugObjects()
|
debug::debugObjects()
|
||||||
.setNamedValue(args_[argi], 1, true);
|
.setNamedValue(args_[argi], 1, true, true); // dryrun
|
||||||
}
|
}
|
||||||
else if (strcmp(optName, "info-switch") == 0)
|
else if (strcmp(optName, "info-switch") == 0)
|
||||||
{
|
{
|
||||||
// The '-info-switch' option:
|
// The '-info-switch' option:
|
||||||
// change registered info switch
|
// dryrun reporting only (already set above)
|
||||||
DetailInfo << "info-switch ";
|
DetailInfo << "info-switch ";
|
||||||
debug::infoObjects()
|
debug::infoObjects()
|
||||||
.setNamedValue(args_[argi], 1, true);
|
.setNamedValue(args_[argi], 1, true, true); // dryrun
|
||||||
}
|
}
|
||||||
else if (strcmp(optName, "opt-switch") == 0)
|
else if (strcmp(optName, "opt-switch") == 0)
|
||||||
{
|
{
|
||||||
// The '-opt-switch' option:
|
// The '-opt-switch' option:
|
||||||
// change registered optimisation switch
|
// dryrun reporting only (already set above)
|
||||||
DetailInfo << "opt-switch ";
|
DetailInfo << "opt-switch ";
|
||||||
debug::optimisationObjects()
|
debug::optimisationObjects()
|
||||||
.setNamedValue(args_[argi], 1, true);
|
.setNamedValue(args_[argi], 1, true, true); // dryrun
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
\\ / A nd | www.openfoam.com
|
\\ / A nd | www.openfoam.com
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2019-2022 OpenCFD Ltd.
|
Copyright (C) 2019-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -38,13 +38,17 @@ License
|
|||||||
void Foam::simpleObjectRegistry::setValues
|
void Foam::simpleObjectRegistry::setValues
|
||||||
(
|
(
|
||||||
const dictionary& dict,
|
const dictionary& dict,
|
||||||
bool report
|
bool verbose,
|
||||||
|
bool dryrun
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Report enables output, but respect DetailInfo state as well.
|
// Report enables output, but respect DetailInfo state as well.
|
||||||
// The local log variable captures this logic.
|
verbose = (verbose && Foam::infoDetailLevel > 0);
|
||||||
|
|
||||||
const bool log = (report && Foam::infoDetailLevel > 0);
|
if (dryrun && !verbose)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (const entry& dEntry : dict)
|
for (const entry& dEntry : dict)
|
||||||
{
|
{
|
||||||
@ -52,10 +56,24 @@ void Foam::simpleObjectRegistry::setValues
|
|||||||
|
|
||||||
simpleObjectRegistryEntry* objPtr = this->find(name);
|
simpleObjectRegistryEntry* objPtr = this->find(name);
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
if (objPtr)
|
if (objPtr)
|
||||||
{
|
{
|
||||||
Log << " " << dEntry << nl;
|
Info<< " " << dEntry << nl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Info<< " " << name << " (unregistered)" << nl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dryrun)
|
||||||
|
{
|
||||||
|
// Nothing else to do
|
||||||
|
}
|
||||||
|
else if (objPtr)
|
||||||
|
{
|
||||||
const List<simpleRegIOobject*>& objects = *objPtr;
|
const List<simpleRegIOobject*>& objects = *objPtr;
|
||||||
|
|
||||||
OCharStream os;
|
OCharStream os;
|
||||||
@ -85,66 +103,88 @@ void Foam::simpleObjectRegistry::setValues
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Log << " " << name << " (unregistered)" << nl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::simpleObjectRegistry::setNamedValue
|
void Foam::simpleObjectRegistry::setNamedValue
|
||||||
(
|
(
|
||||||
std::string name,
|
const std::string_view name,
|
||||||
int val,
|
int val,
|
||||||
bool report
|
bool verbose,
|
||||||
|
bool dryrun
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// Report enables output, but respect DetailInfo state as well.
|
// Respect DetailInfo state
|
||||||
// The local log variable captures this logic.
|
verbose = (verbose && Foam::infoDetailLevel > 0);
|
||||||
|
|
||||||
const bool log = (report && Foam::infoDetailLevel > 0);
|
if (dryrun && !verbose)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
token tok(static_cast<label>(val));
|
token tok(static_cast<label>(val));
|
||||||
|
|
||||||
// Handle name=value
|
// Handle name=value,
|
||||||
|
// treating 'name=' like 'name' (ie, default value)
|
||||||
|
|
||||||
const auto eq = name.find('=');
|
const auto eq = name.find('=');
|
||||||
|
std::string_view objName = name;
|
||||||
|
std::string_view param;
|
||||||
|
std::string key;
|
||||||
|
|
||||||
if (eq != std::string::npos)
|
if (eq != std::string_view::npos)
|
||||||
{
|
{
|
||||||
string strval(name.substr(eq+1));
|
key = name.substr(0, eq);
|
||||||
name.erase(eq); // Truncate the name
|
param = name.substr(eq+1);
|
||||||
|
objName = key;
|
||||||
|
}
|
||||||
|
|
||||||
// Treat 'name=' like 'name' (ie, default value)
|
simpleObjectRegistryEntry* objPtr = this->find(objName.data());
|
||||||
if (strval.length())
|
|
||||||
|
// Fail early
|
||||||
|
if (!objPtr)
|
||||||
|
{
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
Info<< objName.data() << " (unregistered)" << nl;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!param.empty())
|
||||||
{
|
{
|
||||||
float fvalue(0);
|
float fvalue(0);
|
||||||
|
|
||||||
if (Foam::readInt(strval, val))
|
if (Foam::readInt(param.data(), val))
|
||||||
{
|
{
|
||||||
// Parses as int
|
// Parses as int
|
||||||
tok = static_cast<label>(val);
|
tok = static_cast<label>(val);
|
||||||
}
|
}
|
||||||
else if (Foam::readFloat(strval, fvalue))
|
else if (Foam::readFloat(param.data(), fvalue))
|
||||||
{
|
{
|
||||||
// Parses as float
|
// Parses as float
|
||||||
tok = fvalue;
|
tok = fvalue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Accept 'name=string' for named enums,
|
// Accept 'name=string' for named enums
|
||||||
tok = std::move(strval);
|
tok = Foam::string(param.data(), param.size());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
simpleObjectRegistryEntry* objPtr = this->find(name.c_str());
|
|
||||||
|
|
||||||
if (objPtr)
|
|
||||||
{
|
{
|
||||||
Log << name.c_str() << '=' << tok << nl;
|
Info<< objName.data() << '=' << tok << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dryrun)
|
||||||
|
{
|
||||||
|
// Nothing else to do
|
||||||
|
}
|
||||||
|
else if (objPtr)
|
||||||
|
{
|
||||||
// The generic interface requires an Istream.
|
// The generic interface requires an Istream.
|
||||||
ITstream is(tokenList(Foam::one{}, std::move(tok)));
|
ITstream is(tokenList(Foam::one{}, std::move(tok)));
|
||||||
|
|
||||||
@ -156,10 +196,6 @@ void Foam::simpleObjectRegistry::setNamedValue
|
|||||||
obj->readData(is);
|
obj->readData(is);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Log << name.c_str() << " (unregistered)" << nl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2012-2016 OpenFOAM Foundation
|
Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||||
Copyright (C) 2019-2023 OpenCFD Ltd.
|
Copyright (C) 2019-2025 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -101,21 +101,39 @@ public:
|
|||||||
|
|
||||||
//- Set values (invoke callbacks) from dictionary entries
|
//- Set values (invoke callbacks) from dictionary entries
|
||||||
// Reporting honours the infoDetailLevel
|
// Reporting honours the infoDetailLevel
|
||||||
void setValues(const dictionary& dict, bool report=false);
|
void setValues
|
||||||
|
(
|
||||||
|
const dictionary& dict,
|
||||||
|
//! Report changes to Info (respects infoDetailLevel)
|
||||||
|
bool verbose = false,
|
||||||
|
//! Report requested changes only, but do not effect them
|
||||||
|
bool dryrun = false
|
||||||
|
);
|
||||||
|
|
||||||
//- Set named value, but also handle embedded 'name=value' syntax
|
//- Set named value, but also handle embedded 'name=value' syntax
|
||||||
// Treats 'name=' and 'name' identically.
|
// Treats 'name=' and 'name' identically.
|
||||||
//
|
// Also accepts a floating point value (and even strings),
|
||||||
// Will also accept a floating point value, but the called objects
|
// but the called objects need to handle those.
|
||||||
// need to handle that.
|
void setNamedValue
|
||||||
// Reporting honours the infoDetailLevel
|
(
|
||||||
void setNamedValue(std::string name, int val, bool report=false);
|
const std::string_view name,
|
||||||
|
int val,
|
||||||
|
//! Report changes to Info (respects infoDetailLevel)
|
||||||
|
bool verbose = false,
|
||||||
|
//! Report requested changes only, but do not effect them
|
||||||
|
bool dryrun = false
|
||||||
|
);
|
||||||
|
|
||||||
//- Deprecated(2021-09) renamed to setNamedValue
|
//- Deprecated(2021-09) renamed to setNamedValue
|
||||||
// \deprecated(2021-09) renamed to setNamedValue
|
// \deprecated(2021-09) renamed to setNamedValue
|
||||||
void setNamedInt(std::string name, int val, bool report=false)
|
void setNamedInt
|
||||||
|
(
|
||||||
|
const std::string_view name,
|
||||||
|
int val,
|
||||||
|
bool verbose = false
|
||||||
|
)
|
||||||
{
|
{
|
||||||
this->setNamedValue(name, val, report);
|
this->setNamedValue(name, val, verbose);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user