duration.cpp
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 #include <math.h>
00019 #include "ros/duration.h"
00020 
00021 namespace ros
00022 {
00023   void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec)
00024   {
00025     int32_t nsec_part = nsec;
00026     int32_t sec_part = sec;
00027 
00028     while (nsec_part > 1000000000L)
00029     {
00030       nsec_part -= 1000000000L;
00031       ++sec_part;
00032     }
00033     while (nsec_part < 0)
00034     {
00035       nsec_part += 1000000000L;
00036       --sec_part;
00037     }
00038     sec = sec_part;
00039     nsec = nsec_part;
00040   }
00041 
00042   Duration& Duration::operator+=(const Duration &rhs)
00043   {
00044     sec += rhs.sec;
00045     nsec += rhs.nsec;
00046     normalizeSecNSecSigned(sec, nsec);
00047     return *this;
00048   }
00049 
00050   Duration& Duration::operator-=(const Duration &rhs){
00051     sec += -rhs.sec;
00052     nsec += -rhs.nsec;
00053     normalizeSecNSecSigned(sec, nsec);
00054     return *this;
00055   }
00056 
00057   Duration& Duration::operator*=(double scale){
00058     sec *= scale;
00059     nsec *= scale;
00060     normalizeSecNSecSigned(sec, nsec);
00061     return *this;
00062   }
00063 
00064 }


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