diff --git a/include/log/log_read.h b/include/log/log_read.h index 946711a86..1b70affc3 100644 --- a/include/log/log_read.h +++ b/include/log/log_read.h @@ -100,6 +100,12 @@ public: log_time local(*this); return local -= T; } + log_time operator+= (const timespec &T); + log_time operator+ (const timespec &T) const + { + log_time local(*this); + return local += T; + } // log_time bool operator== (const log_time &T) const @@ -134,6 +140,12 @@ public: log_time local(*this); return local -= T; } + log_time operator+= (const log_time &T); + log_time operator+ (const log_time &T) const + { + log_time local(*this); + return local += T; + } uint64_t nsec() const { diff --git a/liblog/log_time.cpp b/liblog/log_time.cpp index 209a9da64..50742df70 100644 --- a/liblog/log_time.cpp +++ b/liblog/log_time.cpp @@ -150,6 +150,17 @@ log_time log_time::operator-= (const timespec &T) { return *this; } +log_time log_time::operator+= (const timespec &T) { + this->tv_nsec += (unsigned long int)T.tv_nsec; + if (this->tv_nsec >= NS_PER_SEC) { + this->tv_nsec -= NS_PER_SEC; + ++this->tv_sec; + } + this->tv_sec += T.tv_sec; + + return *this; +} + log_time log_time::operator-= (const log_time &T) { // No concept of negative time, clamp to EPOCH if (*this <= T) { @@ -166,3 +177,14 @@ log_time log_time::operator-= (const log_time &T) { return *this; } + +log_time log_time::operator+= (const log_time &T) { + this->tv_nsec += T.tv_nsec; + if (this->tv_nsec >= NS_PER_SEC) { + this->tv_nsec -= NS_PER_SEC; + ++this->tv_sec; + } + this->tv_sec += T.tv_sec; + + return *this; +}