A class for handling keywords in dictionaries. More...
Public Types | |
enum | option : unsigned char { LITERAL = 0 , REGEX = 1 , RECURSIVE = 0x80 , LITERAL_RECURSIVE = (LITERAL | RECURSIVE) , REGEX_RECURSIVE = (REGEX | RECURSIVE) } |
Enumeration for the data type and search/match modes (bitmask) More... | |
Public Member Functions | |
keyType () | |
Default construct, empty literal. More... | |
keyType (const keyType &)=default | |
Copy construct. More... | |
keyType (keyType &&)=default | |
Move construct. More... | |
keyType (const word &str) | |
Implicit copy construct from word, treat as LITERAL. More... | |
keyType (word &&str) | |
Implicit move construct from word, treat as LITERAL. More... | |
keyType (const string &str) | |
Implicit copy construct from Foam::string, treat as REGEX. More... | |
keyType (string &&str) | |
Implicit move construct from Foam::string, treat as REGEX. More... | |
keyType (const std::string &str, option opt) | |
Copy construct from std::string with specified treatment. More... | |
keyType (std::string &&str, option opt) | |
Move construct from std::string with specified treatment. More... | |
keyType (const char *str, option opt=option::LITERAL) | |
keyType (Istream &is) | |
Construct from Istream by reading a token. More... | |
bool | isLiteral () const noexcept |
The keyType is treated as literal, not as pattern. More... | |
bool | isPattern () const noexcept |
The keyType is treated as a pattern, not as literal string. More... | |
bool | assign (const token &tok) |
Assign from word or string token. More... | |
void | setType (option opt, bool adjust=false) |
bool | compile () noexcept |
Mark as regular expression. More... | |
void | uncompile () noexcept |
Mark as literal string. More... | |
void | uncompile (bool adjust) |
void | clear () |
Clear string and set as literal. More... | |
void | swap (keyType &rhs) |
Swap contents. Self-swapping is a no-op. More... | |
bool | match (const std::string &text, bool literal=false) const |
Smart match as regular expression or as a string. More... | |
bool | operator() (const std::string &text) const |
Perform smart match on text, as per match() More... | |
void | operator= (const std::string &)=delete |
No assignment where type could be indeterminate. More... | |
void | operator= (const keyType &str) |
Copy assignment, retaining type (literal or regex) More... | |
void | operator= (keyType &&str) |
Move assignment, retaining type (literal or regex) More... | |
void | operator= (const word &str) |
Assign from word, treat as literal. More... | |
void | operator= (const string &str) |
Assign from Foam::string, treat as regular expression. More... | |
void | operator= (const char *str) |
Assign from character array, treat as literal. More... | |
keyType (const std::string &s, bool isPattern) | |
Deprecated(2019-08) construct as literal/regex. More... | |
![]() | |
word ()=default | |
Default construct. More... | |
word (const word &)=default | |
Copy construct. More... | |
word (word &&w)=default | |
Move construct. More... | |
word (const string &s, bool doStrip=true) | |
Copy construct from Foam::string. More... | |
word (string &&s, bool doStrip=true) | |
Move construct from Foam::string. More... | |
word (const std::string &s, bool doStrip=true) | |
Copy construct from std::string. More... | |
word (std::string &&s, bool doStrip=true) | |
Move construct from std::string. More... | |
word (const char *s, bool doStrip=true) | |
Copy from character array. More... | |
word (const char *s, size_type len, bool doStrip) | |
Copy from buffer for a maximum number of characters. More... | |
word (Istream &is) | |
Construct from Istream. More... | |
void | stripInvalid () |
Strip invalid characters from this word. More... | |
word | lessExt () const |
Return word without extension (part before last .) More... | |
word | ext () const |
Return file name extension (part after last .) More... | |
word & | ext (const word &ending) |
Append a '.' and the ending, and return the object. More... | |
word & | operator= (const word &s) |
Copy assignment, no character validation required. More... | |
word & | operator= (word &&s) |
Move assignment, no character validation required. More... | |
word & | operator= (const string &s) |
Copy assignment from Foam::string, stripping invalid characters. More... | |
word & | operator= (string &&s) |
Move assignment from Foam::string, stripping invalid characters. More... | |
word & | operator= (const std::string &s) |
Copy assignment from std::string, stripping invalid characters. More... | |
word & | operator= (std::string &&s) |
Move assignment from std::string, stripping invalid characters. More... | |
word & | operator= (const char *s) |
Copy, stripping invalid characters. More... | |
template<class PrimitiveType > | |
Foam::word | printf (const char *fmt, const PrimitiveType &val) |
template<class PrimitiveType > | |
Foam::word | printf (const std::string &fmt, const PrimitiveType &val) |
bool | hasExt () const |
Various checks for extensions. More... | |
bool | hasExt (const char *ending) const |
Various checks for extensions. More... | |
bool | hasExt (const std::string &ending) const |
Various checks for extensions. More... | |
bool | hasExt (const wordRe &ending) const |
Various checks for extensions. More... | |
bool | removeExt () |
Remove extension, returning true if string changed. More... | |
![]() | |
string ()=default | |
Default construct. More... | |
string (const std::string &str) | |
Copy construct from std::string. More... | |
string (std::string &&str) | |
Move construct from std::string. More... | |
string (const char *str) | |
Construct as copy of character array. More... | |
string (const char *str, const size_type len) | |
Construct as copy with a maximum number of characters. More... | |
string (const char c) | |
Construct from a single character. More... | |
string (const size_type len, const char c) | |
Construct fill copies of a single character. More... | |
string (Istream &is) | |
Construct from Istream. More... | |
bool | match (const std::string &text) const |
Test for equality. More... | |
string & | replace (const std::string &s1, const std::string &s2, size_type pos=0) |
string & | replaceAll (const std::string &s1, const std::string &s2, size_type pos=0) |
string & | replaceAny (const std::string &s1, const char c2, size_type pos=0) |
string & | expand (const bool allowEmpty=false) |
bool | removeRepeated (const char character) |
Remove repeated characters. More... | |
bool | removeStart (const std::string &text) |
Remove the given text from the start of the string. More... | |
bool | removeStart (const char c) |
Remove leading character, unless string is a single character. More... | |
bool | removeEnd (const std::string &text) |
Remove the given text from the end of the string. More... | |
bool | removeEnd (const char c) |
Remove trailing character, unless string is a single character. More... | |
void | swap (std::string &str) |
Swap contents. Self-swapping is a no-op. More... | |
bool | operator() (const std::string &text) const |
Test for equality. Allows use as a predicate. More... | |
bool | starts_with (const std::string &s) const |
True if string starts with the given prefix (cf. C++20) More... | |
bool | starts_with (const char c) const |
True if string starts with the given character (cf. C++20) More... | |
bool | ends_with (const std::string &s) const |
True if string ends with the given suffix (cf. C++20) More... | |
bool | ends_with (const char c) const |
True if string ends with the given character (cf. C++20) More... | |
size_type | count (const char c) const |
bool | startsWith (const std::string &s) const |
Deprecated(2019-11) More... | |
bool | endsWith (const std::string &s) const |
Deprecated(2019-11) More... | |
bool | removeTrailing (const char c) |
Deprecated(2019-11) More... | |
Static Public Member Functions | |
static bool | valid (const char c) |
Test for valid keyType character? More... | |
![]() | |
template<class PrimitiveType > | |
static word | printf (const char *fmt, const PrimitiveType &val) |
Use a printf-style formatter for a primitive. More... | |
template<class PrimitiveType > | |
static word | printf (const std::string &fmt, const PrimitiveType &val) |
Use a printf-style formatter for a primitive. More... | |
static bool | valid (char c) |
Is this character valid for a word? More... | |
static word | validate (const std::string &s, const bool prefix=false) |
Construct validated word (no invalid characters). More... | |
static word | validate (const char *first, const char *last, const bool prefix=false) |
![]() | |
template<class StringType > | |
static bool | valid (const std::string &str) |
Does the string contain valid characters only? More... | |
template<class StringType > | |
static bool | stripInvalid (std::string &str) |
Strip invalid characters from the given string. More... | |
template<class StringType > | |
static StringType | validate (const std::string &str) |
Return a valid String from the given string. More... | |
Static Public Attributes | |
static const keyType | null |
An empty keyType. More... | |
![]() | |
static const char *const | typeName = "word" |
The typeName. More... | |
static int | debug |
Debugging. More... | |
static const word | null |
An empty word. More... | |
![]() | |
static const char *const | typeName = "string" |
The type name "string". More... | |
static int | debug |
The debug flag. More... | |
static const string | null |
An empty string. More... | |
Additional Inherited Members | |
![]() | |
std::string::size_type | find_ext () const |
Find position of a file extension dot, return npos on failure. More... | |
word | ext () const |
Return file name extension (part after last .) More... | |
bool | ext (const word &ending) |
Append a '.' and the ending. More... | |
bool | hasPath () const |
Return true if it contains a '/' character. More... | |
bool | hasExt () const |
Return true if it has an extension or simply ends with a '.'. More... | |
bool | hasExt (const char *ending) const |
Return true if the extension is the same as the given ending. More... | |
bool | hasExt (const std::string &ending) const |
Return true if the extension is the same as the given ending. More... | |
bool | hasExt (const wordRe &ending) const |
Return true if the extension matches the given ending. More... | |
bool | removeExt () |
Remove extension, returning true if string changed. More... | |
bool | removePath () |
Remove leading path, returning true if string changed. More... | |
![]() | |
static std::string::size_type | find_ext (const std::string &str) |
Find position of a file extension dot, return npos on failure. More... | |
template<class PrimitiveType > | |
static std::string::size_type | string_printf (std::string &output, const char *fmt, const PrimitiveType &val) |
A printf-style formatter for a primitive. More... | |
template<class PrimitiveType > | |
static std::string::size_type | string_printf (std::string &output, const std::string &fmt, const PrimitiveType &val) |
A printf-style formatter for a primitive. More... | |
A class for handling keywords in dictionaries.
A keyType is the keyword of a dictionary. It differs from word in that it also accepts patterns (regular expressions). It is very similar to wordRe, but doesn't store a regular expression.
enum option : unsigned char |
Enumeration for the data type and search/match modes (bitmask)
eg, (keyType::REGEX | keyType::RECURSIVE)
Enumerator | |
---|---|
LITERAL | String literal. |
REGEX | Regular expression. |
RECURSIVE | Recursive search (eg, in dictionary) |
LITERAL_RECURSIVE | |
REGEX_RECURSIVE |
|
inline |
Default construct, empty literal.
Definition at line 40 of file keyTypeI.H.
Implicit copy construct from word, treat as LITERAL.
Definition at line 47 of file keyTypeI.H.
Implicit move construct from word, treat as LITERAL.
Definition at line 54 of file keyTypeI.H.
Implicit copy construct from Foam::string, treat as REGEX.
Definition at line 61 of file keyTypeI.H.
Implicit move construct from Foam::string, treat as REGEX.
Definition at line 68 of file keyTypeI.H.
Copy construct from std::string with specified treatment.
Definition at line 75 of file keyTypeI.H.
Move construct from std::string with specified treatment.
Definition at line 82 of file keyTypeI.H.
|
inline |
Implicit construct from character array, with specified compile option (default is LITERAL)
Definition at line 89 of file keyTypeI.H.
Deprecated(2019-08) construct as literal/regex.
|
inlinestatic |
Test for valid keyType character?
Like Foam::word, but with brace-brackets, which are valid for some regexs.
Definition at line 31 of file keyTypeI.H.
References interfaceEntry::valid().
|
inlinenoexcept |
The keyType is treated as literal, not as pattern.
Definition at line 98 of file keyTypeI.H.
Referenced by GeometricBoundaryField< symmTensor, fvPatchField, volMesh >::GeometricBoundaryField().
|
inlinenoexcept |
The keyType is treated as a pattern, not as literal string.
Definition at line 104 of file keyTypeI.H.
Referenced by dictionary::add(), Ostream::beginBlock(), dictionary::changeKeyword(), Foam::findStrings(), Foam::getAcceptableFunctionKeys(), Foam::inplaceSubsetStrings(), Foam::operator<<(), wordRe::operator=(), Foam::subsetStrings(), wordRe::wordRe(), Ostream::write(), and Ostream::writeKeyword().
Assign from word or string token.
Words are treated as literals, strings as regex
Definition at line 73 of file keyType.C.
References token::isQuotedString(), token::isWord(), token::stringToken(), and token::wordToken().
Referenced by Foam::operator>>().
Change the representation, optionally stripping invalid word characters when changing to a literal
Definition at line 110 of file keyTypeI.H.
References word::debug.
|
inlinenoexcept |
Mark as regular expression.
Definition at line 127 of file keyTypeI.H.
|
inlinenoexcept |
Mark as literal string.
Definition at line 134 of file keyTypeI.H.
|
inline |
Mark as literal string, optionally strip invalid word characters when changing to a literal
Definition at line 140 of file keyTypeI.H.
References word::debug.
|
inline |
Clear string and set as literal.
Definition at line 152 of file keyTypeI.H.
References interfaceDefinitions::clear().
void swap | ( | keyType & | rhs | ) |
Smart match as regular expression or as a string.
Optionally force a literal match only
Definition at line 62 of file keyType.C.
References regExpCxx::match().
|
inline |
Perform smart match on text, as per match()
Allows use as a predicate.
Definition at line 161 of file keyTypeI.H.
|
delete |
No assignment where type could be indeterminate.
|
inline |
Copy assignment, retaining type (literal or regex)
Self-assignment is a no-op.
Definition at line 167 of file keyTypeI.H.
|
inline |
Move assignment, retaining type (literal or regex)
Self-assignment is a no-op.
Definition at line 179 of file keyTypeI.H.
References clear().
|
inline |
Assign from word, treat as literal.
Definition at line 198 of file keyTypeI.H.
|
inline |
Assign from Foam::string, treat as regular expression.
Definition at line 205 of file keyTypeI.H.
|
inline |
Assign from character array, treat as literal.
Definition at line 191 of file keyTypeI.H.
|
static |