diff --git a/scripts/mk_util.py b/scripts/mk_util.py index 112096271..d5f1b055b 100644 --- a/scripts/mk_util.py +++ b/scripts/mk_util.py @@ -1507,7 +1507,7 @@ def def_module_params(module_name, export, params, class_name=None, description= out.write(' params_ref const & p;\n') if export: out.write(' params_ref g;\n') - out.write(' %s(params_ref const & _p = params_ref()):\n' % class_name) + out.write(' %s(params_ref const & _p = params_ref::get_empty()):\n' % class_name) out.write(' p(_p)') if export: out.write(', g(gparams::get_module("%s"))' % module_name) diff --git a/src/util/params.cpp b/src/util/params.cpp index f302f7721..d9878c70a 100644 --- a/src/util/params.cpp +++ b/src/util/params.cpp @@ -21,6 +21,8 @@ Notes: #include"symbol.h" #include"dictionary.h" +params_ref params_ref::g_empty_params_ref; + std::string norm_param_name(char const * n) { if (n == 0) return "_"; diff --git a/src/util/params.h b/src/util/params.h index 13850758c..15be825b0 100644 --- a/src/util/params.h +++ b/src/util/params.h @@ -31,6 +31,8 @@ class params; class param_descrs; class params_ref { + static params_ref g_empty_params_ref; + params * m_params; void init(); void copy_core(params const * p); @@ -38,7 +40,9 @@ public: params_ref():m_params(0) {} params_ref(params_ref const & p); ~params_ref(); - + + static params_ref const & get_empty() { return g_empty_params_ref; } + params_ref & operator=(params_ref const & p); // copy params from src