Library: Foundation
Package: Filesystem
Header: Poco/Glob.h
Description
This class implements glob-style pattern matching as known from Unix shells.
In the pattern string, '*' matches any sequence of characters, '?' matches any single character, [SET] matches any single character in the specified set, [!SET] matches any character not in the specified set.
A set is composed of characters or ranges; a range looks like character hyphen character (as in 0-9 or A-Z). [0-9a-zA-Z_] is the set of characters allowed in C identifiers. Any other character in the pattern must be matched exactly.
To suppress the special syntactic significance of any of '[]*?!-\', and match the character exactly, precede it with a backslash.
All strings are assumed to be UTF-8 encoded.
Member Summary
Member Functions: collect, glob, isDirectory, match, matchAfterAsterisk, matchSet
Enumerations
Options
Flags that modify the matching behavior.
GLOB_DEFAULT = 0x00
default behavior
GLOB_DOT_SPECIAL = 0x01
'*' and '?' do not match '.' at beginning of subject
GLOB_FOLLOW_SYMLINKS = 0x02
follow symbolic links
GLOB_CASELESS = 0x04
ignore case when comparing characters
GLOB_DIRS_ONLY = 0x80
only glob for directories (for internal use only)
Constructors
Glob
Glob(
const std::string & pattern,
int options = 0
);
Creates the Glob, using the given pattern. The pattern must not be an empty string.
If the GLOB_DOT_SPECIAL option is specified, '*' and '?' do not match '.' at the beginning of a matched subject. This is useful for making dot-files invisible in good old Unix-style.
Destructor
~Glob
~Glob();
Destroys the Glob.
Member Functions
glob
static void glob(
const std::string & pathPattern,
std::set < std::string > & files,
int options = 0
);
Creates a set of files that match the given pathPattern.
The path may be give in either Unix or Windows syntax and is automatically expanded by calling Path::expand().
The pattern may contain wildcard expressions even in intermediate directory names (e.g. /usr/include/*/*.h).
Note that, for obvious reasons, escaping characters in a pattern with a backslash does not work in Windows-style paths.
Directories that for whatever reason cannot be traversed are ignored.
glob
static void glob(
const char * pathPattern,
std::set < std::string > & files,
int options = 0
);
Creates a set of files that match the given pathPattern.
The path may be give in either Unix or Windows syntax and is automatically expanded by calling Path::expand().
The pattern may contain wildcard expressions even in intermediate directory names (e.g. /usr/include/*/*.h).
Note that, for obvious reasons, escaping characters in a pattern with a backslash does not work in Windows-style paths.
Directories that for whatever reason cannot be traversed are ignored.
glob
static void glob(
const Path & pathPattern,
std::set < std::string > & files,
int options = 0
);
Creates a set of files that match the given pathPattern.
The pattern may contain wildcard expressions even in intermediate directory names (e.g. /usr/include/*/*.h).
Note that, for obvious reasons, escaping characters in a pattern with a backslash does not work in Windows-style paths.
Directories that for whatever reason cannot be traversed are ignored.
glob
static void glob(
const Path & pathPattern,
const Path & basePath,
std::set < std::string > & files,
int options = 0
);
Creates a set of files that match the given pathPattern, starting from basePath.
The pattern may contain wildcard expressions even in intermediate directory names (e.g. /usr/include/*/*.h).
Note that, for obvious reasons, escaping characters in a pattern with a backslash does not work in Windows-style paths.
Directories that for whatever reason cannot be traversed are ignored.
match
bool match(
const std::string & subject
);
Matches the given subject against the glob pattern. Returns true if the subject matches the pattern, false otherwise.
collect
static void collect(
const Path & pathPattern,
const Path & base,
const Path & current,
const std::string & pattern,
std::set < std::string > & files,
int options
);
isDirectory
static bool isDirectory(
const Path & path,
bool followSymlink
);
match
bool match(
TextIterator & itp,
const TextIterator & endp,
TextIterator & its,
const TextIterator & ends
);
matchAfterAsterisk
bool matchAfterAsterisk(
TextIterator itp,
const TextIterator & endp,
TextIterator its,
const TextIterator & ends
);
matchSet
bool matchSet(
TextIterator & itp,
const TextIterator & endp,
int c
);