• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file string_filter.h
3  * Filter strings based on 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 STRING_FILTER_H
13 #define STRING_FILTER_H
14 
15 #include <string>
16 #include <vector>
17 
18 /**
19  * string_filter - filtering of a string based on include/exclude list
20  *
21  * This class is an oracle on whether a particular string matches
22  * the given list of included and excluded strings.
23  *
24  * This base class gives a default exact-match semantics.
25  */
26 class string_filter {
27 public:
string_filter()28 	string_filter() {}
29 
30 	/**
31 	 * Initialise the filter with the include and exclude list,
32 	 * comma-separated.
33 	 */
34 	string_filter(std::string const & include_patterns,
35 	              std::string const & exclude_patterns);
36 
37 	/**
38 	 * Initialise the filter with the include and exclude list.
39 	 */
40 	string_filter(std::vector<std::string> const & include_patterns,
41 	              std::vector<std::string> const & exclude_patterns);
42 
~string_filter()43 	virtual ~string_filter() {}
44 
45 	/// Returns true if the given string matches
46 	virtual bool match(std::string const & str) const;
47 
48 protected:
49 	/// include patterns
50 	std::vector<std::string> include;
51 	/// exclude patterns
52 	std::vector<std::string> exclude;
53 };
54 
55 #endif /* STRING_FILTER_H */
56