OSDN Git Service

Leave the class name as CIniOptionsMgr, but rename the filename to IniOptionsMgr.*
[winmerge-jp/winmerge-jp.git] / Src / SubstitutionList.h
1 /**
2  * @file  SubstitutionList.h
3  *
4  * @brief Declaration file for SubstitutionList.
5  */
6 #pragma once
7
8 #include <vector>
9 #include <memory>
10 #include <Poco/RegularExpression.h>
11 #include "unicoder.h"
12
13
14 struct SubstitutionItem
15 {
16         SubstitutionItem(const std::string& pattern, const std::string& replacement,
17                 int regexpCompileOptions);
18         SubstitutionItem(const SubstitutionItem& other);
19
20         const std::string pattern;
21         const std::string replacement;
22         const int regexpCompileOptions;
23         Poco::RegularExpression regexp; /**< Compiled regular expression */
24 };
25
26 class SubstitutionList
27 {
28 public:
29         SubstitutionList() {};
30
31         void Add(const std::string& pattern, const std::string& replacement, int regexpCompileOptions);
32         void Add(const std::string& pattern, const std::string& replacement, bool caseSensitive, bool matchWholeWordOnly);
33         void RemoveAllFilters();
34         bool HasRegExps() const { return !m_list.empty(); }
35         size_t GetCount() const { return m_list.size(); }
36         std::string Subst(const std::string& subject, int codepage = CP_UTF8) const;
37         const SubstitutionItem& operator[](int index) const { return m_list[index]; }
38
39 private:
40         std::vector<SubstitutionItem> m_list;
41 };
42