mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: support search options on more dictionary methods
- can now specify literal matches for sub-dictionary methods:
isDict(key, keyType::REGEX)
optionalSubDict(key, keyType::REGEX)
subDict(key, keyType::REGEX)
subOrEmptyDict(key, keyType::REGEX, mandatory)
There is no change in behaviour of the methods, just the search option
is now exposed as an optional parameter.
NOTE: minor breaking change for subOrEmptyDict()
old: subOrEmptyDict(key, bool=false)
new: subOrEmptyDict(key, keyType::option=keyType::REGEX, bool=false)
This affects code that previously explicitly set the bool parameter.
Within OpenFOAM itself, this only affected a single file:
KinematicCloud.C
This commit is contained in:
@ -397,7 +397,11 @@ Foam::ITstream& Foam::dictionary::lookup
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::dictionary::substituteKeyword(const word& keyword, bool mergeEntry)
|
bool Foam::dictionary::substituteKeyword
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
bool mergeEntry
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (keyword.size() < 2)
|
if (keyword.size() < 2)
|
||||||
{
|
{
|
||||||
@ -457,10 +461,13 @@ bool Foam::dictionary::substituteScopedKeyword
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Foam::dictionary::isDict(const word& keyword) const
|
bool Foam::dictionary::isDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt
|
||||||
|
) const
|
||||||
{
|
{
|
||||||
// Allow patterns, non-recursive
|
return csearch(keyword, matchOpt).isDict();
|
||||||
return csearch(keyword, keyType::REGEX).isDict();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -484,10 +491,13 @@ const Foam::dictionary* Foam::dictionary::findDict
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const Foam::dictionary& Foam::dictionary::subDict(const word& keyword) const
|
const Foam::dictionary& Foam::dictionary::subDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt
|
||||||
|
) const
|
||||||
{
|
{
|
||||||
// Allow patterns, non-recursive
|
const const_searcher finder(csearch(keyword, matchOpt));
|
||||||
const const_searcher finder(csearch(keyword, keyType::REGEX));
|
|
||||||
|
|
||||||
if (!finder.good())
|
if (!finder.good())
|
||||||
{
|
{
|
||||||
@ -501,10 +511,13 @@ const Foam::dictionary& Foam::dictionary::subDict(const word& keyword) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::dictionary& Foam::dictionary::subDict(const word& keyword)
|
Foam::dictionary& Foam::dictionary::subDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// Allow patterns, non-recursive
|
searcher finder(search(keyword, matchOpt));
|
||||||
searcher finder(search(keyword, keyType::REGEX));
|
|
||||||
|
|
||||||
if (!finder.good())
|
if (!finder.good())
|
||||||
{
|
{
|
||||||
@ -521,11 +534,11 @@ Foam::dictionary& Foam::dictionary::subDict(const word& keyword)
|
|||||||
Foam::dictionary Foam::dictionary::subOrEmptyDict
|
Foam::dictionary Foam::dictionary::subOrEmptyDict
|
||||||
(
|
(
|
||||||
const word& keyword,
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt,
|
||||||
const bool mandatory
|
const bool mandatory
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Allow patterns, non-recursive
|
const const_searcher finder(csearch(keyword, matchOpt));
|
||||||
const const_searcher finder(csearch(keyword, keyType::REGEX));
|
|
||||||
|
|
||||||
if (finder.isDict())
|
if (finder.isDict())
|
||||||
{
|
{
|
||||||
@ -556,11 +569,11 @@ Foam::dictionary Foam::dictionary::subOrEmptyDict
|
|||||||
|
|
||||||
const Foam::dictionary& Foam::dictionary::optionalSubDict
|
const Foam::dictionary& Foam::dictionary::optionalSubDict
|
||||||
(
|
(
|
||||||
const word& keyword
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
// Allow patterns, non-recursive
|
const const_searcher finder(csearch(keyword, matchOpt));
|
||||||
const const_searcher finder(csearch(keyword, keyType::REGEX));
|
|
||||||
|
|
||||||
if (finder.isDict())
|
if (finder.isDict())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -610,7 +610,7 @@ public:
|
|||||||
//
|
//
|
||||||
// \param val the value to read into
|
// \param val the value to read into
|
||||||
// \param matchOpt the default search is non-recursive with patterns
|
// \param matchOpt the default search is non-recursive with patterns
|
||||||
// \param mandatory the keyword is mandatory
|
// \param mandatory the keyword is mandatory (default: true)
|
||||||
//
|
//
|
||||||
// \return true if the entry was found.
|
// \return true if the entry was found.
|
||||||
template<class T>
|
template<class T>
|
||||||
@ -720,29 +720,45 @@ public:
|
|||||||
|
|
||||||
//- Check if entry is found and and is a sub-dictionary.
|
//- Check if entry is found and and is a sub-dictionary.
|
||||||
//
|
//
|
||||||
// Search type: non-recursive with patterns.
|
// \param matchOpt the default search is non-recursive with patterns
|
||||||
bool isDict(const word& keyword) const;
|
//
|
||||||
|
// \return true if the entry was found.
|
||||||
|
bool isDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt = keyType::REGEX
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Find and return a sub-dictionary.
|
//- Find and return a sub-dictionary.
|
||||||
// Fatal if the entry does not exist or is not a sub-dictionary.
|
// Fatal if the entry does not exist or is not a sub-dictionary.
|
||||||
//
|
//
|
||||||
// Search type: non-recursive with patterns.
|
// \param matchOpt the default search is non-recursive with patterns
|
||||||
const dictionary& subDict(const word& keyword) const;
|
const dictionary& subDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt = keyType::REGEX
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Find and return a sub-dictionary for manipulation.
|
//- Find and return a sub-dictionary for manipulation.
|
||||||
// Fatal if the entry does not exist or is not a sub-dictionary.
|
// Fatal if the entry does not exist or is not a sub-dictionary.
|
||||||
//
|
//
|
||||||
// Search type: non-recursive with patterns.
|
// \param matchOpt the default search is non-recursive with patterns
|
||||||
dictionary& subDict(const word& keyword);
|
dictionary& subDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt = keyType::REGEX
|
||||||
|
);
|
||||||
|
|
||||||
//- Find and return a sub-dictionary as a copy, otherwise return
|
//- Find and return a sub-dictionary as a copy, otherwise return
|
||||||
//- an empty dictionary.
|
//- an empty dictionary.
|
||||||
// Warn if the entry exists but is not a sub-dictionary.
|
// Warn if the entry exists but is not a sub-dictionary.
|
||||||
//
|
//
|
||||||
// Search type: non-recursive with patterns.
|
// \param matchOpt the default search is non-recursive with patterns
|
||||||
|
// \param mandatory the keyword is mandatory (default: false)
|
||||||
dictionary subOrEmptyDict
|
dictionary subOrEmptyDict
|
||||||
(
|
(
|
||||||
const word& keyword,
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt = keyType::REGEX,
|
||||||
const bool mandatory = false
|
const bool mandatory = false
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
@ -750,7 +766,11 @@ public:
|
|||||||
// Warn if the entry exists but is not a sub-dictionary.
|
// Warn if the entry exists but is not a sub-dictionary.
|
||||||
//
|
//
|
||||||
// Search type: non-recursive with patterns.
|
// Search type: non-recursive with patterns.
|
||||||
const dictionary& optionalSubDict(const word& keyword) const;
|
const dictionary& optionalSubDict
|
||||||
|
(
|
||||||
|
const word& keyword,
|
||||||
|
enum keyType::option matchOpt = keyType::REGEX
|
||||||
|
) const;
|
||||||
|
|
||||||
//- Return the table of contents
|
//- Return the table of contents
|
||||||
wordList toc() const;
|
wordList toc() const;
|
||||||
|
|||||||
@ -325,7 +325,12 @@ Foam::KinematicCloud<CloudType>::KinematicCloud
|
|||||||
constProps_(particleProperties_),
|
constProps_(particleProperties_),
|
||||||
subModelProperties_
|
subModelProperties_
|
||||||
(
|
(
|
||||||
particleProperties_.subOrEmptyDict("subModels", solution_.active())
|
particleProperties_.subOrEmptyDict
|
||||||
|
(
|
||||||
|
"subModels",
|
||||||
|
keyType::REGEX,
|
||||||
|
solution_.active()
|
||||||
|
)
|
||||||
),
|
),
|
||||||
rndGen_(Pstream::myProcNo()),
|
rndGen_(Pstream::myProcNo()),
|
||||||
cellOccupancyPtr_(),
|
cellOccupancyPtr_(),
|
||||||
@ -342,6 +347,7 @@ Foam::KinematicCloud<CloudType>::KinematicCloud
|
|||||||
subModelProperties_.subOrEmptyDict
|
subModelProperties_.subOrEmptyDict
|
||||||
(
|
(
|
||||||
"particleForces",
|
"particleForces",
|
||||||
|
keyType::REGEX,
|
||||||
solution_.active()
|
solution_.active()
|
||||||
),
|
),
|
||||||
solution_.active()
|
solution_.active()
|
||||||
|
|||||||
Reference in New Issue
Block a user