LLVM 22.0.0git
|
This class implements a glob pattern matcher similar to the one found in bash, but with some key differences. More...
#include "llvm/Support/GlobPattern.h"
Public Member Functions | |
LLVM_ABI bool | match (StringRef S) const |
bool | isTrivialMatchAll () const |
Static Public Member Functions | |
static LLVM_ABI Expected< GlobPattern > | create (StringRef Pat, std::optional< size_t > MaxSubPatterns={}) |
This class implements a glob pattern matcher similar to the one found in bash, but with some key differences.
Namely, that *
matches all characters and does not exclude path separators.
?
matches a single character.*
matches zero or more characters.[<chars>]
matches one character in the bracket. Character ranges, e.g., [a-z]
, and negative sets via [^ab]
or [!ab]
are also supported.{<glob>,...}
matches one of the globs in the list. Nested brace expansions are not supported. If MaxSubPatterns
is empty then brace expansions are not supported and characters {,}
are treated as literals.\
escapes the next character so it is treated as a literal.Some known edge cases are:
]
is allowed as the first character in a character class, i.e., []]
is valid and matches the literal ]
.[]
, is invalid.{}
, {a}
, are invalid.}
and ,
that are not inside a brace expansion are taken as literals, e.g., ,}
is valid but {
is not.Examples:
*[/\\]foo.{c,cpp}
will match (unix or windows) paths to files named foo.c
or foo.cpp
._Z{N,NK,}S[tabsoid]*
will match mangled C++ standard library functions. Definition at line 52 of file GlobPattern.h.
|
static |
Pat | the pattern to match against |
MaxSubPatterns | if provided limit the number of allowed subpatterns created from expanding braces otherwise disable brace expansion |
Definition at line 136 of file GlobPattern.cpp.
References llvm::StringRef::find_first_of(), parseBraceExpansions(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::StringRef::substr().
Referenced by llvm::objcopy::NameOrPattern::create(), llvm::ifs::filterIFSSyms(), and llvm::SpecialCaseList::Matcher::insert().
|
inline |
Definition at line 65 of file GlobPattern.h.
References llvm::StringRef::empty(), and llvm::SmallVectorBase< Size_T >::size().
true
if S
matches this glob pattern Definition at line 193 of file GlobPattern.cpp.
References llvm::StringRef::consume_front(), llvm::SmallVectorBase< Size_T >::empty(), and llvm::StringRef::empty().
Referenced by llvm::SpecialCaseList::Matcher::match().