X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2FTimeout.cpp;h=449fee033b77e1a6fc698b7595ac3d432ed47ec3;hb=c1945d27dfd19ef698ae7506c1311ce94091207a;hp=127d3bd008d6680f72987b35e2e6c80244d3b0ea;hpb=9b4a26a252b2da164fcd6aa84feed0a738b16c10;p=lyx.git diff --git a/src/support/Timeout.cpp b/src/support/Timeout.cpp index 127d3bd008..449fee033b 100644 --- a/src/support/Timeout.cpp +++ b/src/support/Timeout.cpp @@ -17,6 +17,10 @@ #include #include +#include +#include +#include + using namespace std; namespace lyx { @@ -135,11 +139,96 @@ Timeout & Timeout::setType(Type t) Timeout & Timeout::setTimeout(unsigned int msec) { // Can't have a timeout of zero! - LASSERT(msec, /**/); + LASSERT(msec, msec = 1000); timeout_ms = msec; return *this; } +struct Timer::Private +{ + time_t start_time; +}; + + +Timer::Timer() : d(new Private) +{ + restart(); +} + + +Timer::~Timer() +{ + delete d; +} + + +void Timer::restart() +{ + time(&d->start_time); +} + + +int Timer::elapsed() const +{ + time_t end_time; + time(&end_time); + double diff = difftime(end_time, d->start_time); + return int(diff); +} + + +string Timer::timeStr(char separator) const +{ + tm * timeinfo = localtime(&d->start_time); + // With less flexibility we could also use: + //strftime(buffer, 10, "%X", timeinfo); + ostringstream out; + out << setw(2) << setfill('0'); + if (separator) { + out << separator << setw(2) << setfill('0') << timeinfo->tm_hour + << separator << setw(2) << setfill('0') << timeinfo->tm_min + << separator << setw(2) << setfill('0') << timeinfo->tm_sec; + } else { + out << setw(2) << setfill('0') << timeinfo->tm_hour + << setw(2) << setfill('0') << timeinfo->tm_min + << setw(2) << setfill('0') << timeinfo->tm_sec; + } + return out.str(); +} + + +string Timer::dateStr(char separator) const +{ + tm * timeinfo = localtime(&d->start_time); + // With less flexibility we could also use: + //res = strftime(buffer, 10, "%d%m%y", timeinfo); + ostringstream out; + out << setw(2) << setfill('0') << timeinfo->tm_mday; + if (separator) + out << separator; + out << setw(2) << setfill('0') << timeinfo->tm_mon; + if (separator) + out << separator; + out << setw(2) << setfill('0') << timeinfo->tm_year - 100; + return out.str(); +} + + +string Timer::toStr() const +{ + tm * timeinfo = localtime(&d->start_time); + return asctime(timeinfo); +} + + +string Timer::currentToStr() +{ + time_t current_time; + time(¤t_time); + tm * timeinfo = localtime(¤t_time); + return asctime(timeinfo); +} + } // namespace lyx