[DEV] correct No STL

This commit is contained in:
Edouard DUPIN 2017-08-30 01:25:54 +02:00
parent e245d1e92b
commit 53e8ce8afb
8 changed files with 43 additions and 45 deletions

View File

@ -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) { m_data(_valSec*1000000000LL +_valNano) {
} }
@ -94,7 +94,7 @@ void echrono::Clock::reset() {
} }
etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Clock& _obj) { 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 totalSecond = ns/1000000000;
int64_t millisecond = (ns%1000000000)/1000000; int64_t millisecond = (ns%1000000000)/1000000;
int64_t microsecond = (ns%1000000)/1000; int64_t microsecond = (ns%1000000)/1000;
@ -141,7 +141,6 @@ etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Clock& _obj)
namespace etk { namespace etk {
template<> etk::String toString<echrono::Clock>(const echrono::Clock& _obj) { template<> etk::String toString<echrono::Clock>(const echrono::Clock& _obj) {
ns = std::chrono::duration_cast<std::chrono::nanoseconds>(_obj.get().time_since_epoch());
return etk::toString(_obj.get()); return etk::toString(_obj.get());
} }
template<> etk::UString toUString<echrono::Clock>(const echrono::Clock& _obj) { template<> etk::UString toUString<echrono::Clock>(const echrono::Clock& _obj) {

View File

@ -21,11 +21,11 @@ namespace echrono {
Clock(); Clock();
//Clock(const echrono::Duration& _val) {}; //value in second //Clock(const echrono::Duration& _val) {}; //value in second
Clock(int64_t _valNano); 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::Clock& _val);
Clock(const echrono::Steady& _val); Clock(const echrono::Steady& _val);
~Clock() {}; ~Clock() {};
const int64_t& get() const { int64_t get() const {
return m_data; return m_data;
} }
/** /**

View File

@ -16,18 +16,18 @@ echrono::Duration::Duration() :
} }
echrono::Duration::Duration(int _val) : 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) { m_data(_valSec*1000000000LL +_valNano) {
} }
echrono::Duration::Duration(int64_t _val) : echrono::Duration::Duration(int64_t _val) :
m_data(0) { { m_data(_val) {
m_data = std::chrono::nanoseconds(_val);
} }
echrono::Duration::Duration(double _val) { echrono::Duration::Duration(double _val) {
@ -75,7 +75,7 @@ const echrono::Duration& echrono::Duration::operator*= (float _value) {
return *this; return *this;
} }
echrono::Duration echrono::Duration::operator* (float _value) const { 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) { const echrono::Duration& echrono::Duration::operator+= (const echrono::Duration& _obj) {
@ -108,7 +108,7 @@ echrono::Duration echrono::Duration::operator++(int _unused) {
return tmp; return tmp;
} }
echrono::Duration& echrono::Duration::operator--() { echrono::Duration& echrono::Duration::operator--() {
m_data -= echrono::nanoseconds(1); m_data -= 1;
return *this; return *this;
} }
echrono::Duration echrono::Duration::operator--(int _unused) { echrono::Duration echrono::Duration::operator--(int _unused) {

View File

@ -9,20 +9,20 @@
#include <chrono> #include <chrono>
namespace echrono { namespace echrono {
template<ECHRONO_FACTOR> template<int64_t ECHRONO_FACTOR>
class genericOffsetTime { class genericOffsetTime {
private: private:
int64_t m_duration; int64_t m_duration;
public: public:
genericOffsetTime(int32_t _offsetSinceEpock=0) : genericOffsetTime(int64_t _offsetSinceEpock=0) :
m_duration(_nanoSecondSinceEpock*int64_t(ECHRONO_FACTOR)) { m_duration(_offsetSinceEpock*int64_t(ECHRONO_FACTOR)) {
// nothing to do. // nothing to do.
} }
int64_t get() { int64_t get() const {
return m_duration; return m_duration;
} }
}; };
using nanoseconds = genericOffsetTime<1LL> using nanoseconds = genericOffsetTime<1LL>;
using microseconds = genericOffsetTime<1000LL>; using microseconds = genericOffsetTime<1000LL>;
using milliseconds = genericOffsetTime<1000000LL>; using milliseconds = genericOffsetTime<1000000LL>;
using seconds = genericOffsetTime<1000000000LL>; using seconds = genericOffsetTime<1000000000LL>;
@ -37,15 +37,14 @@ namespace echrono {
Duration(); Duration();
Duration(int _val); //value in nanosecond Duration(int _val); //value in nanosecond
Duration(int64_t _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 Duration(double _val); //value in second
template<ECHRONO_FACTOR> template<int64_t ECHRONO_FACTOR>
Duration(const genericOffsetTime<ECHRONO_FACTOR>& _val) { Duration(const genericOffsetTime<ECHRONO_FACTOR>& _val) {
m_data = _val.get(); m_data = _val.get();
} }
~Duration() { }; ~Duration() { };
int64_t count() const; int64_t get() const {
const int64_t& get() const {
return m_data; return m_data;
} }
const Duration& operator= (const Duration& _obj); const Duration& operator= (const Duration& _obj);

View File

@ -20,13 +20,17 @@ static int64_t getTime() {
|| defined(__TARGET_OS__Linux) \ || defined(__TARGET_OS__Linux) \
|| defined(__TARGET_OS__buildroot) || defined(__TARGET_OS__buildroot)
struct timespec now; 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) { if (ret != 0) {
// Error to get the time ... // Error to get the time ...
now.tv_sec = time(nullptr); now.tv_sec = time(nullptr);
now.tv_nsec = 0; 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) \ #elif defined(__TARGET_OS__MacOs) \
|| defined(__TARGET_OS__IOs) || defined(__TARGET_OS__IOs)
struct timespec now; struct timespec now;
@ -50,20 +54,16 @@ echrono::Steady::Steady() :
} }
echrono::Steady::Steady(int64_t _valNano) { 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) { m_data(_valSec*1000000000LL +_valNano) {
} }
echrono::Steady::Steady(const std::chrono::steady_clock::time_point& _val) {
m_data = _val;
}
echrono::Steady echrono::Steady::now() { 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) { 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 { 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() { void echrono::Steady::reset() {
@ -126,7 +126,7 @@ void echrono::Steady::reset() {
} }
etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Steady& _obj) { 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 totalSecond = ns/1000000000;
int64_t millisecond = (ns%1000000000)/1000000; int64_t millisecond = (ns%1000000000)/1000000;
int64_t microsecond = (ns%1000000)/1000; int64_t microsecond = (ns%1000000)/1000;

View File

@ -20,10 +20,10 @@ namespace echrono {
Steady(); Steady();
//Steady(const echrono::Duration& _val) {}; //value in second //Steady(const echrono::Duration& _val) {}; //value in second
Steady(int64_t _valNano); 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 echrono::Steady& _obj);
~Steady() {}; ~Steady() {};
const int64_t& get() const { int64_t get() const {
return m_data; return m_data;
} }
/** /**

View File

@ -26,7 +26,7 @@ static int64_t getTime() {
now.tv_sec = time(nullptr); now.tv_sec = time(nullptr);
now.tv_nsec = 0; 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) \ #elif defined(__TARGET_OS__MacOs) \
|| defined(__TARGET_OS__IOs) || defined(__TARGET_OS__IOs)
struct timespec now; 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) { 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) { const echrono::Time& echrono::Time::operator+= (const echrono::Duration& _obj) {
m_data += _obj.m_data; m_data += _obj.get();
return *this; return *this;
} }
echrono::Time echrono::Time::operator+ (const echrono::Duration& _obj) const { echrono::Time echrono::Time::operator+ (const echrono::Duration& _obj) const {
echrono::Time tmp(m_data); echrono::Time tmp(m_data);
tmp += _obj; tmp += _obj.get();
return tmp; return tmp;
} }
const echrono::Time& echrono::Time::operator-= (const echrono::Duration& _obj) { const echrono::Time& echrono::Time::operator-= (const echrono::Duration& _obj) {
m_data -= _obj.m_data; m_data -= _obj.get();
return *this; return *this;
} }
echrono::Time echrono::Time::operator- (const echrono::Duration& _obj) const { echrono::Time echrono::Time::operator- (const echrono::Duration& _obj) const {
echrono::Time tmp(m_data); echrono::Time tmp(m_data);
tmp -= _obj; tmp -= _obj.get();
return tmp; return tmp;
} }
echrono::Duration echrono::Time::operator- (const echrono::Time& _obj) const { 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() { void echrono::Time::reset() {
@ -128,7 +128,7 @@ void echrono::Time::reset() {
etk::Stream& echrono::operator <<(etk::Stream& _os, const echrono::Time& _obj) { 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 totalSecond = ns/1000000000;
int64_t millisecond = (ns%1000000000)/1000000; int64_t millisecond = (ns%1000000000)/1000000;
int64_t microsecond = (ns%1000000)/1000; int64_t microsecond = (ns%1000000)/1000;
@ -178,7 +178,7 @@ namespace etk {
return etk::toString(_obj.get()); return etk::toString(_obj.get());
} }
template<> etk::UString toUString<echrono::Time>(const echrono::Time& _obj) { template<> etk::UString toUString<echrono::Time>(const echrono::Time& _obj) {
return etk::toString(_obj.get()); return etk::toUString(_obj.get());
} }
} }

View File

@ -20,10 +20,10 @@ namespace echrono {
Time(); Time();
//Time(const echrono::Duration& _val) {}; //value in second //Time(const echrono::Duration& _val) {}; //value in second
Time(int64_t _valNano); Time(int64_t _valNano);
Time(int64_t _valSec, int64_t _valNano); Time(int64_t _valSec, int32_t _valNano);
Time(const echrono::Timet& _val); Time(const echrono::Time& _val);
~Time() {}; ~Time() {};
const int64_t& get() const { int64_t get() const {
return m_data; return m_data;
} }
/** /**