OSDN Git Service

An attempt to reduce build time
[winmerge-jp/winmerge-jp.git] / Src / OptionsEditorSyntax.cpp
1 #include "pch.h"
2 #include "OptionsEditorSyntax.h"
3 #include "OptionsMgr.h"
4 #include "parsers/crystallineparser.h"
5
6 namespace Options { namespace EditorSyntax
7 {
8
9 /** @brief Setting name for file type extension. */
10 const tchar_t Section[] = _T("FileTypes");
11
12 /**
13  * @brief Get the default value of the extension settings from OptionsMgr.
14  * @param [in] pOptionsMgr Pointer to OptionsMgr
15  * @param [out] pExtension Default value for extension settings
16  */
17 void GetDefaults(COptionsMgr* pOptionsMgr, String* pExtension)
18 {
19         if (pOptionsMgr == nullptr || pExtension == nullptr)
20                 return;
21
22         for (int i = CrystalLineParser::SRC_ABAP; i <= CrystalLineParser::SRC_XML; i++)
23         {
24                 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
25                 if (def != nullptr)
26                 {
27                         String name = strutils::format(_T("%s/%s.exts"), Section, def->name);
28                         String exts = pOptionsMgr->GetDefault<String>(name);
29                         pExtension[i-1] = std::move(exts);
30                 }
31         }
32 }
33
34 /**
35  * @brief Initialize file type extension settings.
36  * Register the extension settings defined in CrystalLineParser in OptionsMgr as the default value.
37  * Register the settings read from the registry in CrystalLineParser.
38  * @param [in] pOptionsMgr Pointer to OptionsMgr
39  */
40 void Init(COptionsMgr *pOptionsMgr)
41 {
42         if (pOptionsMgr == nullptr)
43                 return;
44
45         for (int i = CrystalLineParser::SRC_ABAP; i <= CrystalLineParser::SRC_XML; i++)
46         {
47                 // Register the extension settings defined in CrystalLineParser in OptionsMgr as the default value.
48                 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
49                 if (def != nullptr)
50                 {
51                         String name = strutils::format(_T("%s/%s.exts"), Section, def->name);
52                         pOptionsMgr->InitOption(name, String(def->exts));
53
54                         // Register the settings read from the registry in CrystalLineParser.
55                         String exts = pOptionsMgr->GetString(name);
56                         CrystalLineParser::SetExtension(i, exts.c_str());
57                 }
58         }
59 }
60
61 /**
62  * @brief Load extension settings from OptionsMgr.
63  * @param [in] pOptionsMgr Pointer to OptionsMgr
64  * @param [out] pExtension Loaded extension settings
65  */
66 void Load(COptionsMgr *pOptionsMgr, String* pExtension)
67 {
68         if (pOptionsMgr == nullptr || pExtension == nullptr)
69                 return;
70
71         for (int i = CrystalLineParser::SRC_ABAP; i <= CrystalLineParser::SRC_XML; i++)
72         {
73                 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
74                 if (def != nullptr)
75                 {
76                         String name = strutils::format(_T("%s/%s.exts"), Section, def->name);
77                         String exts = pOptionsMgr->GetString(name);
78                         pExtension[i-1] = std::move(exts);
79                 }
80         }
81 }
82
83 /**
84  * @brief Save the extension settings to OptionsMgr and CrystalLineParser.
85  * @param [in] pOptionsMgr Pointer to OptionsMgr
86  * @param [in] pExtension Extension settings
87  */
88 void Save(COptionsMgr* pOptionsMgr, const String* const pExtension)
89 {
90         if (pOptionsMgr == nullptr || pExtension == nullptr)
91                 return;
92
93         for (int i = CrystalLineParser::SRC_ABAP; i <= CrystalLineParser::SRC_XML; i++)
94         {
95                 // Save the extension settings to OptionsMgr.
96                 CrystalLineParser::TextDefinition* def = CrystalLineParser::GetTextType(i);
97                 if (def != nullptr)
98                 {
99                         String name = strutils::format(_T("%s/%s.exts"), Section, def->name);
100                         pOptionsMgr->SaveOption(name, pExtension[i-1]);
101
102                         // Save the extension settings to CrystalLineParser.
103                         CrystalLineParser::SetExtension(i, pExtension[i-1].c_str());
104                 }
105         }
106 }
107
108 }}