All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
device_addr.hpp
Go to the documentation of this file.
//
// Copyright 2010-2011 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef INCLUDED_UHD_TYPES_DEVICE_ADDR_HPP
#define INCLUDED_UHD_TYPES_DEVICE_ADDR_HPP
#include <uhd/config.hpp>
#include <uhd/types/dict.hpp>
#include <boost/lexical_cast.hpp>
#include <stdexcept>
#include <vector>
#include <string>
namespace uhd{
class UHD_API device_addr_t : public dict<std::string, std::string>{
public:
device_addr_t(const std::string &args = "");
std::string to_pp_string(void) const;
std::string to_string(void) const;
template <typename T> T cast(const std::string &key, const T &def) const{
if (not this->has_key(key)) return def;
try{
return boost::lexical_cast<T>((*this)[key]);
}
catch(const boost::bad_lexical_cast &){
throw std::runtime_error("cannot cast " + key + " = " + (*this)[key]);
}
}
};
typedef std::vector<device_addr_t> device_addrs_t;
UHD_API device_addrs_t separate_device_addr(const device_addr_t &dev_addr);
UHD_API device_addr_t combine_device_addrs(const device_addrs_t &dev_addrs);
} //namespace uhd
#endif /* INCLUDED_UHD_TYPES_DEVICE_ADDR_HPP */