[complement-svn] SF.net SVN: complement: [1681] trunk/complement/explore/include/mt/time.h
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2007-08-16 19:11:02
|
Revision: 1681 http://complement.svn.sourceforge.net/complement/?rev=1681&view=rev Author: complement Date: 2007-08-16 12:11:00 -0700 (Thu, 16 Aug 2007) Log Message: ----------- add constructor with predefined stamps Modified Paths: -------------- trunk/complement/explore/include/mt/time.h Modified: trunk/complement/explore/include/mt/time.h =================================================================== --- trunk/complement/explore/include/mt/time.h 2007-08-16 18:44:28 UTC (rev 1680) +++ trunk/complement/explore/include/mt/time.h 2007-08-16 19:11:00 UTC (rev 1681) @@ -1,7 +1,7 @@ // -*- C++ -*- Time-stamp: <07/02/01 18:35:14 ptr> /* - * Copyright (c) 2002, 2006 + * Copyright (c) 2002, 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License version 3.0 @@ -81,9 +81,32 @@ namespace xmt { +// delay execution at least on time interval t +__FIT_DECLSPEC void delay( const ::timespec& interval, ::timespec& remain ); +__FIT_DECLSPEC void delay( const ::timespec& interval ); +inline void delay( const ::timespec *interval, ::timespec *remain ) +{ delay( *interval, *remain ); } +inline void delay( const ::timespec *interval ) +{ delay( *interval ); } +// sleep at least up to time t +__FIT_DECLSPEC void sleep( const ::timespec& abstime, ::timespec& real_time ); +__FIT_DECLSPEC void sleep( const ::timespec& abstime ); +inline void sleep( const ::timespec *abstime, ::timespec *real_time ) +{ sleep( *abstime, *real_time ); } +inline void sleep( const ::timespec *abstime ) +{ sleep( *abstime ); } +// get precise time +__FIT_DECLSPEC void gettime( ::timespec& t ); +inline void gettime( ::timespec *t ) +{ gettime( *t ); } + struct timespec : public ::timespec { + enum timeref { + now + }; + timespec() { tv_sec = 0; tv_nsec = 0; } @@ -99,6 +122,15 @@ timespec( const ::timespec& t ) { tv_sec = t.tv_sec; tv_nsec = t.tv_nsec; } + timespec( timeref r ) + { + switch ( r ) { + case now: + gettime( *this ); + break; + } + } + timespec& operator =( const timespec& t ) { tv_sec = t.tv_sec; tv_nsec = t.tv_nsec; return *this; } @@ -124,25 +156,6 @@ { return tv_nsec == 0 ? static_cast<double>(tv_sec) : tv_sec + 1.0e-9 * tv_nsec; } }; -// delay execution at least on time interval t -__FIT_DECLSPEC void delay( const ::timespec& interval, ::timespec& remain ); -__FIT_DECLSPEC void delay( const ::timespec& interval ); -inline void delay( const ::timespec *interval, ::timespec *remain ) -{ delay( *interval, *remain ); } -inline void delay( const ::timespec *interval ) -{ delay( *interval ); } -// sleep at least up to time t -__FIT_DECLSPEC void sleep( const ::timespec& abstime, ::timespec& real_time ); -__FIT_DECLSPEC void sleep( const ::timespec& abstime ); -inline void sleep( const ::timespec *abstime, ::timespec *real_time ) -{ sleep( *abstime, *real_time ); } -inline void sleep( const ::timespec *abstime ) -{ sleep( *abstime ); } -// get precise time -__FIT_DECLSPEC void gettime( ::timespec& t ); -inline void gettime( ::timespec *t ) -{ gettime( *t ); } - } // namespace xmt #endif // __mt_time_h This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |