?? timeval.hh
字號:
/* * Little Green BATS (2006) * * Authors: Martin Klomp (martin@ai.rug.nl) * Mart van de Sanden (vdsanden@ai.rug.nl) * Sander van Dijk (sgdijk@ai.rug.nl) * A. Bram Neijt (bneijt@gmail.com) * Matthijs Platje (mplatje@gmail.com) * * Date: September 14, 2006 * * Website: http://www.littlegreenbats.nl * * Comment: Please feel free to contact us if you have any * problems or questions about the code. * * * License: This program is free software; you can redistribute * it and/or modify it under the terms of the GNU General * Public License as published by the Free Software * Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will * be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU General Public * License for more details. * * You should have received a copy of the GNU General * Public License along with this program; if not, write * to the Free Software Foundation, Inc., 59 Temple Place - * Suite 330, Boston, MA 02111-1307, USA. * */#ifndef __INC_MVDS_TIMEVAL_H_#define __INC_MVDS_TIMEVAL_H_#ifndef __SYSINC_SYS_TIME_H_#define __SYSINC_SYS_TIME_H_#include <sys/time.h>#endif#ifndef __SYSINC_TIME_H_#define __SYSINC_TIME_H_#include <time.h>#endif#ifndef __SYSINC_IOSTREAM#define __SYSINC_IOSTREAM#include <iostream>#endifnamespace mvds { class TimeVal { friend std::ostream &operator<<(std::ostream &, const TimeVal &); struct timeval tv; void copy(TimeVal const &_other) { tv.tv_sec = _other.tv.tv_sec; tv.tv_usec = _other.tv.tv_usec; } void destroy() { } public: static TimeVal getTimeOfDay(); TimeVal() { tv.tv_sec = 0; tv.tv_usec = 0; } TimeVal(TimeVal const &_other) { copy(_other); } TimeVal(time_t _sec, suseconds_t _usec) { tv.tv_sec = _sec; tv.tv_usec = _usec; } TimeVal(struct timeval const &_tv) { tv.tv_sec = _tv.tv_sec; tv.tv_usec = _tv.tv_usec; } ~TimeVal() { destroy(); } TimeVal &operator=(TimeVal const &_other) { if (this != &_other) { destroy(); copy(_other); } return *this; } operator struct timeval &() { return tv; } operator struct timeval *() { return &tv; } bool operator==(TimeVal const &_other) const { return ((tv.tv_sec == _other.tv.tv_sec) && (tv.tv_usec == _other.tv.tv_usec)); } bool operator!=(TimeVal const &_other) const { return ((tv.tv_sec != _other.tv.tv_sec) || (tv.tv_usec != _other.tv.tv_usec)); } bool operator>(TimeVal const &_other) const { return ((tv.tv_sec > _other.tv.tv_sec) || ((tv.tv_sec == _other.tv.tv_sec) && (tv.tv_usec > _other.tv.tv_usec))); } bool operator<(TimeVal const &_other) const { return ((tv.tv_sec < _other.tv.tv_sec) || ((tv.tv_sec == _other.tv.tv_sec) && (tv.tv_usec < _other.tv.tv_usec))); } bool operator>=(TimeVal const &_other) const { return ((tv.tv_sec >= _other.tv.tv_sec) || ((tv.tv_sec == _other.tv.tv_sec) && (tv.tv_usec >= _other.tv.tv_usec))); } bool operator<=(TimeVal const &_other) const { return ((tv.tv_sec <= _other.tv.tv_sec) || ((tv.tv_sec == _other.tv.tv_sec) && (tv.tv_usec <= _other.tv.tv_usec))); } TimeVal operator+(TimeVal const &_other) const { return TimeVal((tv.tv_sec + _other.tv.tv_sec) + ((tv.tv_usec + _other.tv.tv_usec) / 1000000), (tv.tv_usec + _other.tv.tv_usec) % 1000000); } TimeVal operator-(TimeVal const &_other) const { struct timeval res; res.tv_sec = (tv.tv_sec - _other.tv.tv_sec); if (tv.tv_usec < _other.tv.tv_usec) { res.tv_sec -= (1 + (_other.tv.tv_usec - tv.tv_usec) / 1000000); res.tv_usec = (1000000 - ((_other.tv.tv_usec - tv.tv_usec) % 1000000)); } else res.tv_usec = (tv.tv_usec - _other.tv.tv_usec); return TimeVal(res); } }; std::ostream &operator<<(std::ostream &_os, const TimeVal &_tv);};#endif // __INC_MVDS_TIMEVAL_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -