summaryrefslogtreecommitdiff
path: root/src/options
diff options
context:
space:
mode:
authorGereon Kremer <nafur42@gmail.com>2021-05-21 05:22:40 +0200
committerGitHub <noreply@github.com>2021-05-21 03:22:40 +0000
commit4268c75087e2bb68dbb2257d99e062a8cc897f8c (patch)
tree8764a3c95406701a7fd64867305f9f24ca9e789d /src/options
parent9670dd43576cd21de82e22e76c57e783aa143d21 (diff)
Move option names out of struct (#6554)
This PR moves the option names out of the option struct (which will be removed) to free constexpr string constants.
Diffstat (limited to 'src/options')
-rw-r--r--src/options/mkoptions.py8
-rw-r--r--src/options/module_template.h7
-rw-r--r--src/options/options_handler.cpp8
3 files changed, 17 insertions, 6 deletions
diff --git a/src/options/mkoptions.py b/src/options/mkoptions.py
index a7212641c..b6efb1695 100644
--- a/src/options/mkoptions.py
+++ b/src/options/mkoptions.py
@@ -122,12 +122,13 @@ TPL_HOLDER_MACRO_ATTR += " bool {name}__setByUser__ = false;"
TPL_HOLDER_MACRO_ATTR_DEF = " {type} {name} = {default};\\\n"
TPL_HOLDER_MACRO_ATTR_DEF += " bool {name}__setByUser__ = false;"
+TPL_NAME_DECL = 'static constexpr const char* {name}__name = "{long_name}";'
+
TPL_OPTION_STRUCT_RW = \
"""extern struct {name}__option_t
{{
typedef {type} type;
type operator()() const;
- static constexpr const char* name = "{long_name}";
}} thread_local {name};"""
TPL_DECL_SET = \
@@ -563,6 +564,7 @@ def codegen_module(module, dst_dir, tpl_module_h, tpl_module_cpp):
# *_options.h
includes = set()
holder_specs = []
+ option_names = []
decls = []
specs = []
inls = []
@@ -597,6 +599,7 @@ def codegen_module(module, dst_dir, tpl_module_h, tpl_module_cpp):
else:
long_name = ""
decls.append(tpl_decl.format(name=option.name, type=option.type, long_name = long_name))
+ option_names.append(TPL_NAME_DECL.format(name=option.name, type=option.type, long_name = long_name))
# Generate module specialization
specs.append(TPL_DECL_SET.format(name=option.name))
@@ -668,9 +671,10 @@ def codegen_module(module, dst_dir, tpl_module_h, tpl_module_cpp):
id_cap=module.id_cap,
id=module.id,
includes='\n'.join(sorted(list(includes))),
- holder_spec=' \\\n'.join(holder_specs),
+ holder_spec='\n'.join(holder_specs),
decls='\n'.join(decls),
specs='\n'.join(specs),
+ option_names='\n'.join(option_names),
inls='\n'.join(inls),
modes=''.join(mode_decl)))
diff --git a/src/options/module_template.h b/src/options/module_template.h
index 4e031d843..219775dd6 100644
--- a/src/options/module_template.h
+++ b/src/options/module_template.h
@@ -53,6 +53,13 @@ ${holder_spec}$
${decls}$
// clang-format on
+namespace ${id}$
+{
+// clang-format off
+${option_names}$
+// clang-format on
+}
+
} // namespace options
// clang-format off
diff --git a/src/options/options_handler.cpp b/src/options/options_handler.cpp
index ee5396dff..b80e5a3b8 100644
--- a/src/options/options_handler.cpp
+++ b/src/options/options_handler.cpp
@@ -256,22 +256,22 @@ void OptionsHandler::setStats(const std::string& option, bool value)
std::string opt = option.substr(2);
if (value)
{
- if (opt == options::statisticsAll.name)
+ if (option == options::base::statisticsAll__name)
{
d_options->base().statistics = true;
}
- else if (opt == options::statisticsEveryQuery.name)
+ else if (option == options::base::statisticsEveryQuery__name)
{
d_options->base().statistics = true;
}
- else if (opt == options::statisticsExpert.name)
+ else if (option == options::base::statisticsExpert__name)
{
d_options->base().statistics = true;
}
}
else
{
- if (opt == options::statistics.name)
+ if (option == options::base::statistics__name)
{
d_options->base().statisticsAll = false;
d_options->base().statisticsEveryQuery = false;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback