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, int& i);
00274 ROSCPP_DECL bool getCached(const std::string& key, bool& b);
00288 ROSCPP_DECL bool getCached(const std::string& key, XmlRpc::XmlRpcValue& v);
00289
00298 ROSCPP_DECL bool get(const std::string& key, std::vector<std::string>& vec);
00307 ROSCPP_DECL bool get(const std::string& key, std::vector<double>& vec);
00316 ROSCPP_DECL bool get(const std::string& key, std::vector<float>& vec);
00325 ROSCPP_DECL bool get(const std::string& key, std::vector<int>& vec);
00334 ROSCPP_DECL bool get(const std::string& key, std::vector<bool>& vec);
00335
00349 ROSCPP_DECL bool getCached(const std::string& key, std::vector<std::string>& vec);
00363 ROSCPP_DECL bool getCached(const std::string& key, std::vector<double>& vec);
00377 ROSCPP_DECL bool getCached(const std::string& key, std::vector<float>& vec);
00391 ROSCPP_DECL bool getCached(const std::string& key, std::vector<int>& vec);
00405 ROSCPP_DECL bool getCached(const std::string& key, std::vector<bool>& vec);
00406
00415 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, std::string>& map);
00424 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, double>& map);
00433 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, float>& map);
00442 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, int>& map);
00451 ROSCPP_DECL bool get(const std::string& key, std::map<std::string, bool>& map);
00452
00466 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, std::string>& map);
00480 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, double>& map);
00494 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, float>& map);
00508 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, int>& map);
00522 ROSCPP_DECL bool getCached(const std::string& key, std::map<std::string, bool>& map);
00523
00531 ROSCPP_DECL bool has(const std::string& key);
00539 ROSCPP_DECL bool del(const std::string& key);
00540
00555 ROSCPP_DECL bool search(const std::string& ns, const std::string& key, std::string& result);
00556
00571 ROSCPP_DECL bool search(const std::string& key, std::string& result);
00572
00585 template<typename T>
00586 void param(const std::string& param_name, T& param_val, const T& default_val)
00587 {
00588 if (has(param_name))
00589 {
00590 if (get(param_name, param_val))
00591 {
00592 return;
00593 }
00594 }
00595
00596 param_val = default_val;
00597 }
00598
00599 }
00600
00601 }
00602
00603 #endif // ROSCPP_PARAM_H