duration.h
Go to the documentation of this file.
00001 /*
00002  * Copyright 2017 Fraunhofer Institute for Manufacturing Engineering and Automation (IPA)
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *   http://www.apache.org/licenses/LICENSE-2.0
00009 
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
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 


cob_hand_bridge
Author(s): Mathias Lüdtke
autogenerated on Thu Jun 6 2019 20:43:57