$search
00001 /* 00002 * Copyright (C) 2009, Willow Garage, Inc. 00003 * 00004 * Redistribution and use in source and binary forms, with or without 00005 * modification, are permitted provided that the following conditions are met: 00006 * * Redistributions of source code must retain the above copyright notice, 00007 * this list of conditions and the following disclaimer. 00008 * * Redistributions in binary form must reproduce the above copyright 00009 * notice, this list of conditions and the following disclaimer in the 00010 * documentation and/or other materials provided with the distribution. 00011 * * Neither the names of Willow Garage, Inc. nor the names of its 00012 * contributors may be used to endorse or promote products derived from 00013 * this software without specific prior written permission. 00014 * 00015 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00016 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00017 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00018 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00019 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00020 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00021 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00022 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00023 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00024 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00025 * POSSIBILITY OF SUCH DAMAGE. 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 namespace ros 00036 { 00037 00041 namespace param 00042 { 00043 00050 ROSCPP_DECL void set(const std::string& key, const XmlRpc::XmlRpcValue& v); 00057 ROSCPP_DECL void set(const std::string& key, const std::string& s); 00064 ROSCPP_DECL void set(const std::string& key, const char* s); 00071 ROSCPP_DECL void set(const std::string& key, double d); 00078 ROSCPP_DECL void set(const std::string& key, int i); 00085 ROSCPP_DECL void set(const std::string& key, bool b); 00086 00095 ROSCPP_DECL bool get(const std::string& key, std::string& s); 00104 ROSCPP_DECL bool get(const std::string& key, double& d); 00113 ROSCPP_DECL bool get(const std::string& key, int& i); 00122 ROSCPP_DECL bool get(const std::string& key, bool& b); 00131 ROSCPP_DECL bool get(const std::string& key, XmlRpc::XmlRpcValue& v); 00132 00146 ROSCPP_DECL bool getCached(const std::string& key, std::string& s); 00160 ROSCPP_DECL bool getCached(const std::string& key, double& d); 00174 ROSCPP_DECL bool getCached(const std::string& key, int& i); 00188 ROSCPP_DECL bool getCached(const std::string& key, bool& b); 00202 ROSCPP_DECL bool getCached(const std::string& key, XmlRpc::XmlRpcValue& v); 00203 00211 ROSCPP_DECL bool has(const std::string& key); 00219 ROSCPP_DECL bool del(const std::string& key); 00220 00235 ROSCPP_DECL bool search(const std::string& ns, const std::string& key, std::string& result); 00236 00251 ROSCPP_DECL bool search(const std::string& key, std::string& result); 00252 00265 template<typename T> 00266 void param(const std::string& param_name, T& param_val, const T& default_val) 00267 { 00268 if (has(param_name)) 00269 { 00270 if (get(param_name, param_val)) 00271 { 00272 return; 00273 } 00274 } 00275 00276 param_val = default_val; 00277 } 00278 00279 } // namespace param 00280 00281 } // namespace param 00282 00283 #endif // ROSCPP_PARAM_H