diff options
author | Josh Blum <josh@joshknows.com> | 2010-11-16 19:48:43 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-11-16 19:48:43 -0800 |
commit | 28d49657a959feeec9142094735fb4e184c3e9a4 (patch) | |
tree | dd2a65f7b8584a68afbd2fcf98b0861b6db3fc20 | |
parent | c5043c6aec21c9acadfb81594e5c7d10709fdba5 (diff) | |
download | uhd-28d49657a959feeec9142094735fb4e184c3e9a4.tar.gz uhd-28d49657a959feeec9142094735fb4e184c3e9a4.tar.bz2 uhd-28d49657a959feeec9142094735fb4e184c3e9a4.zip |
uhd: added printable to string methods to ranges
-rw-r--r-- | host/include/uhd/types/ranges.hpp | 9 | ||||
-rw-r--r-- | host/include/uhd/types/ranges.ipp | 19 |
2 files changed, 26 insertions, 2 deletions
diff --git a/host/include/uhd/types/ranges.hpp b/host/include/uhd/types/ranges.hpp index 623bdca19..b13f80ae4 100644 --- a/host/include/uhd/types/ranges.hpp +++ b/host/include/uhd/types/ranges.hpp @@ -20,6 +20,7 @@ #include <uhd/config.hpp> #include <uhd/utils/pimpl.hpp> +#include <string> #include <vector> namespace uhd{ @@ -55,8 +56,11 @@ namespace uhd{ //! Get the step value for this range. const T step(void) const; + //! Convert this range to a printable string + const std::string to_pp_string(void) const; + private: - UHD_PIMPL_DECL(impl) _impl; + UHD_PIMPL_DECL(impl) _impl; }; /*! @@ -102,6 +106,9 @@ namespace uhd{ */ const T clip(const T &value, bool clip_step = false) const; + //! Convert this meta-range to a printable string + const std::string to_pp_string(void) const; + }; //! export a symbol for the gain range type diff --git a/host/include/uhd/types/ranges.ipp b/host/include/uhd/types/ranges.ipp index 8b602a24d..29f389fca 100644 --- a/host/include/uhd/types/ranges.ipp +++ b/host/include/uhd/types/ranges.ipp @@ -22,7 +22,7 @@ #include <boost/foreach.hpp> #include <algorithm> #include <stdexcept> -#include <iostream> +#include <sstream> namespace uhd{ @@ -66,6 +66,15 @@ namespace uhd{ return _impl->step; } + template <typename T> const std::string range_t<T>::to_pp_string(void) const{ + std::stringstream ss; + ss << "(" << this->start(); + if (this->start() != this->stop()) ss << ", " << this->stop(); + if (this->step() != T(0)) ss << ", " << this->step(); + ss << ")"; + return ss.str(); + } + /******************************************************************* * meta_range_t implementation code ******************************************************************/ @@ -163,6 +172,14 @@ namespace uhd{ return last_stop; } + template <typename T> const std::string meta_range_t<T>::to_pp_string(void) const{ + std::stringstream ss; + BOOST_FOREACH(const range_t<T> &r, (*this)){ + ss << r.to_pp_string() << std::endl; + } + return ss.str(); + } + } //namespace uhd #endif /* INCLUDED_UHD_TYPES_RANGES_IPP */ |