OSDN Git Service

Leave the class name as CIniOptionsMgr, but rename the filename to IniOptionsMgr.*
[winmerge-jp/winmerge-jp.git] / Src / SubstitutionFiltersList.h
1 /** 
2  * @file SubstitutionFiltersList.h
3  *
4  * @brief Declaration file for SubstitutionFiltersList class
5  */
6 #pragma once
7
8 #include <vector>
9 #include <memory>
10 #include "UnicodeString.h"
11 #include "SubstitutionList.h"
12
13 class COptionsMgr;
14
15 /**
16  @brief Structure for filter.
17  */
18 struct SubstitutionFilter
19 {
20         bool enabled;
21         bool useRegExp;
22         bool caseSensitive;
23         bool matchWholeWordOnly;
24         String pattern;
25         String replacement;
26 };
27
28 /**
29  @brief List of raw Ignored Substitution pairs.
30  */
31 class SubstitutionFiltersList
32 {
33 public:
34         SubstitutionFiltersList();
35         ~SubstitutionFiltersList();
36
37         void Add(const String& pattern, const String& replacement, bool useRegExp, bool caseSensitive, bool matchWholeWordOnly, bool enabled);
38         size_t GetCount() const;
39         void Empty();
40         const SubstitutionFilter &GetAt(size_t ind) const;
41         void CloneFrom(const SubstitutionFiltersList *list);
42         bool Compare(const SubstitutionFiltersList *list) const;
43         void SetEnabled(bool enabled) { m_enabled = enabled; }
44         bool GetEnabled() const { return m_enabled; }
45
46         void Initialize(COptionsMgr *pOptionsMgr);
47         void SaveFilters();
48
49         std::shared_ptr<SubstitutionList> MakeSubstitutionList(bool throwIfInvalid = false);
50
51 private:
52         bool m_enabled;
53         std::vector<SubstitutionFilter> m_items; /**< List for linefilter items */
54         COptionsMgr * m_pOptionsMgr; /**< Options-manager for storage */
55 };
56
57 /**
58  * @brief Returns count of items in the list.
59  * @return Count of filters in the list.
60  */
61 inline size_t SubstitutionFiltersList::GetCount() const
62 {
63         return m_items.size();
64 }
65
66 /**
67  * @brief Empties the list.
68  */
69 inline void SubstitutionFiltersList::Empty()
70 {
71         m_items.clear();
72 }