blob: 6887cbfd22dc07db271222ee77cf4143d7fb3fa0 [file] [log] [blame]
Mike Dodd8cfa7022010-11-17 11:12:26 -08001/**
2 * @file glob_filter.h
3 * Filter strings based on globbed exclude/include list
4 *
5 * @remark Copyright 2002 OProfile authors
6 * @remark Read the file COPYING
7 *
8 * @author Philippe Elie
9 * @author John Levon
10 */
11
12#ifndef GLOB_FILTER_H
13#define GLOB_FILTER_H
14
15#include "string_filter.h"
16
17/**
18 * glob_filter - filtering of a string based on globbed include/exclude list
19 *
20 * This class is an oracle on whether a particular string matches
21 * the given list of included and excluded strings.
22 *
23 * This class gives glob-based matches on each pattern, as with fnmatch(3)
24 */
25class glob_filter : public string_filter {
26public:
27 /**
28 * Initialise the filter with the include and exclude list,
29 * comma-separated.
30 */
31 glob_filter(std::string const & include_patterns,
32 std::string const & exclude_patterns)
33 : string_filter(include_patterns, exclude_patterns) {}
34
35 /**
36 * Initialise the filter with the include and exclude list.
37 */
38 glob_filter(std::vector<std::string> const & include_patterns,
39 std::vector<std::string> const & exclude_patterns)
40 : string_filter(include_patterns, exclude_patterns) {}
41
42 /// Returns true if the given string matches
43 virtual bool match(std::string const & str) const;
44
45protected:
46
47 /// function object for fnmatching
48 struct fnmatcher {
49 fnmatcher(std::string const & str) : str_(str) {}
50
51 bool operator()(std::string const & s);
52
53 std::string const & str_;
54 };
55};
56
57#endif /* GLOB_FILTER_H */