mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Added copy constructor to argList
This commit is contained in:
@ -373,7 +373,8 @@ Foam::argList::argList
|
||||
int& argc,
|
||||
char**& argv,
|
||||
bool checkArgs,
|
||||
bool checkOpts
|
||||
bool checkOpts,
|
||||
const bool initialise
|
||||
)
|
||||
:
|
||||
args_(argc),
|
||||
@ -405,12 +406,12 @@ Foam::argList::argList
|
||||
|
||||
// Check arguments and options, we already have argv[0]
|
||||
int nArgs = 1;
|
||||
string argListString = args_[0];
|
||||
argListStr_ = args_[0];
|
||||
|
||||
for (int argI = 1; argI < args_.size(); ++argI)
|
||||
{
|
||||
argListString += ' ';
|
||||
argListString += args_[argI];
|
||||
argListStr_ += ' ';
|
||||
argListStr_ += args_[argI];
|
||||
|
||||
if (args_[argI][0] == '-')
|
||||
{
|
||||
@ -438,8 +439,8 @@ Foam::argList::argList
|
||||
FatalError.exit();
|
||||
}
|
||||
|
||||
argListString += ' ';
|
||||
argListString += args_[argI];
|
||||
argListStr_ += ' ';
|
||||
argListStr_ += args_[argI];
|
||||
options_.insert(optionName, args_[argI]);
|
||||
}
|
||||
else
|
||||
@ -459,6 +460,39 @@ Foam::argList::argList
|
||||
|
||||
args_.setSize(nArgs);
|
||||
|
||||
parse(checkArgs, checkOpts, initialise);
|
||||
}
|
||||
|
||||
|
||||
Foam::argList::argList
|
||||
(
|
||||
const argList& args,
|
||||
const HashTable<string>& options,
|
||||
bool checkArgs,
|
||||
bool checkOpts,
|
||||
bool initialise
|
||||
)
|
||||
:
|
||||
args_(args.args_),
|
||||
options_(options),
|
||||
executable_(args.executable_),
|
||||
rootPath_(args.rootPath_),
|
||||
globalCase_(args.globalCase_),
|
||||
case_(args.case_),
|
||||
argListStr_(args.argListStr_),
|
||||
parRunControl_(args.parRunControl_)
|
||||
{
|
||||
parse(checkArgs, checkOpts, initialise);
|
||||
}
|
||||
|
||||
|
||||
void Foam::argList::parse
|
||||
(
|
||||
bool checkArgs,
|
||||
bool checkOpts,
|
||||
bool initialise
|
||||
)
|
||||
{
|
||||
// Help/documentation options:
|
||||
// -help print the usage
|
||||
// -doc display application documentation in browser
|
||||
@ -495,42 +529,44 @@ Foam::argList::argList
|
||||
}
|
||||
|
||||
|
||||
string dateString = clock::date();
|
||||
string timeString = clock::clockTime();
|
||||
|
||||
// Print the banner once only for parallel runs
|
||||
if (Pstream::master() && bannerEnabled)
|
||||
if (initialise)
|
||||
{
|
||||
IOobject::writeBanner(Info, true)
|
||||
<< "Build : " << Foam::FOAMbuild << nl
|
||||
<< "Exec : " << argListString.c_str() << nl
|
||||
<< "Date : " << dateString.c_str() << nl
|
||||
<< "Time : " << timeString.c_str() << nl
|
||||
<< "Host : " << hostName() << nl
|
||||
<< "PID : " << pid() << endl;
|
||||
}
|
||||
string dateString = clock::date();
|
||||
string timeString = clock::clockTime();
|
||||
|
||||
jobInfo.add("startDate", dateString);
|
||||
jobInfo.add("startTime", timeString);
|
||||
jobInfo.add("userName", userName());
|
||||
jobInfo.add("foamVersion", word(FOAMversion));
|
||||
jobInfo.add("code", executable_);
|
||||
jobInfo.add("argList", argListString);
|
||||
jobInfo.add("currentDir", cwd());
|
||||
jobInfo.add("PPID", ppid());
|
||||
jobInfo.add("PGID", pgid());
|
||||
|
||||
// add build information - only use the first word
|
||||
{
|
||||
std::string build(Foam::FOAMbuild);
|
||||
std::string::size_type found = build.find(' ');
|
||||
if (found != std::string::npos)
|
||||
// Print the banner once only for parallel runs
|
||||
if (Pstream::master() && bannerEnabled)
|
||||
{
|
||||
build.resize(found);
|
||||
IOobject::writeBanner(Info, true)
|
||||
<< "Build : " << Foam::FOAMbuild << nl
|
||||
<< "Exec : " << argListStr_.c_str() << nl
|
||||
<< "Date : " << dateString.c_str() << nl
|
||||
<< "Time : " << timeString.c_str() << nl
|
||||
<< "Host : " << hostName() << nl
|
||||
<< "PID : " << pid() << endl;
|
||||
}
|
||||
jobInfo.add("foamBuild", build);
|
||||
}
|
||||
|
||||
jobInfo.add("startDate", dateString);
|
||||
jobInfo.add("startTime", timeString);
|
||||
jobInfo.add("userName", userName());
|
||||
jobInfo.add("foamVersion", word(FOAMversion));
|
||||
jobInfo.add("code", executable_);
|
||||
jobInfo.add("argList", argListStr_);
|
||||
jobInfo.add("currentDir", cwd());
|
||||
jobInfo.add("PPID", ppid());
|
||||
jobInfo.add("PGID", pgid());
|
||||
|
||||
// add build information - only use the first word
|
||||
{
|
||||
std::string build(Foam::FOAMbuild);
|
||||
std::string::size_type found = build.find(' ');
|
||||
if (found != std::string::npos)
|
||||
{
|
||||
build.resize(found);
|
||||
}
|
||||
jobInfo.add("foamBuild", build);
|
||||
}
|
||||
}
|
||||
|
||||
// Case is a single processor run unless it is running parallel
|
||||
int nProcs = 1;
|
||||
@ -781,51 +817,55 @@ Foam::argList::argList
|
||||
}
|
||||
}
|
||||
|
||||
jobInfo.add("root", rootPath_);
|
||||
jobInfo.add("case", globalCase_);
|
||||
jobInfo.add("nProcs", nProcs);
|
||||
if (slaveProcs.size())
|
||||
if (initialise)
|
||||
{
|
||||
jobInfo.add("slaves", slaveProcs);
|
||||
}
|
||||
if (roots.size())
|
||||
{
|
||||
jobInfo.add("roots", roots);
|
||||
}
|
||||
jobInfo.write();
|
||||
|
||||
// Switch on signal trapping. We have to wait until after Pstream::init
|
||||
// since this sets up its own ones.
|
||||
sigFpe_.set(bannerEnabled);
|
||||
sigInt_.set(bannerEnabled);
|
||||
sigQuit_.set(bannerEnabled);
|
||||
sigSegv_.set(bannerEnabled);
|
||||
|
||||
if (bannerEnabled)
|
||||
{
|
||||
Info<< "fileModificationChecking : "
|
||||
<< "Monitoring run-time modified files using "
|
||||
<< regIOobject::fileCheckTypesNames
|
||||
[
|
||||
regIOobject::fileModificationChecking
|
||||
]
|
||||
<< endl;
|
||||
|
||||
Info<< "allowSystemOperations : ";
|
||||
if (dynamicCode::allowSystemOperations)
|
||||
jobInfo.add("root", rootPath_);
|
||||
jobInfo.add("case", globalCase_);
|
||||
jobInfo.add("nProcs", nProcs);
|
||||
if (slaveProcs.size())
|
||||
{
|
||||
Info<< "Allowing user-supplied system call operations" << endl;
|
||||
jobInfo.add("slaves", slaveProcs);
|
||||
}
|
||||
else
|
||||
if (roots.size())
|
||||
{
|
||||
Info<< "Disallowing user-supplied system call operations" << endl;
|
||||
jobInfo.add("roots", roots);
|
||||
}
|
||||
}
|
||||
jobInfo.write();
|
||||
|
||||
if (Pstream::master() && bannerEnabled)
|
||||
{
|
||||
Info<< endl;
|
||||
IOobject::writeDivider(Info);
|
||||
// Switch on signal trapping. We have to wait until after Pstream::init
|
||||
// since this sets up its own ones.
|
||||
sigFpe_.set(bannerEnabled);
|
||||
sigInt_.set(bannerEnabled);
|
||||
sigQuit_.set(bannerEnabled);
|
||||
sigSegv_.set(bannerEnabled);
|
||||
|
||||
if (bannerEnabled)
|
||||
{
|
||||
Info<< "fileModificationChecking : "
|
||||
<< "Monitoring run-time modified files using "
|
||||
<< regIOobject::fileCheckTypesNames
|
||||
[
|
||||
regIOobject::fileModificationChecking
|
||||
]
|
||||
<< endl;
|
||||
|
||||
Info<< "allowSystemOperations : ";
|
||||
if (dynamicCode::allowSystemOperations)
|
||||
{
|
||||
Info<< "Allowing user-supplied system call operations" << endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Info<< "Disallowing user-supplied system call operations"
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
if (Pstream::master() && bannerEnabled)
|
||||
{
|
||||
Info<< endl;
|
||||
IOobject::writeDivider(Info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -41,7 +41,7 @@ Description
|
||||
|
||||
\par Default command-line options
|
||||
\param -case \<dir\> \n
|
||||
select an case directory instead of the current working directory
|
||||
select a case directory instead of the current working directory
|
||||
\param -parallel \n
|
||||
specify case as a parallel job
|
||||
\param -doc \n
|
||||
@ -69,6 +69,7 @@ Note
|
||||
|
||||
SourceFiles
|
||||
argList.C
|
||||
argListI.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -111,6 +112,7 @@ class argList
|
||||
fileName rootPath_;
|
||||
fileName globalCase_;
|
||||
fileName case_;
|
||||
string argListStr_;
|
||||
|
||||
ParRunControl parRunControl_;
|
||||
|
||||
@ -186,17 +188,37 @@ public:
|
||||
(
|
||||
int& argc,
|
||||
char**& argv,
|
||||
bool checkArgs=true,
|
||||
bool checkOpts=true
|
||||
bool checkArgs = true,
|
||||
bool checkOpts = true,
|
||||
bool initialise = true
|
||||
);
|
||||
|
||||
//- Construct copy with new options
|
||||
argList
|
||||
(
|
||||
const argList& args,
|
||||
const HashTable<string>& options,
|
||||
bool checkArgs = true,
|
||||
bool checkOpts = true,
|
||||
bool initialise = true
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~argList();
|
||||
//- Destructor
|
||||
virtual ~argList();
|
||||
|
||||
|
||||
// Member functions
|
||||
|
||||
//- Parse
|
||||
void parse
|
||||
(
|
||||
bool checkArgs,
|
||||
bool checkOpts,
|
||||
bool initialise
|
||||
);
|
||||
|
||||
|
||||
// Access
|
||||
|
||||
//- Name of executable without the path
|
||||
@ -211,12 +233,18 @@ public:
|
||||
//- Return case name
|
||||
inline const fileName& globalCaseName() const;
|
||||
|
||||
//- Return parRunControl
|
||||
inline const ParRunControl& parRunControl() const;
|
||||
|
||||
//- Return the path to the caseName
|
||||
inline fileName path() const;
|
||||
|
||||
//- Return arguments
|
||||
inline const stringList& args() const;
|
||||
|
||||
//- Return non-const access to arguments
|
||||
inline stringList& args();
|
||||
|
||||
//- Return the argument corresponding to index.
|
||||
inline const string& arg(const label index) const;
|
||||
|
||||
@ -240,6 +268,9 @@ public:
|
||||
//- Return options
|
||||
inline const Foam::HashTable<string>& options() const;
|
||||
|
||||
//- Return non-const access to options
|
||||
inline Foam::HashTable<string>& options();
|
||||
|
||||
//- Return the argument string associated with the named option
|
||||
inline const string& option(const word& opt) const;
|
||||
|
||||
@ -295,6 +326,7 @@ public:
|
||||
// \sa option()
|
||||
inline const string& operator[](const word& opt) const;
|
||||
|
||||
|
||||
// Edit
|
||||
|
||||
//- Add to a bool option to validOptions with usage information
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -51,6 +51,12 @@ inline const Foam::fileName& Foam::argList::globalCaseName() const
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::ParRunControl& Foam::argList::parRunControl() const
|
||||
{
|
||||
return parRunControl_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::fileName Foam::argList::path() const
|
||||
{
|
||||
return rootPath()/caseName();
|
||||
@ -63,6 +69,12 @@ inline const Foam::stringList& Foam::argList::args() const
|
||||
}
|
||||
|
||||
|
||||
inline Foam::stringList& Foam::argList::args()
|
||||
{
|
||||
return args_;
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::string& Foam::argList::arg(const label index) const
|
||||
{
|
||||
return args_[index];
|
||||
@ -81,6 +93,12 @@ inline const Foam::HashTable<Foam::string>& Foam::argList::options() const
|
||||
}
|
||||
|
||||
|
||||
inline Foam::HashTable<Foam::string>& Foam::argList::options()
|
||||
{
|
||||
return options_;
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::string& Foam::argList::option(const word& opt) const
|
||||
{
|
||||
return options_[opt];
|
||||
|
||||
Reference in New Issue
Block a user