diff options
author | Gereon Kremer <nafur42@gmail.com> | 2021-05-21 05:22:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-21 03:22:40 +0000 |
commit | 4268c75087e2bb68dbb2257d99e062a8cc897f8c (patch) | |
tree | 8764a3c95406701a7fd64867305f9f24ca9e789d /src/options | |
parent | 9670dd43576cd21de82e22e76c57e783aa143d21 (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.py | 8 | ||||
-rw-r--r-- | src/options/module_template.h | 7 | ||||
-rw-r--r-- | src/options/options_handler.cpp | 8 |
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; |