From 53e8ce8afb17fc03ff3ab3abe426e285e14fd97f Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 30 Aug 2017 01:25:54 +0200 Subject: [PATCH] [DEV] correct No STL --- echrono/Clock.cpp | 5 ++--- echrono/Clock.hpp | 4 ++-- echrono/Duration.cpp | 12 ++++++------ echrono/Duration.hpp | 17 ++++++++--------- echrono/Steady.cpp | 22 +++++++++++----------- echrono/Steady.hpp | 4 ++-- echrono/Time.cpp | 18 +++++++++--------- echrono/Time.hpp | 6 +++--- 8 files changed, 43 insertions(+), 45 deletions(-) diff --git a/echrono/Clock.cpp b/echrono/Clock.cpp index 2b1c8cc..9edb53a 100644 --- a/echrono/Clock.cpp +++ b/echrono/Clock.cpp @@ -21,7 +21,7 @@ echrono::Clock::Clock(int64_t _valNano) : } -echrono::Clock::Clock(int64_t _valSec, int64_t _valNano) : +echrono::Clock::Clock(int64_t _valSec, int32_t _valNano) : m_data(_valSec*1000000000LL +_valNano) { } @@ -94,7 +94,7 @@ void echrono::Clock::reset() { } etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Clock& _obj) { - int64_t ns = _obj.get() + int64_t ns = _obj.get(); int64_t totalSecond = ns/1000000000; int64_t millisecond = (ns%1000000000)/1000000; int64_t microsecond = (ns%1000000)/1000; @@ -141,7 +141,6 @@ etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Clock& _obj) namespace etk { template<> etk::String toString(const echrono::Clock& _obj) { - ns = std::chrono::duration_cast(_obj.get().time_since_epoch()); return etk::toString(_obj.get()); } template<> etk::UString toUString(const echrono::Clock& _obj) { diff --git a/echrono/Clock.hpp b/echrono/Clock.hpp index 0e866bb..2e13909 100644 --- a/echrono/Clock.hpp +++ b/echrono/Clock.hpp @@ -21,11 +21,11 @@ namespace echrono { Clock(); //Clock(const echrono::Duration& _val) {}; //value in second Clock(int64_t _valNano); - Clock(int64_t _valSec, uint32_t _valNano); + Clock(int64_t _valSec, int32_t _valNano); Clock(const echrono::Clock& _val); Clock(const echrono::Steady& _val); ~Clock() {}; - const int64_t& get() const { + int64_t get() const { return m_data; } /** diff --git a/echrono/Duration.cpp b/echrono/Duration.cpp index bd51c79..abe02b7 100644 --- a/echrono/Duration.cpp +++ b/echrono/Duration.cpp @@ -16,18 +16,18 @@ echrono::Duration::Duration() : } echrono::Duration::Duration(int _val) : - m_data(_val) { { + m_data(_val) { } -echrono::Duration::Duration(int64_t _valSec, int64_t _valNano) : +echrono::Duration::Duration(int64_t _valSec, int32_t _valNano) : m_data(_valSec*1000000000LL +_valNano) { } echrono::Duration::Duration(int64_t _val) : - m_data(0) { { - m_data = std::chrono::nanoseconds(_val); + m_data(_val) { + } echrono::Duration::Duration(double _val) { @@ -75,7 +75,7 @@ const echrono::Duration& echrono::Duration::operator*= (float _value) { return *this; } echrono::Duration echrono::Duration::operator* (float _value) const { - return echrono::Duration(int64_t(double(m_data.count()) * _value)); + return echrono::Duration(int64_t(double(m_data) * _value)); } const echrono::Duration& echrono::Duration::operator+= (const echrono::Duration& _obj) { @@ -108,7 +108,7 @@ echrono::Duration echrono::Duration::operator++(int _unused) { return tmp; } echrono::Duration& echrono::Duration::operator--() { - m_data -= echrono::nanoseconds(1); + m_data -= 1; return *this; } echrono::Duration echrono::Duration::operator--(int _unused) { diff --git a/echrono/Duration.hpp b/echrono/Duration.hpp index 3ba92d5..ce98d5e 100644 --- a/echrono/Duration.hpp +++ b/echrono/Duration.hpp @@ -9,20 +9,20 @@ #include namespace echrono { - template + template class genericOffsetTime { private: int64_t m_duration; public: - genericOffsetTime(int32_t _offsetSinceEpock=0) : - m_duration(_nanoSecondSinceEpock*int64_t(ECHRONO_FACTOR)) { + genericOffsetTime(int64_t _offsetSinceEpock=0) : + m_duration(_offsetSinceEpock*int64_t(ECHRONO_FACTOR)) { // nothing to do. } - int64_t get() { + int64_t get() const { return m_duration; } }; - using nanoseconds = genericOffsetTime<1LL> + using nanoseconds = genericOffsetTime<1LL>; using microseconds = genericOffsetTime<1000LL>; using milliseconds = genericOffsetTime<1000000LL>; using seconds = genericOffsetTime<1000000000LL>; @@ -37,15 +37,14 @@ namespace echrono { Duration(); Duration(int _val); //value in nanosecond Duration(int64_t _val); //value in nanosecond - Duration(int64_t _valSec, int64_t _valNano); //value in second and nanosecond + Duration(int64_t _valSec, int32_t _valNano); //value in second and nanosecond Duration(double _val); //value in second - template + template Duration(const genericOffsetTime& _val) { m_data = _val.get(); } ~Duration() { }; - int64_t count() const; - const int64_t& get() const { + int64_t get() const { return m_data; } const Duration& operator= (const Duration& _obj); diff --git a/echrono/Steady.cpp b/echrono/Steady.cpp index 3f677c0..34ceaa0 100644 --- a/echrono/Steady.cpp +++ b/echrono/Steady.cpp @@ -20,13 +20,17 @@ static int64_t getTime() { || defined(__TARGET_OS__Linux) \ || defined(__TARGET_OS__buildroot) struct timespec now; - int ret = clock_gettime(CLOCK_UPTIME_RAW, &now); + #ifdef CLOCK_BOOTTIME + int ret = clock_gettime(CLOCK_BOOTTIME, &now); + #else + int ret = clock_gettime(CLOCK_UPTIME_RAW, &now); + #endif if (ret != 0) { // Error to get the time ... now.tv_sec = time(nullptr); now.tv_nsec = 0; } - m_data = int64_t(now.tv_sec)*1000000LL + int64_t(now.tv_nsec)/1000LL; + return int64_t(now.tv_sec)*1000000LL + int64_t(now.tv_nsec)/1000LL; #elif defined(__TARGET_OS__MacOs) \ || defined(__TARGET_OS__IOs) struct timespec now; @@ -50,20 +54,16 @@ echrono::Steady::Steady() : } echrono::Steady::Steady(int64_t _valNano) { - m_data = std::chrono::steady_clock::time_point(std::chrono::nanoseconds(_valNano)); + m_data = _valNano; } -echrono::Steady::Steady(int64_t _valSec, int64_t _valNano) : +echrono::Steady::Steady(int64_t _valSec, int32_t _valNano) : m_data(_valSec*1000000000LL +_valNano) { } -echrono::Steady::Steady(const std::chrono::steady_clock::time_point& _val) { - m_data = _val; -} - echrono::Steady echrono::Steady::now() { - return echrono::Steady(std::chrono::steady_clock::now()); + return echrono::Steady(getTime()); } const echrono::Steady& echrono::Steady::operator= (const echrono::Steady& _obj) { @@ -118,7 +118,7 @@ echrono::Steady echrono::Steady::operator- (const echrono::Duration& _obj) const } echrono::Duration echrono::Steady::operator- (const echrono::Steady& _obj) const { - return m_data - _obj.m_data; + return echrono::Duration(int64_t(m_data - _obj.m_data)); } void echrono::Steady::reset() { @@ -126,7 +126,7 @@ void echrono::Steady::reset() { } etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Steady& _obj) { - int64_t ns = obj.get(); + int64_t ns = _obj.get(); int64_t totalSecond = ns/1000000000; int64_t millisecond = (ns%1000000000)/1000000; int64_t microsecond = (ns%1000000)/1000; diff --git a/echrono/Steady.hpp b/echrono/Steady.hpp index 63184a4..fcb7ba1 100644 --- a/echrono/Steady.hpp +++ b/echrono/Steady.hpp @@ -20,10 +20,10 @@ namespace echrono { Steady(); //Steady(const echrono::Duration& _val) {}; //value in second Steady(int64_t _valNano); - Steady(int64_t _valSec, int64_t _valNano); + Steady(int64_t _valSec, int32_t _valNano); Steady(const echrono::Steady& _obj); ~Steady() {}; - const int64_t& get() const { + int64_t get() const { return m_data; } /** diff --git a/echrono/Time.cpp b/echrono/Time.cpp index bdbe42b..a7cdcb9 100644 --- a/echrono/Time.cpp +++ b/echrono/Time.cpp @@ -26,7 +26,7 @@ static int64_t getTime() { now.tv_sec = time(nullptr); now.tv_nsec = 0; } - m_data = int64_t(now.tv_sec)*1000000LL + int64_t(now.tv_nsec)/1000LL; + return int64_t(now.tv_sec)*1000000LL + int64_t(now.tv_nsec)/1000LL; #elif defined(__TARGET_OS__MacOs) \ || defined(__TARGET_OS__IOs) struct timespec now; @@ -54,7 +54,7 @@ echrono::Time::Time(int64_t _valNano) : } -echrono::Time::Time(int64_t _valSec, int64_t _valNano) : +echrono::Time::Time(int64_t _valSec, int32_t _valNano) : m_data(_valSec*1000000000LL +_valNano) { } @@ -97,29 +97,29 @@ bool echrono::Time::operator>= (const echrono::Time& _obj) const { } const echrono::Time& echrono::Time::operator+= (const echrono::Duration& _obj) { - m_data += _obj.m_data; + m_data += _obj.get(); return *this; } echrono::Time echrono::Time::operator+ (const echrono::Duration& _obj) const { echrono::Time tmp(m_data); - tmp += _obj; + tmp += _obj.get(); return tmp; } const echrono::Time& echrono::Time::operator-= (const echrono::Duration& _obj) { - m_data -= _obj.m_data; + m_data -= _obj.get(); return *this; } echrono::Time echrono::Time::operator- (const echrono::Duration& _obj) const { echrono::Time tmp(m_data); - tmp -= _obj; + tmp -= _obj.get(); return tmp; } echrono::Duration echrono::Time::operator- (const echrono::Time& _obj) const { - return m_data - _obj.m_data; + return echrono::Duration(int64_t(m_data - _obj.m_data)); } void echrono::Time::reset() { @@ -128,7 +128,7 @@ void echrono::Time::reset() { etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Time& _obj) { - int64_t ns = _obj.get() + int64_t ns = _obj.get(); int64_t totalSecond = ns/1000000000; int64_t millisecond = (ns%1000000000)/1000000; int64_t microsecond = (ns%1000000)/1000; @@ -178,7 +178,7 @@ namespace etk { return etk::toString(_obj.get()); } template<> etk::UString toUString(const echrono::Time& _obj) { - return etk::toString(_obj.get()); + return etk::toUString(_obj.get()); } } diff --git a/echrono/Time.hpp b/echrono/Time.hpp index 7b38003..e7593f0 100644 --- a/echrono/Time.hpp +++ b/echrono/Time.hpp @@ -20,10 +20,10 @@ namespace echrono { Time(); //Time(const echrono::Duration& _val) {}; //value in second Time(int64_t _valNano); - Time(int64_t _valSec, int64_t _valNano); - Time(const echrono::Timet& _val); + Time(int64_t _valSec, int32_t _valNano); + Time(const echrono::Time& _val); ~Time() {}; - const int64_t& get() const { + int64_t get() const { return m_data; } /**