18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file string_filter.h 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Filter strings based on exclude/include list 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2002 OProfile authors 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef STRING_FILTER_H 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define STRING_FILTER_H 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string> 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <vector> 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * string_filter - filtering of a string based on include/exclude list 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * This class is an oracle on whether a particular string matches 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * the given list of included and excluded strings. 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * This base class gives a default exact-match semantics. 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddclass string_filter { 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddpublic: 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd string_filter() {} 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /** 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Initialise the filter with the include and exclude list, 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * comma-separated. 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd string_filter(std::string const & include_patterns, 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::string const & exclude_patterns); 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /** 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Initialise the filter with the include and exclude list. 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd string_filter(std::vector<std::string> const & include_patterns, 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::vector<std::string> const & exclude_patterns); 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd virtual ~string_filter() {} 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /// Returns true if the given string matches 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd virtual bool match(std::string const & str) const; 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddprotected: 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /// include patterns 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::vector<std::string> include; 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd /// exclude patterns 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd std::vector<std::string> exclude; 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif /* STRING_FILTER_H */ 56