• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file path_filter.h
3  * Filter paths 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 PATH_FILTER_H
13 #define PATH_FILTER_H
14 
15 #include "glob_filter.h"
16 
17 /**
18  * path_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  * where each component of the candidate path is considered separately.
25  */
26 class path_filter : public glob_filter {
27 public:
28 	/**
29 	 * Initialise the filter with the include and exclude list,
30 	 * comma-separated.
31 	 */
32 	path_filter(std::string const & include_patterns = std::string(),
33 	            std::string const & exclude_patterns = std::string())
glob_filter(include_patterns,exclude_patterns)34 		: glob_filter(include_patterns, exclude_patterns) {}
35 
36 	/**
37 	 * Initialise the filter with the include and exclude list.
38 	 */
path_filter(std::vector<std::string> const & include_patterns,std::vector<std::string> const & exclude_patterns)39 	path_filter(std::vector<std::string> const & include_patterns,
40 	            std::vector<std::string> const & exclude_patterns)
41 		: glob_filter(include_patterns, exclude_patterns) {}
42 
43 
44 	/// Returns true if the given string matches
45 	virtual bool match(std::string const & str) const;
46 };
47 
48 #endif /* PATH_FILTER_H */
49