Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _ROS_DURATION_H_
00019 #define _ROS_DURATION_H_
00020
00021 #include <math.h>
00022 #include <stdint.h>
00023
00024 namespace ros {
00025
00026 void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec);
00027
00028 class Duration
00029 {
00030 public:
00031 int32_t sec, nsec;
00032
00033 Duration() : sec(0), nsec(0) {}
00034 Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec)
00035 {
00036 normalizeSecNSecSigned(sec, nsec);
00037 }
00038
00039 double toSec() const { return (double)sec + 1e-9*(double)nsec; };
00040 void fromSec(double t) { sec = (uint32_t) floor(t); nsec = (uint32_t) round((t-sec) * 1e9); };
00041
00042 Duration& operator+=(const Duration &rhs);
00043 Duration& operator-=(const Duration &rhs);
00044 Duration& operator*=(double scale);
00045 };
00046
00047 }
00048
00049 #endif
00050