mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
argList - specializations for optionRead<string> etc.
- new optionLookupOrDefault and additional form of optionReadIfPresent with a default value
This commit is contained in:
@ -74,9 +74,9 @@ int main(int argc, char *argv[])
|
|||||||
args.printUsage();
|
args.printUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.optionFound("case"))
|
fileName pathName;
|
||||||
|
if (args.optionReadIfPresent("case", pathName))
|
||||||
{
|
{
|
||||||
fileName pathName = args.option("case");
|
|
||||||
Info<< nl
|
Info<< nl
|
||||||
<< "-case" << nl
|
<< "-case" << nl
|
||||||
<< "path = " << args.path() << nl
|
<< "path = " << args.path() << nl
|
||||||
@ -91,7 +91,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
forAll(args.additionalArgs(), argI)
|
forAll(args.additionalArgs(), argI)
|
||||||
{
|
{
|
||||||
fileName pathName = args.additionalArgs()[argI];
|
pathName = args.additionalArgs()[argI];
|
||||||
printCleaning(pathName);
|
printCleaning(pathName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -49,11 +49,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
argList args(argc, argv, false, true);
|
argList args(argc, argv, false, true);
|
||||||
|
|
||||||
label repeat = 1;
|
const label repeat = args.optionLookupOrDefault<label>("repeat", 1);
|
||||||
args.optionReadIfPresent<label>("repeat", repeat);
|
|
||||||
|
|
||||||
cpuTime timer;
|
cpuTime timer;
|
||||||
|
|
||||||
for (label count = 0; count < repeat; ++count)
|
for (label count = 0; count < repeat; ++count)
|
||||||
{
|
{
|
||||||
forAll(args.additionalArgs(), argI)
|
forAll(args.additionalArgs(), argI)
|
||||||
|
|||||||
@ -59,10 +59,6 @@ using namespace Foam;
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Sin of angle between two consecutive edges on a face. If sin(angle) larger
|
|
||||||
// than this the face will be considered concave.
|
|
||||||
const scalar defaultConcaveAngle = 30;
|
|
||||||
|
|
||||||
|
|
||||||
// Same check as snapMesh
|
// Same check as snapMesh
|
||||||
void checkSnapMesh
|
void checkSnapMesh
|
||||||
@ -447,8 +443,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
scalar minCos = Foam::cos(degToRad(featureAngle));
|
scalar minCos = Foam::cos(degToRad(featureAngle));
|
||||||
|
|
||||||
scalar concaveAngle = defaultConcaveAngle;
|
// Sin of angle between two consecutive edges on a face.
|
||||||
args.optionReadIfPresent("concaveAngle", concaveAngle);
|
// If sin(angle) larger than this the face will be considered concave.
|
||||||
|
scalar concaveAngle = args.optionLookupOrDefault("concaveAngle", 30.0);
|
||||||
|
|
||||||
scalar concaveSin = Foam::sin(degToRad(concaveAngle));
|
scalar concaveSin = Foam::sin(degToRad(concaveAngle));
|
||||||
|
|
||||||
@ -483,8 +480,8 @@ int main(int argc, char *argv[])
|
|||||||
// Merge points on straight edges and remove unused points
|
// Merge points on straight edges and remove unused points
|
||||||
if (snapMeshDict)
|
if (snapMeshDict)
|
||||||
{
|
{
|
||||||
Info<< "Merging all 'loose' points on surface edges"
|
Info<< "Merging all 'loose' points on surface edges, "
|
||||||
<< ", regardless of the angle they make." << endl;
|
<< "regardless of the angle they make." << endl;
|
||||||
|
|
||||||
// Surface bnound to be used to extrude. Merge all loose points.
|
// Surface bnound to be used to extrude. Merge all loose points.
|
||||||
nChanged += mergeEdges(-1, mesh);
|
nChanged += mergeEdges(-1, mesh);
|
||||||
@ -510,7 +507,7 @@ int main(int argc, char *argv[])
|
|||||||
Info<< "Mesh unchanged." << endl;
|
Info<< "Mesh unchanged." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
Info<< "End\n" << endl;
|
Info<< "\nEnd\n" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -546,8 +546,7 @@ int main(int argc, char *argv[])
|
|||||||
bool geometry = args.optionFound("geometry");
|
bool geometry = args.optionFound("geometry");
|
||||||
bool overwrite = args.optionFound("overwrite");
|
bool overwrite = args.optionFound("overwrite");
|
||||||
|
|
||||||
scalar edgeTol = 0.2;
|
scalar edgeTol = args.optionLookupOrDefault("tol", 0.2);
|
||||||
args.optionReadIfPresent("tol", edgeTol);
|
|
||||||
|
|
||||||
Info<< "Trying to split cells with internal angles > feature angle\n" << nl
|
Info<< "Trying to split cells with internal angles > feature angle\n" << nl
|
||||||
<< "featureAngle : " << featureAngle << nl
|
<< "featureAngle : " << featureAngle << nl
|
||||||
|
|||||||
@ -776,17 +776,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
args.optionReadIfPresent("scale", scaleFactor);
|
args.optionReadIfPresent("scale", scaleFactor);
|
||||||
|
|
||||||
HashSet<word> ignoreCellGroups;
|
wordHashSet ignoreCellGroups;
|
||||||
if (args.optionFound("ignoreCellGroups"))
|
wordHashSet ignoreFaceGroups;
|
||||||
{
|
|
||||||
args.optionLookup("ignoreCellGroups")() >> ignoreCellGroups;
|
|
||||||
}
|
|
||||||
|
|
||||||
HashSet<word> ignoreFaceGroups;
|
args.optionReadIfPresent("ignoreCellGroups", ignoreCellGroups);
|
||||||
if (args.optionFound("ignoreFaceGroups"))
|
args.optionReadIfPresent("ignoreFaceGroups", ignoreFaceGroups);
|
||||||
{
|
|
||||||
args.optionLookup("ignoreFaceGroups")() >> ignoreFaceGroups;
|
|
||||||
}
|
|
||||||
|
|
||||||
cubitFile = args.options().found("cubit");
|
cubitFile = args.options().found("cubit");
|
||||||
|
|
||||||
|
|||||||
@ -50,8 +50,7 @@ int main(int argc, char *argv[])
|
|||||||
FatalError.exit();
|
FatalError.exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
scalar scaleFactor = 1.0;
|
scalar scaleFactor = args.optionLookupOrDefault("scale", 1.0);
|
||||||
args.optionReadIfPresent("scale", scaleFactor);
|
|
||||||
|
|
||||||
# include "createTime.H"
|
# include "createTime.H"
|
||||||
|
|
||||||
|
|||||||
@ -71,19 +71,13 @@ int main(int argc, char *argv[])
|
|||||||
const stringList& params = args.additionalArgs();
|
const stringList& params = args.additionalArgs();
|
||||||
|
|
||||||
// default rescale from [mm] to [m]
|
// default rescale from [mm] to [m]
|
||||||
scalar scaleFactor = 0.001;
|
scalar scaleFactor = args.optionLookupOrDefault("scale", 0.001);
|
||||||
if (args.optionReadIfPresent("scale", scaleFactor))
|
if (scaleFactor <= 0)
|
||||||
{
|
{
|
||||||
if (scaleFactor <= 0)
|
scaleFactor = 1;
|
||||||
{
|
|
||||||
scaleFactor = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.optionFound("solids"))
|
meshReaders::STARCD::keepSolids = args.optionFound("solids");
|
||||||
{
|
|
||||||
meshReaders::STARCD::keepSolids = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// default to binary output, unless otherwise specified
|
// default to binary output, unless otherwise specified
|
||||||
IOstream::streamFormat format = IOstream::BINARY;
|
IOstream::streamFormat format = IOstream::BINARY;
|
||||||
|
|||||||
@ -50,8 +50,7 @@ int main(int argc, char *argv[])
|
|||||||
FatalError.exit();
|
FatalError.exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
scalar scaleFactor = 1.0;
|
scalar scaleFactor = args.optionLookupOrDefault("scale", 1.0);
|
||||||
args.optionReadIfPresent("scale", scaleFactor);
|
|
||||||
|
|
||||||
# include "createTime.H"
|
# include "createTime.H"
|
||||||
|
|
||||||
|
|||||||
@ -83,10 +83,9 @@ int main(int argc, char *argv[])
|
|||||||
word regionName;
|
word regionName;
|
||||||
fileName polyMeshDir;
|
fileName polyMeshDir;
|
||||||
|
|
||||||
if (args.optionFound("region"))
|
if (args.optionReadIfPresent("region", regionName, polyMesh::defaultRegion))
|
||||||
{
|
{
|
||||||
// constant/<region>/polyMesh/blockMeshDict
|
// constant/<region>/polyMesh/blockMeshDict
|
||||||
regionName = args.option("region");
|
|
||||||
polyMeshDir = regionName/polyMesh::meshSubDir;
|
polyMeshDir = regionName/polyMesh::meshSubDir;
|
||||||
|
|
||||||
Info<< nl << "Generating mesh for region " << regionName << endl;
|
Info<< nl << "Generating mesh for region " << regionName << endl;
|
||||||
@ -94,7 +93,6 @@ int main(int argc, char *argv[])
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// constant/polyMesh/blockMeshDict
|
// constant/polyMesh/blockMeshDict
|
||||||
regionName = polyMesh::defaultRegion;
|
|
||||||
polyMeshDir = polyMesh::meshSubDir;
|
polyMeshDir = polyMesh::meshSubDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -301,7 +301,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
word cellSetName;
|
word cellSetName;
|
||||||
string vtkName;
|
string vtkName = runTime.caseName();
|
||||||
|
|
||||||
if (args.optionFound("cellSet"))
|
if (args.optionFound("cellSet"))
|
||||||
{
|
{
|
||||||
@ -311,8 +311,6 @@ int main(int argc, char *argv[])
|
|||||||
else if (Pstream::parRun())
|
else if (Pstream::parRun())
|
||||||
{
|
{
|
||||||
// Strip off leading casename, leaving just processor_DDD ending.
|
// Strip off leading casename, leaving just processor_DDD ending.
|
||||||
vtkName = runTime.caseName();
|
|
||||||
|
|
||||||
string::size_type i = vtkName.rfind("processor");
|
string::size_type i = vtkName.rfind("processor");
|
||||||
|
|
||||||
if (i != string::npos)
|
if (i != string::npos)
|
||||||
@ -320,10 +318,6 @@ int main(int argc, char *argv[])
|
|||||||
vtkName = vtkName.substr(i);
|
vtkName = vtkName.substr(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
vtkName = runTime.caseName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
instantList timeDirs = timeSelector::select0(runTime, args);
|
instantList timeDirs = timeSelector::select0(runTime, args);
|
||||||
|
|||||||
@ -88,8 +88,7 @@ int main(int argc, char *argv[])
|
|||||||
const stringList& params = args.additionalArgs();
|
const stringList& params = args.additionalArgs();
|
||||||
|
|
||||||
fileName exportName(params[0]);
|
fileName exportName(params[0]);
|
||||||
word importName("default");
|
word importName = args.optionLookupOrDefault<word>("name", "default");
|
||||||
args.optionReadIfPresent("name", importName);
|
|
||||||
|
|
||||||
// check that writing is supported
|
// check that writing is supported
|
||||||
if (!MeshedSurface<face>::canWriteType(exportName.ext(), true))
|
if (!MeshedSurface<face>::canWriteType(exportName.ext(), true))
|
||||||
|
|||||||
@ -177,13 +177,11 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
Info<< "Reading surface from " << surfName << " ..." << endl;
|
Info<< "Reading surface from " << surfName << " ..." << endl;
|
||||||
|
|
||||||
bool readSet = args.optionFound("faceSet");
|
|
||||||
word setName;
|
word setName;
|
||||||
|
bool readSet = args.optionReadIfPresent("faceSet", setName);
|
||||||
|
|
||||||
if (readSet)
|
if (readSet)
|
||||||
{
|
{
|
||||||
setName = args.option("faceSet");
|
|
||||||
|
|
||||||
Info<< "Repatching only the faces in faceSet " << setName
|
Info<< "Repatching only the faces in faceSet " << setName
|
||||||
<< " according to nearest surface triangle ..." << endl;
|
<< " according to nearest surface triangle ..." << endl;
|
||||||
}
|
}
|
||||||
@ -193,8 +191,7 @@ int main(int argc, char *argv[])
|
|||||||
<< " triangle ..." << endl;
|
<< " triangle ..." << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
scalar searchTol = 1E-3;
|
scalar searchTol = args.optionLookupOrDefault("tol", 1e-3);
|
||||||
args.optionReadIfPresent("tol", searchTol);
|
|
||||||
|
|
||||||
// Get search box. Anything not within this box will not be considered.
|
// Get search box. Anything not within this box will not be considered.
|
||||||
const boundBox& meshBb = mesh.globalData().bb();
|
const boundBox& meshBb = mesh.globalData().bb();
|
||||||
@ -211,7 +208,7 @@ int main(int argc, char *argv[])
|
|||||||
forAll(mesh.boundaryMesh(), patchI)
|
forAll(mesh.boundaryMesh(), patchI)
|
||||||
{
|
{
|
||||||
Info<< " " << mesh.boundaryMesh()[patchI].name() << '\t'
|
Info<< " " << mesh.boundaryMesh()[patchI].name() << '\t'
|
||||||
<< mesh.boundaryMesh()[patchI].size() << endl;
|
<< mesh.boundaryMesh()[patchI].size() << nl;
|
||||||
}
|
}
|
||||||
Info<< endl;
|
Info<< endl;
|
||||||
|
|
||||||
|
|||||||
@ -159,8 +159,7 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
//- Destructor
|
||||||
|
|
||||||
virtual ~argList();
|
virtual ~argList();
|
||||||
|
|
||||||
|
|
||||||
@ -169,81 +168,75 @@ public:
|
|||||||
// Access
|
// Access
|
||||||
|
|
||||||
//- Name of executable
|
//- Name of executable
|
||||||
const word& executable() const
|
inline const word& executable() const;
|
||||||
{
|
|
||||||
return executable_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return root path
|
//- Return root path
|
||||||
const fileName& rootPath() const
|
inline const fileName& rootPath() const;
|
||||||
{
|
|
||||||
return rootPath_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return case name
|
|
||||||
const fileName& globalCaseName() const
|
|
||||||
{
|
|
||||||
return globalCase_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return case name (parallel run) or global case (serial run)
|
//- Return case name (parallel run) or global case (serial run)
|
||||||
const fileName& caseName() const
|
inline const fileName& caseName() const;
|
||||||
{
|
|
||||||
return case_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return the path
|
//- Return case name
|
||||||
fileName path() const
|
inline const fileName& globalCaseName() const;
|
||||||
{
|
|
||||||
return rootPath()/caseName();
|
//- Return the path to the caseName
|
||||||
}
|
inline fileName path() const;
|
||||||
|
|
||||||
//- Return arguments
|
//- Return arguments
|
||||||
const stringList& args() const
|
inline const stringList& args() const;
|
||||||
{
|
|
||||||
return args_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return additionl arguments,
|
//- Return additionl arguments,
|
||||||
// i.e. those additional to the executable itself
|
// i.e. those additional to the executable itself
|
||||||
stringList::subList additionalArgs() const;
|
stringList::subList additionalArgs() const;
|
||||||
|
|
||||||
//- Return options
|
//- Return options
|
||||||
const Foam::HashTable<string>& options() const
|
inline const Foam::HashTable<string>& options() const;
|
||||||
{
|
|
||||||
return options_;
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return the argument string associated with the named option
|
//- Return the argument string associated with the named option
|
||||||
const string& option(const word& opt) const
|
inline const string& option(const word& opt) const;
|
||||||
{
|
|
||||||
return options_.operator[](opt);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return true if the named option is found
|
//- Return true if the named option is found
|
||||||
bool optionFound(const word& opt) const
|
inline bool optionFound(const word& opt) const;
|
||||||
{
|
|
||||||
return options_.found(opt);
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Return an IStringStream to the named option
|
//- Return an IStringStream from the named option
|
||||||
IStringStream optionLookup(const word& opt) const
|
inline IStringStream optionLookup(const word& opt) const;
|
||||||
{
|
|
||||||
return IStringStream(option(opt));
|
|
||||||
}
|
|
||||||
|
|
||||||
//- Read a value from the named option
|
//- Read a value from the named option
|
||||||
template<class T>
|
template<class T>
|
||||||
T optionRead(const word& opt) const;
|
inline T optionRead(const word& opt) const;
|
||||||
|
|
||||||
//- Read a value from the named option if present.
|
//- Read a value from the named option if present.
|
||||||
// Return true if the named option was found.
|
// Return true if the named option was found.
|
||||||
template<class T>
|
template<class T>
|
||||||
bool optionReadIfPresent(const word& opt, T& val) const;
|
inline bool optionReadIfPresent(const word& opt, T&) const;
|
||||||
|
|
||||||
|
//- Read a value from the named option if present.
|
||||||
|
// Return true if the named option was found, otherwise
|
||||||
|
// use the supplied default and return false.
|
||||||
|
template<class T>
|
||||||
|
inline bool optionReadIfPresent
|
||||||
|
(
|
||||||
|
const word& opt,
|
||||||
|
T&,
|
||||||
|
const T& deflt
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Read a value from the named option if present.
|
||||||
|
// Return true if the named option was found.
|
||||||
|
template<class T>
|
||||||
|
inline T optionLookupOrDefault
|
||||||
|
(
|
||||||
|
const word& opt,
|
||||||
|
const T& deflt
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Read a List of values from the named option
|
//- Read a List of values from the named option
|
||||||
template<class T>
|
template<class T>
|
||||||
List<T> optionReadList(const word& opt) const;
|
List<T> optionReadList(const word& opt) const
|
||||||
|
{
|
||||||
|
return readList<T>(optionLookup(opt)());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Edit
|
// Edit
|
||||||
@ -281,9 +274,7 @@ public:
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#ifdef NoRepository
|
#include "argListI.H"
|
||||||
# include "argListTemplates.C"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|||||||
193
src/OpenFOAM/global/argList/argListI.H
Normal file
193
src/OpenFOAM/global/argList/argListI.H
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "argList.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
inline const Foam::word& Foam::argList::executable() const
|
||||||
|
{
|
||||||
|
return executable_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::fileName& Foam::argList::rootPath() const
|
||||||
|
{
|
||||||
|
return rootPath_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::fileName& Foam::argList::caseName() const
|
||||||
|
{
|
||||||
|
return case_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::fileName& Foam::argList::globalCaseName() const
|
||||||
|
{
|
||||||
|
return globalCase_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline Foam::fileName Foam::argList::path() const
|
||||||
|
{
|
||||||
|
return rootPath()/caseName();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::stringList& Foam::argList::args() const
|
||||||
|
{
|
||||||
|
return args_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::HashTable<Foam::string>& Foam::argList::options() const
|
||||||
|
{
|
||||||
|
return options_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const Foam::string& Foam::argList::option(const word& opt) const
|
||||||
|
{
|
||||||
|
return options_.operator[](opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline bool Foam::argList::optionFound(const word& opt) const
|
||||||
|
{
|
||||||
|
return options_.found(opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline Foam::IStringStream Foam::argList::optionLookup(const word& opt) const
|
||||||
|
{
|
||||||
|
return IStringStream(option(opt));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * Template Specializations * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// Template specialization for string
|
||||||
|
template<>
|
||||||
|
inline Foam::string
|
||||||
|
Foam::argList::optionRead<Foam::string>(const word& opt) const
|
||||||
|
{
|
||||||
|
return option(opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Template specialization for word
|
||||||
|
template<>
|
||||||
|
inline Foam::word
|
||||||
|
Foam::argList::optionRead<Foam::word>(const word& opt) const
|
||||||
|
{
|
||||||
|
return option(opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Template specialization for fileName
|
||||||
|
template<>
|
||||||
|
inline Foam::fileName
|
||||||
|
Foam::argList::optionRead<Foam::fileName>(const word& opt) const
|
||||||
|
{
|
||||||
|
return option(opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline T Foam::argList::optionRead(const word& opt) const
|
||||||
|
{
|
||||||
|
T val;
|
||||||
|
|
||||||
|
optionLookup(opt)() >> val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline bool Foam::argList::optionReadIfPresent
|
||||||
|
(
|
||||||
|
const word& opt,
|
||||||
|
T& val
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
if (optionFound(opt))
|
||||||
|
{
|
||||||
|
val = optionRead<T>(opt);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline bool Foam::argList::optionReadIfPresent
|
||||||
|
(
|
||||||
|
const word& opt,
|
||||||
|
T& val,
|
||||||
|
const T& deflt
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
if (optionReadIfPresent<T>(opt, val))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = deflt;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
inline T Foam::argList::optionLookupOrDefault
|
||||||
|
(
|
||||||
|
const word& opt,
|
||||||
|
const T& deflt
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
if (optionFound(opt))
|
||||||
|
{
|
||||||
|
return optionRead<T>(opt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return deflt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -1,63 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration |
|
|
||||||
\\ / A nd | Copyright (C) 2009-2009 OpenCFD Ltd.
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
License
|
|
||||||
This file is part of OpenFOAM.
|
|
||||||
|
|
||||||
OpenFOAM is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU General Public License as published by the
|
|
||||||
Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
option) any later version.
|
|
||||||
|
|
||||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "argList.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
T Foam::argList::optionRead(const word& opt) const
|
|
||||||
{
|
|
||||||
T val;
|
|
||||||
|
|
||||||
optionLookup(opt)() >> val;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
bool Foam::argList::optionReadIfPresent(const word& opt, T& val) const
|
|
||||||
{
|
|
||||||
if (optionFound(opt))
|
|
||||||
{
|
|
||||||
val = optionRead<T>(opt);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
Foam::List<T> Foam::argList::optionReadList(const word& opt) const
|
|
||||||
{
|
|
||||||
return readList<T>(optionLookup(opt)());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
Reference in New Issue
Block a user