1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * @brief Declaration file for FileFilter
11 #define POCO_NO_UNWINDOWS 1
12 #include <Poco/RegularExpression.h>
13 #include "UnicodeString.h"
16 * @brief FileFilter rule.
18 * Contains one filtering element definition (rule). In addition to
19 * regular expression there is boolean value for defining if rule
20 * is inclusive or exclusive. File filters have global inclusive/exclusive
21 * selection but this per-rule setting overwrites it.
23 * We are using PCRE for regular expressions and pRegExp points to compiled
24 * regular expression. pRegExpExtra contains additional information about
25 * the expression used to optimize matching.
27 struct FileFilterElement
29 Poco::RegularExpression regexp; /**< Compiled regular expression */
30 FileFilterElement(const std::string ®ex, int reOpts) : regexp(regex, reOpts)
35 typedef std::shared_ptr<FileFilterElement> FileFilterElementPtr;
38 * @brief One actual filter.
40 * For example, this might be a GNU C filter, excluding *.o files and CVS
41 * directories. That is to say, a filter is a set of file masks and
42 * directory masks. Usually FileFilter contains rules from one filter
43 * definition file. So it can be thought as filter file contents.
48 bool default_include; /**< If true, filter rules are inclusive by default */
49 String name; /**< Filter name (shown in UI) */
50 String description; /**< Filter description text */
51 String fullpath; /**< Full path to filter file */
52 std::vector<FileFilterElementPtr> filefilters; /**< List of rules for files */
53 std::vector<FileFilterElementPtr> dirfilters; /**< List of rules for directories */
54 FileFilter() : default_include(true) { }
57 static void EmptyFilterList(std::vector<FileFilterElementPtr> *filterList);
60 typedef std::shared_ptr<FileFilter> FileFilterPtr;