• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file string_filter.cpp
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 #include <algorithm>
13 
14 #include "string_filter.h"
15 #include "string_manip.h"
16 
17 using namespace std;
18 
19 
string_filter(string const & include_patterns,string const & exclude_patterns)20 string_filter::string_filter(string const & include_patterns,
21                              string const & exclude_patterns)
22 	: include(separate_token(include_patterns, ',')),
23 	  exclude(separate_token(exclude_patterns, ','))
24 {
25 }
26 
27 
string_filter(vector<string> const & include_patterns,vector<string> const & exclude_patterns)28 string_filter::string_filter(vector<string> const & include_patterns,
29                              vector<string> const & exclude_patterns)
30 	: include(include_patterns),
31 	exclude(exclude_patterns)
32 {
33 }
34 
35 
36 // FIXME: PP reference
match(string const & str) const37 bool string_filter::match(string const & str) const
38 {
39 	vector<string>::const_iterator cit;
40 	cit = find(exclude.begin(), exclude.end(), str);
41 	if (cit != exclude.end())
42 		return false;
43 
44 	cit = find(include.begin(), include.end(), str);
45 	if (include.empty() || cit != include.end())
46 		return true;
47 
48 	return false;
49 }
50