Remove Options::ref() (#6647)
authorGereon Kremer <nafur42@gmail.com>
Mon, 31 May 2021 14:05:39 +0000 (16:05 +0200)
committerGitHub <noreply@github.com>
Mon, 31 May 2021 14:05:39 +0000 (16:05 +0200)
This PR gets rid of the templated Options::ref() method (and all its specializations for every option).

src/options/mkoptions.py
src/options/options_template.cpp
src/options/options_template.h

index 9277fa8d90a0fdd6d2f74bc935a472156a5e7a68..fc52dfe0d8a4734772bb8b4ff9a0186e1dd12eff 100644 (file)
@@ -139,17 +139,6 @@ TPL_OPTION_STRUCT_RW = \
   type operator()() const;
 }} thread_local {name};"""
 
-TPL_DECL_SET = \
-"""template <> options::{name}__option_t::type& Options::ref(
-    options::{name}__option_t);"""
-
-TPL_IMPL_SET = TPL_DECL_SET[:-1] + \
-"""
-{{
-    return {module}.{name};
-}}"""
-
-
 TPL_DECL_OP_BRACKET = \
 """template <> const options::{name}__option_t::type& Options::operator[](
     options::{name}__option_t) const;"""
@@ -612,7 +601,6 @@ def codegen_module(module, dst_dir, tpl_module_h, tpl_module_cpp):
 
         # Generate module specialization
         default_decl.append(TPL_DECL_SET_DEFAULT.format(module=module.id, name=option.name, funcname=capoptionname, type=option.type))
-        specs.append(TPL_DECL_SET.format(name=option.name))
         specs.append(TPL_DECL_OP_BRACKET.format(name=option.name))
         specs.append(TPL_DECL_WAS_SET_BY_USER.format(name=option.name))
 
@@ -635,7 +623,6 @@ def codegen_module(module, dst_dir, tpl_module_h, tpl_module_cpp):
 
         # Accessors
         default_impl.append(TPL_IMPL_SET_DEFAULT.format(module=module.id, name=option.name, funcname=capoptionname, type=option.type))
-        accs.append(TPL_IMPL_SET.format(module=module.id, name=option.name))
         accs.append(TPL_IMPL_OP_BRACKET.format(module=module.id, name=option.name))
         accs.append(TPL_IMPL_WAS_SET_BY_USER.format(module=module.id, name=option.name))
 
index 26e11a6701f34fb2dc3291d97509a9ba3ad3dd5d..091acfd7a68cc744fb6b96f521c2338388dd7e05 100644 (file)
@@ -242,14 +242,6 @@ ${holder_mem_copy}$
   }
 }
 
-std::string Options::formatThreadOptionException(const std::string& option) {
-  std::stringstream ss;
-  ss << "can't understand option `" << option
-     << "': expected something like --threadN=\"--option1 --option2\","
-     << " where N is a nonnegative integer";
-  return ss.str();
-}
-
 void Options::setListener(OptionsListener* ol) { d_olisten = ol; }
 
 // clang-format off
index c5d233511331692812176233e8a0f222a332cb93..502dfb833901cb3e10983fac66bf5bc65a0ba05b 100644 (file)
@@ -84,8 +84,6 @@ ${holder_ref_decls}$
    */
   Options& operator=(const Options& options) = delete;
 
-  static std::string formatThreadOptionException(const std::string& option);
-
 public:
  class OptionsScope
  {
@@ -123,19 +121,6 @@ public:
    */
   void copyValues(const Options& options);
 
-  /**
-   * Get a non-const reference to the value of the given option. Causes a
-   * compile-time error if the given option is read-only. Writeable options
-   * specialize this template with a real implementation.
-   */
-  template <class T>
-  typename T::type& ref(T) {
-    // Flag a compile-time error.
-    T::you_are_trying_to_get_nonconst_access_to_a_read_only_option;
-    // Ensure the compiler does not complain about the return value.
-    return *static_cast<typename T::type*>(nullptr);
-  }
-
   /**
    * Set the value of the given option by key.
    *