From fa03080693704f966ab121505f486237b3dd4385 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Wed, 28 May 2014 21:12:33 +0200 Subject: [PATCH 1/2] Renamed iterator to avoid collisions with parameter names --- src/dynamic_reconfigure/parameter_generator.py | 2 +- src/dynamic_reconfigure/parameter_generator_catkin.py | 2 +- templates/GroupClass.h.template | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dynamic_reconfigure/parameter_generator.py b/src/dynamic_reconfigure/parameter_generator.py index 2536e0c0..ac055e29 100644 --- a/src/dynamic_reconfigure/parameter_generator.py +++ b/src/dynamic_reconfigure/parameter_generator.py @@ -438,7 +438,7 @@ def appendgroup(self, list, group): setters = [] params = [] for p in group.parameters: - setters.append(Template(" if(\"${name}\"==(*i)->name){${name} = boost::any_cast<${ctype}>(val);}").substitute(p)); + setters.append(Template(" if(\"${name}\"==(*_i)->name){${name} = boost::any_cast<${ctype}>(val);}").substitute(p)); params.append(Template("${ctype} ${name};").substitute(p)); subgroups = string.join(subgroups, "\n") diff --git a/src/dynamic_reconfigure/parameter_generator_catkin.py b/src/dynamic_reconfigure/parameter_generator_catkin.py index 2b26b700..bf35aef3 100644 --- a/src/dynamic_reconfigure/parameter_generator_catkin.py +++ b/src/dynamic_reconfigure/parameter_generator_catkin.py @@ -421,7 +421,7 @@ def appendgroup(self, list, group): setters = [] params = [] for p in group.parameters: - setters.append(Template(" if(\"${name}\"==(*i)->name){${name} = boost::any_cast<${ctype}>(val);}").substitute(p)); + setters.append(Template(" if(\"${name}\"==(*_i)->name){${name} = boost::any_cast<${ctype}>(val);}").substitute(p)); params.append(Template("${ctype} ${name};").substitute(p)); subgroups = "\n".join(subgroups) diff --git a/templates/GroupClass.h.template b/templates/GroupClass.h.template index 32af9e7c..215df56d 100644 --- a/templates/GroupClass.h.template +++ b/templates/GroupClass.h.template @@ -9,10 +9,10 @@ class ${upper} void setParams(${configname}Config &config, const std::vector params) { - for (std::vector::const_iterator i = params.begin(); i != params.end(); ++i) + for (std::vector::const_iterator _i = params.begin(); _i != params.end(); ++_i) { boost::any val; - (*i)->getValue(config, val); + (*_i)->getValue(config, val); ${setters} } From 1e6885315f2d823d125346f3b2f8d563f62e9d79 Mon Sep 17 00:00:00 2001 From: Esteve Fernandez Date: Thu, 29 May 2014 19:54:15 +0200 Subject: [PATCH 2/2] Use a more detailed error message with information about the ROS naming conventions --- src/dynamic_reconfigure/parameter_generator.py | 2 +- src/dynamic_reconfigure/parameter_generator_catkin.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dynamic_reconfigure/parameter_generator.py b/src/dynamic_reconfigure/parameter_generator.py index ac055e29..f1195168 100644 --- a/src/dynamic_reconfigure/parameter_generator.py +++ b/src/dynamic_reconfigure/parameter_generator.py @@ -126,7 +126,7 @@ def add(self, name, paramtype, level, description, default = None, min = None, m raise Exception("Max or min specified for %s, which is of string type"%name) pattern = r'^[a-zA-Z][a-zA-Z0-9_]*$' if not re.match(pattern, name): - raise Exception("The name of field \'%s\' is definitely not a valid C++ variable name! Change it accordingly."%name) + raise Exception("The name of field \'%s\' does not follow the ROS naming conventions, see http://wiki.ros.org/ROS/Patterns/Conventions"%name) self.gen.fill_type(newparam) self.gen.check_type_fill_default(newparam, 'default', self.gen.defval[paramtype]) diff --git a/src/dynamic_reconfigure/parameter_generator_catkin.py b/src/dynamic_reconfigure/parameter_generator_catkin.py index bf35aef3..ed2dd14c 100644 --- a/src/dynamic_reconfigure/parameter_generator_catkin.py +++ b/src/dynamic_reconfigure/parameter_generator_catkin.py @@ -126,7 +126,7 @@ def add(self, name, paramtype, level, description, default = None, min = None, m raise Exception("Max or min specified for %s, which is of string type"%name) pattern = r'^[a-zA-Z][a-zA-Z0-9_]*$' if not re.match(pattern, name): - raise Exception("The name of field \'%s\' is definitely not a valid C++ variable name! Change it accordingly."%name) + raise Exception("The name of field \'%s\' does not follow the ROS naming conventions, see http://wiki.ros.org/ROS/Patterns/Conventions"%name) self.gen.fill_type(newparam) self.gen.check_type_fill_default(newparam, 'default', self.gen.defval[paramtype])