00001 #include <stdlib.h>
00002 #include "FCam/Time.h"
00003 #include "Debug.h"
00004
00005
00006 namespace FCam {
00007
00008 Time Time::now() {
00009 Time t2;
00010 gettimeofday(&t2.t, NULL);
00011 return t2;
00012 }
00013
00014 int Time::operator-(const Time &other) const {
00015 return (((int)(s()) - (int)(other.s()))*1000000 +
00016 ((int)(us()) - (int)(other.us())));
00017 }
00018
00019 bool Time::operator<(const Time &other) const {
00020 return (s() < other.s() ||
00021 (s() == other.s() && us() < other.us()));
00022 }
00023
00024 bool Time::operator>(const Time &other) const {
00025 return (s() > other.s() ||
00026 (s() == other.s() && us() > other.us()));
00027 }
00028
00029 bool Time::operator>=(const Time &other) const {
00030 return (s() > other.s() ||
00031 (s() == other.s() && us() >= other.us()));
00032 }
00033
00034 bool Time::operator<=(const Time &other) const {
00035 return (s() < other.s() ||
00036 (s() == other.s() && us() <= other.us()));
00037 }
00038
00039 bool Time::operator==(const Time &other) const {
00040 return (s() == other.s() &&
00041 us() == other.us());
00042 }
00043
00044 bool Time::operator!=(const Time &other) const {
00045 return (us() != other.us() ||
00046 s() != other.s());
00047 }
00048
00049
00050 Time Time::operator+=(int usecs) {
00051 int newUsecs = us() + usecs;
00052 int dSec = 0;
00053 while (newUsecs < 0) {
00054 dSec--;
00055 newUsecs += 1000000;
00056 }
00057 while (newUsecs > 1000000) {
00058 dSec++;
00059 newUsecs -= 1000000;
00060 }
00061 t.tv_usec = newUsecs;
00062 t.tv_sec += dSec;
00063 return *this;
00064 }
00065
00066 Time Time::operator+(int usecs) const {
00067 Time t2 = *this;
00068 t2 += usecs;
00069 return t2;
00070 }
00071
00072 Time::operator timeval() {
00073 return t;
00074 }
00075
00076 Time::operator struct timespec() {
00077 struct timespec t_;
00078 t_.tv_sec = t.tv_sec;
00079 t_.tv_nsec = t.tv_usec*1000;
00080 return t_;
00081 }
00082
00083 }
00084