12 #ifndef ECL_TIME_TIMESTAMP_BASE_HPP_ 13 #define ECL_TIME_TIMESTAMP_BASE_HPP_ 20 #include <ecl/time_lite/types.hpp> 21 #include <ecl/config/macros.hpp> 22 #include <ecl/exceptions/standard_exception.hpp> 45 explicit TimeStampBase() {};
66 TimeStampBase (
const time_t &seconds,
const long &nanoseconds)
ecl_assert_throw_decl(StandardException);
68 virtual ~TimeStampBase() {}
83 const TimeStampBase& stamp (
const double& decimal_time_value)
ecl_assert_throw_decl(StandardException);
94 const TimeStampBase& stamp (
const time_t &seconds,
const long &nanoseconds)
ecl_assert_throw_decl(StandardException);
105 long sec()
const {
return time.tv_sec; }
112 long msec()
const {
return time.tv_nsec/1000000L; }
119 long usec()
const {
return time.tv_nsec/1000; }
126 long nsec()
const {
return time.tv_nsec; }
134 operator double()
const {
return ( time.tv_sec + time.tv_nsec*0.000000001); }
144 bool operator==(
const TimeStampBase& time_stamp);
150 bool operator!=(
const TimeStampBase& time_stamp);
156 bool operator<=(
const TimeStampBase& time_stamp);
162 bool operator>=(
const TimeStampBase& time_stamp);
168 bool operator<(
const TimeStampBase& time_stamp);
174 bool operator>(
const TimeStampBase& time_stamp);
184 TimeStampBase operator+(
const TimeStampBase& time_stamp );
189 void operator+=(
const TimeStampBase& time_stamp);
213 template <
typename OutputStream>
214 friend OutputStream&
operator << ( OutputStream &ostream ,
const TimeStampBase& time_stamp );
225 template <
typename OutputStream>
228 if ( ( time_stamp.
time.tv_sec == 0 ) && (time_stamp.
time.tv_nsec < 0 ) ) {
231 ostream << time_stamp.
time.tv_sec <<
".";
232 long nanoseconds = std::abs(time_stamp.
time.tv_nsec);
233 if ( nanoseconds < 10 ) {
234 ostream <<
"00000000";
235 }
else if ( nanoseconds < 100 ) {
236 ostream <<
"0000000";
237 }
else if ( nanoseconds < 1000 ) {
239 }
else if ( nanoseconds < 10000 ) {
241 }
else if ( nanoseconds < 100000 ) {
243 }
else if ( nanoseconds < 1000000 ) {
245 }
else if ( nanoseconds < 10000000 ) {
247 }
else if ( nanoseconds < 100000000 ) {
250 ostream << nanoseconds;
OutputStream & operator<<(OutputStream &ostream, const Void void_object)
Output stream operator for Void objects.
This class provides common functionality across platforms for the timestamps.
#define ecl_assert_throw_decl(exception)
Assure throw exception declaration.