dirstr::pattern_f Struct Reference
[Vordefinierte Filter- und Filter-Adapter-Klassen]

pattern_f wählt Einträge die einem bestimmten Muster genügen. More...

Inheritance diagram for dirstr::pattern_f:

dirstr::filter_base List of all members.

Public Member Functions

 pattern_f (const char *pattern, entry_type types=files_and_dirs_not_dot_or_dot_dot, bool checkPath=false, bool ignoreCase=false)
bool operator() (const std::string &entryName) const
 Liefert true, falls entryName dem im Ctor übergebenen Pattern genügt und vom richtigen Typ ist.
 ADD_CLONE_IMPL (pattern_f)

Classes

class  invalid_pattern
 Exception die geworfen wird, falls ein ungültiges Pattern an pattern_f übergeben wurde. More...

Detailed Description

pattern_f wählt Einträge die einem bestimmten Muster genügen.

Author:
Benjamin Kaufmann
Date:
2002-2004
Version:
0.4
Ein Muster kann die bekannten Wildcards '*' und '?' enthalten wobei Außerdem unterstützt dieser Filter einfache Zeichenmengen eingeschlossen in [].

Note:
Soll eine Zeichenmenge das Zeichen ']' enthalten, so muss dieses Zeichen das erste Zeichen der Menge sein (z.B. []ab] -> matched ']' oder 'a' oder 'b')

pattern_f unterstützt derzeit weder Ranges noch Negation, d.h. [a-z] matched entweder 'a', '-' oder 'z' nicht ein beliebiges Zeichen zwischen a und z.

Auf POSIX.2 konformen Systemen sollte auf die weitaus leistungsfähigeren Funktionen fnmatch bzw. glob zurückgegriffen werden. fnmatch kann man mit dem dirstream z.B. wie folgt nutzen:

 #include <fnmatch.h>
 struct FnMatcher
 {
        FnMatcher(const char* pattern, int flags)
                : pattern_(pattern)
                , flags_(flags)
        {}
        bool operator()(const std::string& e) const {
                return ::fnmatch(pattern_, e.c_str(), flags_);
        }
 private:
        const char* pattern_;
        int flags_;
 };
 ...
 dirstream s(".", pred_f(FnMatcher("*.cpp", 0));


Constructor & Destructor Documentation

dirstr::pattern_f::pattern_f ( const char *  pattern,
entry_type  types = files_and_dirs_not_dot_or_dot_dot,
bool  checkPath = false,
bool  ignoreCase = false 
) [inline, explicit]

Precondition:
pattern != 0
Parameters:
pattern Muster dem auszuwählende Einträge genügen müssen.
types Eintragstypen die untersucht werden sollen.
checkPath false, falls nur der Name des Eintrags, nicht aber sein Pfad beim pattern matching berücksichtigt werden soll. false ist der Default-Wert.
Note:
Die Berücksichtigung des Pfades beim pattern matching kann zu unerwarteten Ergebnissen führen, da der Path-Seperator nicht besonders behandelt wird. D.h. insbesondere, dass er auch durch * oder ? gematched werden kann. Das Muster "Foo*" matched in diesem Fall also auch einen Eintrag "Foo/bar.cpp"
Parameters:
ignoreCase true, falls case-insensitiv verglichen werden soll.
Exceptions:
pattern_f::invalid_pattern pattern_f::invalid_pattern


The documentation for this struct was generated from the following file:
Generated on Fri Apr 27 13:12:36 2007 for Highlight Code Converter by  doxygen 1.5.2