C++程序  |  50行  |  1.06 KB

/**
 * @file string_filter.cpp
 * Filter strings based on exclude/include list
 *
 * @remark Copyright 2002 OProfile authors
 * @remark Read the file COPYING
 *
 * @author Philippe Elie
 * @author John Levon
 */

#include <algorithm>

#include "string_filter.h"
#include "string_manip.h"

using namespace std;


string_filter::string_filter(string const & include_patterns,
                             string const & exclude_patterns)
	: include(separate_token(include_patterns, ',')),
	  exclude(separate_token(exclude_patterns, ','))
{
}


string_filter::string_filter(vector<string> const & include_patterns,
                             vector<string> const & exclude_patterns)
	: include(include_patterns),
	exclude(exclude_patterns)
{
}


// FIXME: PP reference
bool string_filter::match(string const & str) const
{
	vector<string>::const_iterator cit;
	cit = find(exclude.begin(), exclude.end(), str);
	if (cit != exclude.end())
		return false;

	cit = find(include.begin(), include.end(), str);
	if (include.empty() || cit != include.end())
		return true;

	return false;
}