[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) {
}
@ -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<echrono::Clock>(const echrono::Clock& _obj) {
ns = std::chrono::duration_cast<std::chrono::nanoseconds>(_obj.get().time_since_epoch());
return etk::toString(_obj.get());
}
template<> etk::UString toUString<echrono::Clock>(const echrono::Clock& _obj) {

View File

@ -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;
}
/**

View File

@ -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) {

View File

@ -9,20 +9,20 @@
#include <chrono>
namespace echrono {
template<ECHRONO_FACTOR>
template<int64_t ECHRONO_FACTOR>
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<ECHRONO_FACTOR>
template<int64_t ECHRONO_FACTOR>
Duration(const genericOffsetTime<ECHRONO_FACTOR>& _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);

View File

@ -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;

View File

@ -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;
}
/**

View File

@ -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<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(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;
}
/**