NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
options.cpp
Go to the documentation of this file.
1#include "Options.h"
2
3// Includes:
4#include <wx/filename.h>
5#include <wx/arrstr.h>
6#include <wx/dir.h>
7
8#ifdef _DEBUG
9#define new DEBUG_NEW
10#endif
11
13{
14}
15
17{
18}
19
29{
30 std::string setting = analyzerOptsToString(opt);
31
32 if (setting.length())
33 m_settings[setting].active() = nVal;
34}
35
36
46{
47 switch (i)
48 {
49 case Styles::STANDARD:
51 case Styles::CONSOLE_STD:
53 case Styles::COMMAND:
55 case Styles::COMMENT:
57 case Styles::DOCCOMMENT:
59 case Styles::DOCKEYWORD:
61 case Styles::OPTION:
63 case Styles::FUNCTION:
65 case Styles::CUSTOM_FUNCTION:
67 case Styles::CLUSTER:
69 case Styles::CONSTANT:
71 case Styles::SPECIALVAL: // ans cache ...
73 case Styles::STRING:
75 case Styles::STRINGPARSER:
77 case Styles::OPERATOR:
79 case Styles::INCLUDES:
81 case Styles::PROCEDURE:
83 case Styles::PROCEDURE_COMMAND:
85 case Styles::NUMBER:
87 case Styles::METHODS:
89 case Styles::INSTALL:
91 case Styles::DEFAULT_VARS: // x y z t
93 case Styles::ACTIVE_LINE:
95 case Styles::STYLE_END:
96 break;
97 // missing default intended => will result in warning, if a enum case is not handled in switch
98 }
99
100 return SyntaxStyles();
101}
102
103
113{
114 std::string style = syntaxStylesToString((Styles)i);
115
116 if (style.length())
117 return SyntaxStyles(m_settings.at(style).stringval());
118
119 return SyntaxStyles();
120}
121
122
133void Options::SetSyntaxStyle(size_t i, const SyntaxStyles& styles)
134{
135 std::string style = syntaxStylesToString((Styles)i);
136
137 if (style.length())
138 m_settings[style].stringval() = styles.to_string();
139}
140
141
150void Options::readColoursFromConfig(wxFileConfig* _config)
151{
152 if (!_config->HasGroup("Styles"))
153 return;
154
155 static wxString KeyValues[] = {
156 "STANDARD",
157 "CONSOLE_STD",
158 "COMMAND",
159 "COMMENT",
160 "DOCCOMMENT",
161 "DOCKEYWORD",
162 "OPTION",
163 "FUNCTION",
164 "CUSTOM_FUNCTION",
165 "CLUSTER",
166 "CONSTANT",
167 "SPECIALVAL", // ans cache ...
168 "STRING",
169 "STRINGPARSER",
170 "INCLUDES",
171 "OPERATOR",
172 "PROCEDURE",
173 "NUMBER",
174 "PROCEDURE_COMMAND",
175 "METHODS",
176 "INSTALL",
177 "DEFAULT_VARS", // x y z t
178 "ACTIVE_LINE",
179 "STYLE_END"
180 };
181
182 wxString val;
183
184 for (size_t i = 0; i < Styles::STYLE_END; i++)
185 {
186 if (_config->Read("Styles/"+KeyValues[i], &val))
187 {
188 std::string style = syntaxStylesToString((Styles)i);
189
190 if (style.length())
191 m_settings[style].stringval() = SyntaxStyles(val).to_string();
192 }
193 }
194}
195
196
205void Options::readAnalyzerOptionsFromConfig(wxFileConfig* _config)
206{
207 if (!_config->HasGroup("AnalyzerOptions"))
208 return;
209
210 static wxString KeyValues[] = {
211 "USE_NOTES",
212 "USE_WARNINGS",
213 "USE_ERRORS",
214 "COMMENT_DENSITY",
215 "LINES_OF_CODE",
216 "COMPLEXITY",
217 "MAGIC_NUMBERS",
218 "ALWAYS_SHOW_METRICS",
219 "INLINE_IF",
220 "CONSTANT_EXPRESSION",
221 "RESULT_SUPPRESSION",
222 "RESULT_ASSIGNMENT",
223 "TYPE_ORIENTATION",
224 "MISLEADING_TYPE",
225 "ARGUMENT_UNDERSCORE",
226 "VARIABLE_LENGTH",
227 "UNUSED_VARIABLES",
228 "PROCEDURE_LENGTH",
229 "THISFILE_NAMESPACE",
230 "PROGRESS_RUNTIME",
231 "SWITCH_FALLTHROUGH",
232 "GLOBAL_VARIABLES",
233 "ANALYZER_OPTIONS_END"
234 };
235
236 wxString val;
237
238 for (size_t i = 0; i < AnalyzerOptions::ANALYZER_OPTIONS_END; i++)
239 {
240 if (_config->Read("AnalyzerOptions/"+KeyValues[i], &val))
241 {
242 SetAnalyzerOption((AnalyzerOptions)i, StrToInt(val.ToStdString()));
243 }
244 }
245}
246
247
257{
258 std::string setting = analyzerOptsToString(opt);
259
260 if (setting.length())
261 return m_settings.at(setting).active();
262
263 return 0;
264}
265
266
275wxArrayString Options::GetStyleIdentifier() const
276{
277 wxArrayString sReturn;
278 sReturn.Add("STANDARD");
279 sReturn.Add("CONSOLE_STD");
280 sReturn.Add("COMMAND");
281 sReturn.Add("COMMENT");
282 sReturn.Add("DOCUMENTATIONCOMMENT");
283 sReturn.Add("DOCUMENTATIONKEYWORD");
284 sReturn.Add("OPTION");
285 sReturn.Add("FUNCTION");
286 sReturn.Add("CUSTOM_FUNCTION");
287 sReturn.Add("CLUSTER");
288 sReturn.Add("CONSTANT");
289 sReturn.Add("SPECIALVAL");
290 sReturn.Add("STRING");
291 sReturn.Add("STRINGPARSER");
292 sReturn.Add("INCLUDES");
293 sReturn.Add("OPERATOR");
294 sReturn.Add("PROCEDURE");
295 sReturn.Add("NUMBER");
296 sReturn.Add("PROCEDURE_COMMAND");
297 sReturn.Add("METHODS");
298 sReturn.Add("INSTALL");
299 sReturn.Add("DEFAULT_VARS");
300 sReturn.Add("ACTIVE_LINE");
301
302 return sReturn;
303}
304
305
315size_t Options::GetIdByIdentifier(const wxString& identifier) const
316{
317 wxArrayString identifiers = GetStyleIdentifier();
318
319 return identifiers.Index(identifier);
320}
321
322
333{
334 switch (opt)
335 {
336 case AnalyzerOptions::USE_NOTES:
338 case AnalyzerOptions::USE_WARNINGS:
340 case AnalyzerOptions::USE_ERRORS:
342 case AnalyzerOptions::COMMENT_DENSITY:
344 case AnalyzerOptions::LINES_OF_CODE:
345 return SETTING_B_AN_LOC;
346 case AnalyzerOptions::COMPLEXITY:
348 case AnalyzerOptions::MAGIC_NUMBERS:
350 case AnalyzerOptions::ALWAYS_SHOW_METRICS:
352 case AnalyzerOptions::INLINE_IF:
354 case AnalyzerOptions::CONSTANT_EXPRESSION:
356 case AnalyzerOptions::RESULT_SUPPRESSION:
358 case AnalyzerOptions::RESULT_ASSIGNMENT:
360 case AnalyzerOptions::TYPE_ORIENTATION:
361 return SETTING_B_AN_TYPING;
362 case AnalyzerOptions::MISLEADING_TYPE:
364 case AnalyzerOptions::ARGUMENT_UNDERSCORE:
366 case AnalyzerOptions::VARIABLE_LENGTH:
368 case AnalyzerOptions::UNUSED_VARIABLES:
370 case AnalyzerOptions::PROCEDURE_LENGTH:
372 case AnalyzerOptions::THISFILE_NAMESPACE:
374 case AnalyzerOptions::PROGRESS_RUNTIME:
376 case AnalyzerOptions::SWITCH_FALLTHROUGH:
378 case AnalyzerOptions::GLOBAL_VARIABLES:
380 case AnalyzerOptions::ANALYZER_OPTIONS_END:
381 break;
382 }
383
384 return "";
385}
386
387
396std::string Options::syntaxStylesToString(Styles style) const
397{
398 switch (style)
399 {
400 case Styles::STANDARD:
402 case Styles::CONSOLE_STD:
404 case Styles::COMMAND:
406 case Styles::COMMENT:
408 case Styles::DOCCOMMENT:
410 case Styles::DOCKEYWORD:
412 case Styles::OPTION:
413 return SETTING_S_ST_OPTION;
414 case Styles::FUNCTION:
416 case Styles::CUSTOM_FUNCTION:
418 case Styles::CLUSTER:
420 case Styles::CONSTANT:
422 case Styles::SPECIALVAL:
424 case Styles::STRING:
425 return SETTING_S_ST_STRING;
426 case Styles::STRINGPARSER:
428 case Styles::INCLUDES:
430 case Styles::OPERATOR:
432 case Styles::PROCEDURE:
434 case Styles::NUMBER:
435 return SETTING_S_ST_NUMBER;
436 case Styles::PROCEDURE_COMMAND:
438 case Styles::METHODS:
440 case Styles::INSTALL:
442 case Styles::DEFAULT_VARS:
444 case Styles::ACTIVE_LINE:
446 case Styles::STYLE_END:
447 break;
448 }
449
450 return "";
451}
452
453
454
455
std::string analyzerOptsToString(AnalyzerOptions opt) const
Convert the static code analyzer enumeration values into the new settings strings.
Definition: options.cpp:332
void SetSyntaxStyle(size_t i, const SyntaxStyles &styles)
Update a selected syntax style by converting the passed SyntaxStyles object into a style string and s...
Definition: options.cpp:133
size_t GetIdByIdentifier(const wxString &identifier) const
This member function returns the ID of a syntax style by passing the style identifier as a string.
Definition: options.cpp:315
Styles
An enumeration of all available syntax styles.
Definition: Options.h:277
void readColoursFromConfig(wxFileConfig *_config)
Legacy syntax style import function from file configuration.
Definition: options.cpp:150
int GetAnalyzerOption(AnalyzerOptions opt) const
Return the value of the selected static code analyzer option.
Definition: options.cpp:256
AnalyzerOptions
An enumeration of all available static analyzer options.
Definition: Options.h:309
void readAnalyzerOptionsFromConfig(wxFileConfig *_config)
Legacy analyzer import function from file configuration.
Definition: options.cpp:205
SyntaxStyles GetSyntaxStyle(size_t i) const
Return the selected syntax style by constructing it from the style string.
Definition: options.cpp:112
~Options()
Definition: options.cpp:16
SyntaxStyles GetDefaultSyntaxStyle(size_t i) const
Return the default syntax style as defined by the programmers.
Definition: options.cpp:45
Options()
Definition: options.cpp:12
wxArrayString GetStyleIdentifier() const
This member function returns an array of the style enumeration identifiers converted to a string.
Definition: options.cpp:275
void SetAnalyzerOption(AnalyzerOptions opt, int nVal)
Change a static code analyzer setting.
Definition: options.cpp:28
std::string syntaxStylesToString(Styles style) const
Convert the syntax style enumeration values into the new settings strings.
Definition: options.cpp:396
This class manages the setting values of the internal (kernel) settings of this application.
Definition: settings.hpp:663
std::map< std::string, SettingsValue > m_settings
Definition: settings.hpp:676
int StrToInt(const std::string &)
Converts a string into an integer.
#define DEFAULT_ST_DOCCOMMENT
Definition: settings.hpp:156
#define DEFAULT_ST_ACTIVELINE
Definition: settings.hpp:173
#define DEFAULT_ST_STANDARD
Definition: settings.hpp:151
#define SETTING_S_ST_FUNCTION
Definition: settings.hpp:134
#define SETTING_B_AN_CONSTANTS
Definition: settings.hpp:120
#define SETTING_S_ST_CLUSTER
Definition: settings.hpp:136
#define SETTING_B_AN_USEERRORS
Definition: settings.hpp:105
#define SETTING_S_ST_PROCCOMMAND
Definition: settings.hpp:129
#define DEFAULT_ST_OPERATOR
Definition: settings.hpp:167
#define SETTING_B_AN_GLOBALVARS
Definition: settings.hpp:119
#define SETTING_B_AN_TYPING
Definition: settings.hpp:115
#define DEFAULT_ST_PROCEDURE
Definition: settings.hpp:168
#define SETTING_B_AN_PROCLENGTH
Definition: settings.hpp:122
#define DEFAULT_ST_OPTION
Definition: settings.hpp:158
#define DEFAULT_ST_FUNCTION
Definition: settings.hpp:159
#define SETTING_B_AN_INLINEIF
Definition: settings.hpp:121
#define DEFAULT_ST_CLUSTER
Definition: settings.hpp:161
#define SETTING_S_ST_INCLUDES
Definition: settings.hpp:141
#define SETTING_S_ST_ACTIVELINE
Definition: settings.hpp:148
#define SETTING_S_ST_OPTION
Definition: settings.hpp:133
#define DEFAULT_ST_NUMBER
Definition: settings.hpp:169
#define DEFAULT_ST_COMMAND
Definition: settings.hpp:153
#define SETTING_S_ST_CUSTOMFUNC
Definition: settings.hpp:135
#define SETTING_S_ST_INSTALL
Definition: settings.hpp:146
#define SETTING_B_AN_COMMENTDENS
Definition: settings.hpp:109
#define SETTING_B_AN_COMPLEXITY
Definition: settings.hpp:111
#define SETTING_S_ST_METHODS
Definition: settings.hpp:145
#define SETTING_B_AN_USENOTES
Definition: settings.hpp:103
#define SETTING_S_ST_STRINGPARSER
Definition: settings.hpp:140
#define DEFAULT_ST_STRINGPARSER
Definition: settings.hpp:165
#define SETTING_B_AN_UNDERSCOREARGS
Definition: settings.hpp:107
#define SETTING_B_AN_THISFILE
Definition: settings.hpp:108
#define SETTING_B_AN_PROGRESS
Definition: settings.hpp:123
#define DEFAULT_ST_INCLUDES
Definition: settings.hpp:166
#define SETTING_B_AN_UNUSEDVARS
Definition: settings.hpp:118
#define SETTING_S_ST_PROCEDURE
Definition: settings.hpp:143
#define SETTING_B_AN_FALLTHROUGH
Definition: settings.hpp:124
#define DEFAULT_ST_STRING
Definition: settings.hpp:164
#define DEFAULT_ST_DEFVARS
Definition: settings.hpp:172
#define SETTING_B_AN_ALWAYSMETRICS
Definition: settings.hpp:112
#define DEFAULT_ST_SPECIALVAL
Definition: settings.hpp:163
#define SETTING_S_ST_DOCKEYWORD
Definition: settings.hpp:132
#define DEFAULT_ST_PROCCOMMAND
Definition: settings.hpp:154
#define SETTING_B_AN_LOC
Definition: settings.hpp:110
#define SETTING_S_ST_SPECIALVAL
Definition: settings.hpp:138
#define SETTING_B_AN_VARLENGTH
Definition: settings.hpp:117
#define DEFAULT_ST_METHODS
Definition: settings.hpp:170
#define SETTING_B_AN_RESULTASS
Definition: settings.hpp:114
#define SETTING_S_ST_COMMENT
Definition: settings.hpp:130
#define SETTING_S_ST_STANDARD
Definition: settings.hpp:126
#define DEFAULT_ST_CONSOLESTD
Definition: settings.hpp:152
#define SETTING_S_ST_STRING
Definition: settings.hpp:139
#define DEFAULT_ST_CUSTOMFUNC
Definition: settings.hpp:160
#define DEFAULT_ST_CONSTANT
Definition: settings.hpp:162
#define DEFAULT_ST_COMMENT
Definition: settings.hpp:155
#define DEFAULT_ST_DOCKEYWORD
Definition: settings.hpp:157
#define SETTING_S_ST_DEFVARS
Definition: settings.hpp:147
#define DEFAULT_ST_INSTALL
Definition: settings.hpp:171
#define SETTING_S_ST_OPERATOR
Definition: settings.hpp:142
#define SETTING_S_ST_NUMBER
Definition: settings.hpp:144
#define SETTING_B_AN_RESULTSUP
Definition: settings.hpp:113
#define SETTING_S_ST_COMMAND
Definition: settings.hpp:128
#define SETTING_S_ST_CONSTANT
Definition: settings.hpp:137
#define SETTING_S_ST_CONSOLESTD
Definition: settings.hpp:127
#define SETTING_B_AN_MISLEADINGTYPE
Definition: settings.hpp:116
#define SETTING_B_AN_USEWARNINGS
Definition: settings.hpp:104
#define SETTING_B_AN_MAGICNUMBERS
Definition: settings.hpp:106
#define SETTING_S_ST_DOCCOMMENT
Definition: settings.hpp:131
This structure contains the necessary data to completely define a style for a distinctive syntax elem...
Definition: Options.h:27
std::string to_string() const
Transforms the internal data into a string style representation according the following scheme: r:g:b...
Definition: Options.h:131