aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
Diffstat (limited to 'host')
-rw-r--r--host/include/uhd/types/time_spec.hpp9
-rw-r--r--host/lib/types/time_spec.cpp23
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