ZyonzGeometricBasedSingleLeafProbingConfig.h
Go to the documentation of this file.
00001 //#line 2 "/opt/ros/electric/stacks/driver_common/dynamic_reconfigure/templates/ConfigType.h"
00002 // *********************************************************
00003 // 
00004 // File autogenerated for the zyonz_geometric_based_single_leaf_probing package 
00005 // by the dynamic_reconfigure package.
00006 // Please do not edit.
00007 // 
00008 // ********************************************************/
00009 
00010 /***********************************************************
00011  * Software License Agreement (BSD License)
00012  *
00013  *  Copyright (c) 2008, Willow Garage, Inc.
00014  *  All rights reserved.
00015  *
00016  *  Redistribution and use in source and binary forms, with or without
00017  *  modification, are permitted provided that the following conditions
00018  *  are met:
00019  *
00020  *   * Redistributions of source code must retain the above copyright
00021  *     notice, this list of conditions and the following disclaimer.
00022  *   * Redistributions in binary form must reproduce the above
00023  *     copyright notice, this list of conditions and the following
00024  *     disclaimer in the documentation and/or other materials provided
00025  *     with the distribution.
00026  *   * Neither the name of the Willow Garage nor the names of its
00027  *     contributors may be used to endorse or promote products derived
00028  *     from this software without specific prior written permission.
00029  *
00030  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00031  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00032  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00033  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00034  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00035  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00036  *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00037  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00038  *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00039  *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00040  *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00041  *  POSSIBILITY OF SUCH DAMAGE.
00042  ***********************************************************/
00043 
00044 // Author: Blaise Gassend
00045 
00046 
00047 #ifndef __zyonz_geometric_based_single_leaf_probing__ZYONZGEOMETRICBASEDSINGLELEAFPROBINGCONFIG_H__
00048 #define __zyonz_geometric_based_single_leaf_probing__ZYONZGEOMETRICBASEDSINGLELEAFPROBINGCONFIG_H__
00049 
00050 #include <dynamic_reconfigure/config_tools.h>
00051 #include <limits>
00052 #include <ros/node_handle.h>
00053 #include <dynamic_reconfigure/ConfigDescription.h>
00054 #include <dynamic_reconfigure/ParamDescription.h>
00055 #include <dynamic_reconfigure/config_init_mutex.h>
00056 
00057 namespace zyonz_geometric_based_single_leaf_probing
00058 {
00059   class ZyonzGeometricBasedSingleLeafProbingConfigStatics;
00060   
00061   class ZyonzGeometricBasedSingleLeafProbingConfig
00062   {
00063   public:
00064     class AbstractParamDescription : public dynamic_reconfigure::ParamDescription
00065     {
00066     public:
00067       AbstractParamDescription(std::string n, std::string t, uint32_t l, 
00068           std::string d, std::string e)
00069       {
00070         name = n;
00071         type = t;
00072         level = l;
00073         description = d;
00074         edit_method = e;
00075       }
00076       
00077       virtual void clamp(ZyonzGeometricBasedSingleLeafProbingConfig &config, const ZyonzGeometricBasedSingleLeafProbingConfig &max, const ZyonzGeometricBasedSingleLeafProbingConfig &min) const = 0;
00078       virtual void calcLevel(uint32_t &level, const ZyonzGeometricBasedSingleLeafProbingConfig &config1, const ZyonzGeometricBasedSingleLeafProbingConfig &config2) const = 0;
00079       virtual void fromServer(const ros::NodeHandle &nh, ZyonzGeometricBasedSingleLeafProbingConfig &config) const = 0;
00080       virtual void toServer(const ros::NodeHandle &nh, const ZyonzGeometricBasedSingleLeafProbingConfig &config) const = 0;
00081       virtual bool fromMessage(const dynamic_reconfigure::Config &msg, ZyonzGeometricBasedSingleLeafProbingConfig &config) const = 0;
00082       virtual void toMessage(dynamic_reconfigure::Config &msg, const ZyonzGeometricBasedSingleLeafProbingConfig &config) const = 0;
00083     };
00084 
00085     typedef boost::shared_ptr<AbstractParamDescription> AbstractParamDescriptionPtr;
00086     typedef boost::shared_ptr<const AbstractParamDescription> AbstractParamDescriptionConstPtr;
00087     
00088     template <class T>
00089     class ParamDescription : public AbstractParamDescription
00090     {
00091     public:
00092       ParamDescription(std::string name, std::string type, uint32_t level, 
00093           std::string description, std::string edit_method, T ZyonzGeometricBasedSingleLeafProbingConfig::* f) :
00094         AbstractParamDescription(name, type, level, description, edit_method),
00095         field(f)
00096       {}
00097 
00098       T (ZyonzGeometricBasedSingleLeafProbingConfig::* field);
00099 
00100       virtual void clamp(ZyonzGeometricBasedSingleLeafProbingConfig &config, const ZyonzGeometricBasedSingleLeafProbingConfig &max, const ZyonzGeometricBasedSingleLeafProbingConfig &min) const
00101       {
00102         if (config.*field > max.*field)
00103           config.*field = max.*field;
00104         
00105         if (config.*field < min.*field)
00106           config.*field = min.*field;
00107       }
00108 
00109       virtual void calcLevel(uint32_t &comb_level, const ZyonzGeometricBasedSingleLeafProbingConfig &config1, const ZyonzGeometricBasedSingleLeafProbingConfig &config2) const
00110       {
00111         if (config1.*field != config2.*field)
00112           comb_level |= level;
00113       }
00114 
00115       virtual void fromServer(const ros::NodeHandle &nh, ZyonzGeometricBasedSingleLeafProbingConfig &config) const
00116       {
00117         nh.getParam(name, config.*field);
00118       }
00119 
00120       virtual void toServer(const ros::NodeHandle &nh, const ZyonzGeometricBasedSingleLeafProbingConfig &config) const
00121       {
00122         nh.setParam(name, config.*field);
00123       }
00124 
00125       virtual bool fromMessage(const dynamic_reconfigure::Config &msg, ZyonzGeometricBasedSingleLeafProbingConfig &config) const
00126       {
00127         return dynamic_reconfigure::ConfigTools::getParameter(msg, name, config.*field);
00128       }
00129 
00130       virtual void toMessage(dynamic_reconfigure::Config &msg, const ZyonzGeometricBasedSingleLeafProbingConfig &config) const
00131       {
00132         dynamic_reconfigure::ConfigTools::appendParameter(msg, name, config.*field);
00133       }
00134     };
00135 
00136 
00137 //#line 138 "/opt/ros/electric/stacks/driver_common/dynamic_reconfigure/templates/ConfigType.h"
00138 
00139     bool __fromMessage__(dynamic_reconfigure::Config &msg)
00140     {
00141       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00142       int count = 0;
00143       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00144         if ((*i)->fromMessage(msg, *this))
00145           count++;
00146       if (count != dynamic_reconfigure::ConfigTools::size(msg))
00147       {
00148         ROS_ERROR("ZyonzGeometricBasedSingleLeafProbingConfig::__fromMessage__ called with an unexpected parameter.");
00149         ROS_ERROR("Booleans:");
00150         for (unsigned int i = 0; i < msg.bools.size(); i++)
00151           ROS_ERROR("  %s", msg.bools[i].name.c_str());
00152         ROS_ERROR("Integers:");
00153         for (unsigned int i = 0; i < msg.ints.size(); i++)
00154           ROS_ERROR("  %s", msg.ints[i].name.c_str());
00155         ROS_ERROR("Doubles:");
00156         for (unsigned int i = 0; i < msg.doubles.size(); i++)
00157           ROS_ERROR("  %s", msg.doubles[i].name.c_str());
00158         ROS_ERROR("Strings:");
00159         for (unsigned int i = 0; i < msg.strs.size(); i++)
00160           ROS_ERROR("  %s", msg.strs[i].name.c_str());
00161         // @todo Check that there are no duplicates. Make this error more
00162         // explicit.
00163         return false;
00164       }
00165       return true;
00166     }
00167 
00168     // This version of __toMessage__ is used during initialization of
00169     // statics when __getParamDescriptions__ can't be called yet.
00170     void __toMessage__(dynamic_reconfigure::Config &msg, const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__) const
00171     {
00172       dynamic_reconfigure::ConfigTools::clear(msg);
00173       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00174         (*i)->toMessage(msg, *this);
00175     }
00176     
00177     void __toMessage__(dynamic_reconfigure::Config &msg) const
00178     {
00179       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00180       __toMessage__(msg, __param_descriptions__);
00181     }
00182     
00183     void __toServer__(const ros::NodeHandle &nh) const
00184     {
00185       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00186       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00187         (*i)->toServer(nh, *this);
00188     }
00189 
00190     void __fromServer__(const ros::NodeHandle &nh)
00191     {
00192       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00193       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00194         (*i)->fromServer(nh, *this);
00195     }
00196 
00197     void __clamp__()
00198     {
00199       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00200       const ZyonzGeometricBasedSingleLeafProbingConfig &__max__ = __getMax__();
00201       const ZyonzGeometricBasedSingleLeafProbingConfig &__min__ = __getMin__();
00202       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00203         (*i)->clamp(*this, __max__, __min__);
00204     }
00205 
00206     uint32_t __level__(const ZyonzGeometricBasedSingleLeafProbingConfig &config) const
00207     {
00208       const std::vector<AbstractParamDescriptionConstPtr> &__param_descriptions__ = __getParamDescriptions__();
00209       uint32_t level = 0;
00210       for (std::vector<AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00211         (*i)->calcLevel(level, config, *this);
00212       return level;
00213     }
00214     
00215     static const dynamic_reconfigure::ConfigDescription &__getDescriptionMessage__();
00216     static const ZyonzGeometricBasedSingleLeafProbingConfig &__getDefault__();
00217     static const ZyonzGeometricBasedSingleLeafProbingConfig &__getMax__();
00218     static const ZyonzGeometricBasedSingleLeafProbingConfig &__getMin__();
00219     static const std::vector<AbstractParamDescriptionConstPtr> &__getParamDescriptions__();
00220     
00221   private:
00222     static const ZyonzGeometricBasedSingleLeafProbingConfigStatics *__get_statics__();
00223   };
00224   
00225   template <> // Max and min are ignored for strings.
00226   inline void ZyonzGeometricBasedSingleLeafProbingConfig::ParamDescription<std::string>::clamp(ZyonzGeometricBasedSingleLeafProbingConfig &config, const ZyonzGeometricBasedSingleLeafProbingConfig &max, const ZyonzGeometricBasedSingleLeafProbingConfig &min) const
00227   {
00228     return;
00229   }
00230 
00231   class ZyonzGeometricBasedSingleLeafProbingConfigStatics
00232   {
00233     friend class ZyonzGeometricBasedSingleLeafProbingConfig;
00234     
00235     ZyonzGeometricBasedSingleLeafProbingConfigStatics()
00236     {
00237 
00238 //#line 239 "/opt/ros/electric/stacks/driver_common/dynamic_reconfigure/templates/ConfigType.h"
00239     
00240       for (std::vector<ZyonzGeometricBasedSingleLeafProbingConfig::AbstractParamDescriptionConstPtr>::const_iterator i = __param_descriptions__.begin(); i != __param_descriptions__.end(); i++)
00241         __description_message__.parameters.push_back(**i);
00242       __max__.__toMessage__(__description_message__.max, __param_descriptions__); 
00243       __min__.__toMessage__(__description_message__.min, __param_descriptions__); 
00244       __default__.__toMessage__(__description_message__.dflt, __param_descriptions__); 
00245     }
00246     std::vector<ZyonzGeometricBasedSingleLeafProbingConfig::AbstractParamDescriptionConstPtr> __param_descriptions__;
00247     ZyonzGeometricBasedSingleLeafProbingConfig __max__;
00248     ZyonzGeometricBasedSingleLeafProbingConfig __min__;
00249     ZyonzGeometricBasedSingleLeafProbingConfig __default__;
00250     dynamic_reconfigure::ConfigDescription __description_message__;
00251     static const ZyonzGeometricBasedSingleLeafProbingConfigStatics *get_instance()
00252     {
00253       // Split this off in a separate function because I know that
00254       // instance will get initialized the first time get_instance is
00255       // called, and I am guaranteeing that get_instance gets called at
00256       // most once.
00257       static ZyonzGeometricBasedSingleLeafProbingConfigStatics instance;
00258       return &instance;
00259     }
00260   };
00261 
00262   inline const dynamic_reconfigure::ConfigDescription &ZyonzGeometricBasedSingleLeafProbingConfig::__getDescriptionMessage__() 
00263   {
00264     return __get_statics__()->__description_message__;
00265   }
00266 
00267   inline const ZyonzGeometricBasedSingleLeafProbingConfig &ZyonzGeometricBasedSingleLeafProbingConfig::__getDefault__()
00268   {
00269     return __get_statics__()->__default__;
00270   }
00271   
00272   inline const ZyonzGeometricBasedSingleLeafProbingConfig &ZyonzGeometricBasedSingleLeafProbingConfig::__getMax__()
00273   {
00274     return __get_statics__()->__max__;
00275   }
00276   
00277   inline const ZyonzGeometricBasedSingleLeafProbingConfig &ZyonzGeometricBasedSingleLeafProbingConfig::__getMin__()
00278   {
00279     return __get_statics__()->__min__;
00280   }
00281   
00282   inline const std::vector<ZyonzGeometricBasedSingleLeafProbingConfig::AbstractParamDescriptionConstPtr> &ZyonzGeometricBasedSingleLeafProbingConfig::__getParamDescriptions__()
00283   {
00284     return __get_statics__()->__param_descriptions__;
00285   }
00286 
00287   inline const ZyonzGeometricBasedSingleLeafProbingConfigStatics *ZyonzGeometricBasedSingleLeafProbingConfig::__get_statics__()
00288   {
00289     const static ZyonzGeometricBasedSingleLeafProbingConfigStatics *statics;
00290   
00291     if (statics) // Common case
00292       return statics;
00293 
00294     boost::mutex::scoped_lock lock(dynamic_reconfigure::__init_mutex__);
00295 
00296     if (statics) // In case we lost a race.
00297       return statics;
00298 
00299     statics = ZyonzGeometricBasedSingleLeafProbingConfigStatics::get_instance();
00300     
00301     return statics;
00302   }
00303 
00304 
00305 }
00306 
00307 #endif // __ZYONZGEOMETRICBASEDSINGLELEAFPROBINGRECONFIGURATOR_H__


zyonz_geometric_based_single_leaf_probing
Author(s): sfoix
autogenerated on Fri Dec 6 2013 22:16:43