mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: isLiteral() method for keyType and wordRe
- same as !isPattern(), but can be more readable. - add wordRe enum state 'UNKNOWN', which has the identical value as 'DETECT' but used for a return value.
This commit is contained in:
@ -440,7 +440,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
const wordRes patchNames(args.getList<wordRe>("patches"));
|
const wordRes patchNames(args.getList<wordRe>("patches"));
|
||||||
|
|
||||||
if (patchNames.size() == 1 && !patchNames.first().isPattern())
|
if (patchNames.size() == 1 && patchNames.first().isLiteral())
|
||||||
{
|
{
|
||||||
exposedPatchIDs.first() =
|
exposedPatchIDs.first() =
|
||||||
getExposedPatchId(mesh, patchNames.first());
|
getExposedPatchId(mesh, patchNames.first());
|
||||||
|
|||||||
@ -58,7 +58,7 @@ bool Foam::functionEntries::removeEntry::execute
|
|||||||
|
|
||||||
for (const keyType& key : patterns)
|
for (const keyType& key : patterns)
|
||||||
{
|
{
|
||||||
if (key.find('/') != string::npos || !key.isPattern())
|
if (key.isLiteral() && key.find('/') != string::npos)
|
||||||
{
|
{
|
||||||
// Remove scoped keyword, or keyword in the local scope
|
// Remove scoped keyword, or keyword in the local scope
|
||||||
dictionary::searcher finder =
|
dictionary::searcher finder =
|
||||||
|
|||||||
@ -53,7 +53,7 @@ readField
|
|||||||
// patch name since is key of dictionary.
|
// patch name since is key of dictionary.
|
||||||
forAllConstIter(dictionary, dict, iter)
|
forAllConstIter(dictionary, dict, iter)
|
||||||
{
|
{
|
||||||
if (iter().isDict() && !iter().keyword().isPattern())
|
if (iter().isDict() && iter().keyword().isLiteral())
|
||||||
{
|
{
|
||||||
const label patchi = bmesh_.findPatchID(iter().keyword());
|
const label patchi = bmesh_.findPatchID(iter().keyword());
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ readField
|
|||||||
{
|
{
|
||||||
const entry& e = iter();
|
const entry& e = iter();
|
||||||
|
|
||||||
if (e.isDict() && !e.keyword().isPattern())
|
if (e.isDict() && e.keyword().isLiteral())
|
||||||
{
|
{
|
||||||
const labelList patchIds =
|
const labelList patchIds =
|
||||||
bmesh_.indices(e.keyword(), true); // use patchGroups
|
bmesh_.indices(e.keyword(), true); // use patchGroups
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
\\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -29,8 +29,7 @@ Description
|
|||||||
|
|
||||||
A keyType is the keyword of a dictionary.
|
A keyType is the keyword of a dictionary.
|
||||||
It differs from word in that it also accepts patterns (regular expressions).
|
It differs from word in that it also accepts patterns (regular expressions).
|
||||||
It is very similar to wordRe, but doesn't store the regular expression
|
It is very similar to wordRe, but doesn't store a regular expression.
|
||||||
separately.
|
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
keyType.C
|
keyType.C
|
||||||
@ -47,12 +46,10 @@ SourceFiles
|
|||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
// Forward declaration of classes
|
// Forward declarations
|
||||||
|
class keyType;
|
||||||
class Istream;
|
class Istream;
|
||||||
class Ostream;
|
class Ostream;
|
||||||
|
|
||||||
// Forward declaration of friend functions and operators
|
|
||||||
class keyType;
|
|
||||||
Istream& operator>>(Istream& is, keyType& kw);
|
Istream& operator>>(Istream& is, keyType& kw);
|
||||||
Ostream& operator<<(Ostream& os, const keyType& kw);
|
Ostream& operator<<(Ostream& os, const keyType& kw);
|
||||||
|
|
||||||
@ -70,6 +67,7 @@ class keyType
|
|||||||
//- Is the keyType a pattern (regular expression)
|
//- Is the keyType a pattern (regular expression)
|
||||||
bool isPattern_;
|
bool isPattern_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
//- No assignment where we cannot determine string/word type
|
//- No assignment where we cannot determine string/word type
|
||||||
@ -121,14 +119,17 @@ public:
|
|||||||
keyType(Istream& is);
|
keyType(Istream& is);
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member Functions
|
||||||
|
|
||||||
//- Is this character valid for a keyType?
|
//- Is this character valid for a keyType?
|
||||||
// This is largely identical with what word accepts, but also
|
// This is largely identical with what word accepts, but also
|
||||||
// permit brace-brackets, which are valid for some regexs.
|
// permit brace-brackets, which are valid for some regexs.
|
||||||
inline static bool valid(char c);
|
inline static bool valid(char c);
|
||||||
|
|
||||||
//- Treat as a pattern rather than a literal string?
|
//- The keyType is treated as literal, not as pattern.
|
||||||
|
inline bool isLiteral() const;
|
||||||
|
|
||||||
|
//- The keyType is treated as a pattern, not as literal string.
|
||||||
inline bool isPattern() const;
|
inline bool isPattern() const;
|
||||||
|
|
||||||
//- Swap contents
|
//- Swap contents
|
||||||
@ -139,7 +140,7 @@ public:
|
|||||||
bool match(const std::string& text, bool literal = false) const;
|
bool match(const std::string& text, bool literal = false) const;
|
||||||
|
|
||||||
|
|
||||||
// Member operators
|
// Member Operators
|
||||||
|
|
||||||
//- Perform smart match on text, as per match()
|
//- Perform smart match on text, as per match()
|
||||||
// Allows use as a predicate.
|
// Allows use as a predicate.
|
||||||
@ -162,7 +163,7 @@ public:
|
|||||||
inline void operator=(const char* s);
|
inline void operator=(const char* s);
|
||||||
|
|
||||||
|
|
||||||
// IOstream operators
|
// IOstream Operators
|
||||||
|
|
||||||
friend Istream& operator>>(Istream& is, keyType& kw);
|
friend Istream& operator>>(Istream& is, keyType& kw);
|
||||||
friend Ostream& operator<<(Ostream& os, const keyType& kw);
|
friend Ostream& operator<<(Ostream& os, const keyType& kw);
|
||||||
|
|||||||
@ -84,7 +84,6 @@ inline Foam::keyType::keyType(const std::string& s, const bool isPattern)
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline Foam::keyType::keyType(keyType&& s)
|
inline Foam::keyType::keyType(keyType&& s)
|
||||||
:
|
:
|
||||||
word(std::move(static_cast<word&>(s)), false),
|
word(std::move(static_cast<word&>(s)), false),
|
||||||
@ -117,6 +116,12 @@ inline Foam::keyType::keyType(std::string&& s, const bool isPattern)
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
inline bool Foam::keyType::isLiteral() const
|
||||||
|
{
|
||||||
|
return !isPattern_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline bool Foam::keyType::isPattern() const
|
inline bool Foam::keyType::isPattern() const
|
||||||
{
|
{
|
||||||
return isPattern_;
|
return isPattern_;
|
||||||
|
|||||||
@ -59,7 +59,7 @@ SourceFiles
|
|||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
// Forward declaration of friend functions and operators
|
// Forward declarations
|
||||||
class wordRe;
|
class wordRe;
|
||||||
class Istream;
|
class Istream;
|
||||||
class Ostream;
|
class Ostream;
|
||||||
@ -81,6 +81,7 @@ class wordRe
|
|||||||
//- The regular expression
|
//- The regular expression
|
||||||
mutable regExp re_;
|
mutable regExp re_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Static data members
|
// Static data members
|
||||||
@ -97,6 +98,7 @@ public:
|
|||||||
{
|
{
|
||||||
LITERAL = 0, //!< Treat as a string literal
|
LITERAL = 0, //!< Treat as a string literal
|
||||||
DETECT = 1, //!< Detect if the string contains meta-characters
|
DETECT = 1, //!< Detect if the string contains meta-characters
|
||||||
|
UNKNOWN = 1, //!< Unknown content.
|
||||||
REGEX = 2, //!< Treat as regular expression
|
REGEX = 2, //!< Treat as regular expression
|
||||||
ICASE = 4, //!< Ignore case in regular expression
|
ICASE = 4, //!< Ignore case in regular expression
|
||||||
NOCASE = 4, //!< \deprecated Alias for ICASE (deprecated APR-2018)
|
NOCASE = 4, //!< \deprecated Alias for ICASE (deprecated APR-2018)
|
||||||
@ -163,11 +165,14 @@ public:
|
|||||||
wordRe(Istream& is);
|
wordRe(Istream& is);
|
||||||
|
|
||||||
|
|
||||||
// Member functions
|
// Member Functions
|
||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
//- Treat as a pattern rather than a literal string?
|
//- The wordRe is treated as literal, not as pattern.
|
||||||
|
inline bool isLiteral() const;
|
||||||
|
|
||||||
|
//- The wordRe is treated as a pattern, not as literal string.
|
||||||
inline bool isPattern() const;
|
inline bool isPattern() const;
|
||||||
|
|
||||||
|
|
||||||
@ -248,7 +253,7 @@ public:
|
|||||||
inline void operator=(wordRe&& str);
|
inline void operator=(wordRe&& str);
|
||||||
|
|
||||||
|
|
||||||
// IOstream operators
|
// IOstream Operators
|
||||||
|
|
||||||
friend Istream& operator>>(Istream& is, wordRe& w);
|
friend Istream& operator>>(Istream& is, wordRe& w);
|
||||||
friend Ostream& operator<<(Ostream& os, const wordRe& w);
|
friend Ostream& operator<<(Ostream& os, const wordRe& w);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||||
\\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
\\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -157,6 +157,12 @@ inline Foam::wordRe::wordRe(const word& str, const compOption opt)
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
inline bool Foam::wordRe::isLiteral() const
|
||||||
|
{
|
||||||
|
return !re_.exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
inline bool Foam::wordRe::isPattern() const
|
inline bool Foam::wordRe::isPattern() const
|
||||||
{
|
{
|
||||||
return re_.exists();
|
return re_.exists();
|
||||||
|
|||||||
@ -174,9 +174,9 @@ bool Foam::functionObjects::ddt2::execute()
|
|||||||
// Check exact matches first
|
// Check exact matches first
|
||||||
for (const wordRe& select : selectFields_)
|
for (const wordRe& select : selectFields_)
|
||||||
{
|
{
|
||||||
if (!select.isPattern())
|
if (select.isLiteral())
|
||||||
{
|
{
|
||||||
const word& fieldName = static_cast<const word&>(select);
|
const word& fieldName = select;
|
||||||
|
|
||||||
if (!candidates.erase(fieldName))
|
if (!candidates.erase(fieldName))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -133,9 +133,9 @@ bool Foam::functionObjects::zeroGradient::execute()
|
|||||||
// Check exact matches first
|
// Check exact matches first
|
||||||
for (const wordRe& select : selectFields_)
|
for (const wordRe& select : selectFields_)
|
||||||
{
|
{
|
||||||
if (!select.isPattern())
|
if (select.isLiteral())
|
||||||
{
|
{
|
||||||
const word& fieldName = static_cast<const word&>(select);
|
const word& fieldName = select;
|
||||||
|
|
||||||
if (!candidates.erase(fieldName))
|
if (!candidates.erase(fieldName))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -284,7 +284,7 @@ bool Foam::functionObjects::ensightWrite::write()
|
|||||||
// Check exact matches first
|
// Check exact matches first
|
||||||
for (const wordRe& select : selectFields_)
|
for (const wordRe& select : selectFields_)
|
||||||
{
|
{
|
||||||
if (!select.isPattern())
|
if (select.isLiteral())
|
||||||
{
|
{
|
||||||
const word& fieldName = select;
|
const word& fieldName = select;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user