00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROSCPP_PARAM_H
00029 #define ROSCPP_PARAM_H
00030
00031 #include "forwards.h"
00032 #include "common.h"
00033 #include "XmlRpcValue.h"
00034
00035 #include <vector>
00036 #include <map>
00037
00038 namespace ros
00039 {
00040
00044 namespace param
00045 {
00046
00053 ROSCPP_DECL void set(const std::string& key, const XmlRpc::XmlRpcValue& v);
00060 ROSCPP_DECL void set(const std::string& key, const std::string& s);
00067 ROSCPP_DECL void set(const std::string& key, const char* s);
00074 ROSCPP_DECL void set(const std::string& key, double d);
00081 ROSCPP_DECL void set(const std::string& key, int i);
00088 ROSCPP_DECL void set(const std::string& key, bool b);
00089
00090
00097 ROSCPP_DECL void set(const std::string& key, const std::vector<std::string>& vec);
00104 ROSCPP_DECL void set(const std::string& key, const std::vector<double>& vec);
00111 ROSCPP_DECL void set(const std::string& key, const std::vector<float>& vec);
00118 ROSCPP_DECL void set(const std::string& key, const std::vector<int>& vec);
00125 ROSCPP_DECL void set(const std::string& key, const std::vector<bool>& vec);
00126
00133 ROSCPP_DECL void set(const std::string& key, const std::map<std::string, std::string>& map);
00140 ROSCPP_DECL void set(const std::string& key, const std::map<std::string, double>& map);
00147 ROSCPP_DECL void set(const std::string& key, const std::map<std::string, float>& map);
00154 ROSCPP_DECL void set(const std::string& key, const std::map<std::string, int>& map);
00161 ROSCPP_DECL void set(const std::string& key, const std::map<std::string, bool>& map);
00162
00163
00172 ROSCPP_DECL bool get(const std::string& key, std::string& s);
00181 ROSCPP_DECL bool get(const std::string& key, double& d);
00190 ROSCPP_DECL bool get(const std::string& key, float& f);
00199 ROSCPP_DECL bool get(const std::string& key, int& i);
00208 ROSCPP_DECL bool get(const std::string& key, bool& b);
00217 ROSCPP_DECL bool get(const std::string& key, XmlRpc::XmlRpcValue& v);
00218
00232 ROSCPP_DECL bool getCached(const std::string& key, std::string& s);
00246 ROSCPP_DECL bool getCached(const std::string& key, double& d);
00260 ROSCPP_DECL bool getCached(const std::string& key, float& f);
00274 ROSCPP_DECL bool getCached(const std::string& key, int& i);
00288 ROSCPP_DECL bool getCached(const std::string& key, bool& b);
00302 ROSCPP_DECL bool getCached(const std::string& key, XmlRpc::XmlRpcValue& v);
00303
00312 ROSCPP_DECL bool get(const std::string& key, std::vector<std::string>& vec);
00321 ROSCPP_DECL bool get(const std::string& key, std::vector<double>& vec);
00330 ROSCPP_DECL bool get(const std::string& key, std::vector<float>& vec);
00339 ROSCPP_DECL bool get(const std::string& key, std::vector<int>& vec);
00348 ROSCPP_DECL bool get(const std::string& key, std::vector<bool>& vec);
00349
00363 ROSCPP_DECL bool getCached(const std::string& key, std::vector<std::string>& vec);
00377 ROSCPP_DECL bool getCached(const std::string& key, std::vector<double>& vec);
00391 ROSCPP_DECL bool getCached(const std::string& key, std::vector<float>& vec);
00405 ROSCPP_DECL bool getCached(const std::string& key, std::vector<int>& vec);
00419 ROSCPP_DECL bool getCached(const std::string& key, std::vector<bool>& vec);
00420
00429 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, std::string>& map);
00438 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, double>& map);
00447 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, float>& map);
00456 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, int>& map);
00465 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, bool>& map);
00466
00480 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, std::string>& map);
00494 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, double>& map);
00508 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, float>& map);
00522 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, int>& map);
00536 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, bool>& map);
00537
00545 ROSCPP_DECL bool has(const std::string& key);
00553 ROSCPP_DECL bool del(const std::string& key);
00554
00569 ROSCPP_DECL bool search(const std::string& ns, const std::string& key, std::string& result);
00570
00585 ROSCPP_DECL bool search(const std::string& key, std::string& result);
00586
00592 ROSCPP_DECL bool getParamNames(std::vector<std::string>& keys);
00593
00606 template<typename T>
00607 void param(const std::string& param_name, T& param_val, const T& default_val)
00608 {
00609 if (has(param_name))
00610 {
00611 if (get(param_name, param_val))
00612 {
00613 return;
00614 }
00615 }
00616
00617 param_val = default_val;
00618 }
00619
00637 template<typename T>
00638 T param(const std::string& param_name, const T& default_val)
00639 {
00640 T param_val;
00641 param(param_name, param_val, default_val);
00642 return param_val;
00643 }
00644
00645 }
00646
00647 }
00648
00649 #endif // ROSCPP_PARAM_H