diff options
Diffstat (limited to 'host')
-rw-r--r-- | host/include/uhd/types/time_spec.hpp | 9 | ||||
-rw-r--r-- | host/lib/types/time_spec.cpp | 23 |
2 files changed, 14 insertions, 18 deletions
diff --git a/host/include/uhd/types/time_spec.hpp b/host/include/uhd/types/time_spec.hpp index 54fd9d379..8c0a2568d 100644 --- a/host/include/uhd/types/time_spec.hpp +++ b/host/include/uhd/types/time_spec.hpp @@ -10,7 +10,6 @@ #include <uhd/config.hpp> #include <boost/operators.hpp> -#include <ctime> namespace uhd{ @@ -26,7 +25,10 @@ namespace uhd{ * This gives the fractional seconds enough precision to unambiguously * specify a clock-tick/sample-count up to rates of several petahertz. */ - class UHD_API time_spec_t : boost::additive<time_spec_t>, boost::totally_ordered<time_spec_t>{ + class UHD_API time_spec_t : + boost::additive<time_spec_t>, + boost::additive<time_spec_t, double>, + boost::totally_ordered<time_spec_t>{ public: /*! @@ -98,10 +100,9 @@ namespace uhd{ //! Implement addable interface time_spec_t &operator+=(const time_spec_t &); time_spec_t &operator+=(double &); - time_spec_t operator+(double &); - time_spec_t operator+(const time_spec_t &); //! Implement subtractable interface time_spec_t &operator-=(const time_spec_t &); + time_spec_t &operator-=(double &); //private time storage details private: diff --git a/host/lib/types/time_spec.cpp b/host/lib/types/time_spec.cpp index 403c3336c..c07ab8525 100644 --- a/host/lib/types/time_spec.cpp +++ b/host/lib/types/time_spec.cpp @@ -91,20 +91,6 @@ time_spec_t &time_spec_t::operator+=(double &rhs){ return *this; } -time_spec_t time_spec_t::operator+(double &rhs){ - double full_secs = std::trunc(rhs); - time_spec_t toRet(this->get_full_secs() + full_secs, - this->get_frac_secs() + rhs - full_secs); - return toRet; -} - -time_spec_t time_spec_t::operator+(const time_spec_t &rhs){ - time_spec_t toRet( - this->get_full_secs() + rhs.get_full_secs(), - this->get_frac_secs() + rhs.get_frac_secs()); - return toRet; -} - time_spec_t &time_spec_t::operator-=(const time_spec_t &rhs){ time_spec_init( this->get_full_secs() - rhs.get_full_secs(), @@ -113,6 +99,15 @@ time_spec_t &time_spec_t::operator-=(const time_spec_t &rhs){ return *this; } +time_spec_t &time_spec_t::operator-=(double &rhs) { + double full_secs = std::trunc(rhs); + time_spec_init( + this->get_full_secs() - full_secs, + this->get_frac_secs() - (rhs - full_secs) + ); + return *this; +} + bool uhd::operator==(const time_spec_t &lhs, const time_spec_t &rhs){ return lhs.get_full_secs() == rhs.get_full_secs() and |