~arosales/test/oprofile

« back to all changes in this revision

Viewing changes to libutil++/glob_filter.h

  • Committer: Antonio Rosales
  • Date: 2013-03-28 08:40:26 UTC
  • Revision ID: antonio.rosales@canonical.com-20130328084026-gpqns1mkqd7cnr05
Move files up one directory.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * @file glob_filter.h
 
3
 * Filter strings 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 GLOB_FILTER_H
 
13
#define GLOB_FILTER_H
 
14
 
 
15
#include "string_filter.h"
 
16
 
 
17
/**
 
18
 * glob_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
 */
 
25
class glob_filter : public string_filter {
 
26
public:
 
27
        /**
 
28
         * Initialise the filter with the include and exclude list, 
 
29
         * comma-separated.
 
30
         */
 
31
        glob_filter(std::string const & include_patterns,
 
32
                    std::string const & exclude_patterns)
 
33
                : string_filter(include_patterns, exclude_patterns) {}
 
34
 
 
35
        /**
 
36
         * Initialise the filter with the include and exclude list.
 
37
         */
 
38
        glob_filter(std::vector<std::string> const & include_patterns,
 
39
                    std::vector<std::string> const & exclude_patterns)
 
40
                : string_filter(include_patterns, exclude_patterns) {}
 
41
 
 
42
        /// Returns true if the given string matches
 
43
        virtual bool match(std::string const & str) const;
 
44
 
 
45
protected:
 
46
 
 
47
        /// function object for fnmatching
 
48
        struct fnmatcher {
 
49
                fnmatcher(std::string const & str) : str_(str) {}
 
50
 
 
51
                bool operator()(std::string const & s);
 
52
 
 
53
                std::string const & str_;
 
54
        };
 
55
};
 
56
 
 
57
#endif /* GLOB_FILTER_H */