Updated SWH plugins and added missing hermes_filter plugin
[lmms/mlankhorst.git] / include / MicroTimer.h
blob5676a468476c56929bcefd6c77731af8724c6255
1 /*
2 * MicroTimer.h - simple high-precision timer
4 * Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
25 #ifndef _MICRO_TIMER
26 #define _MICRO_TIMER
28 #include "lmmsconfig.h"
30 #ifdef LMMS_HAVE_SYS_TIME_H
31 #include <sys/time.h>
32 #endif
34 #include <cstdlib>
35 #include "lmms_basics.h"
38 class MicroTimer
40 public:
41 inline MicroTimer()
43 reset();
46 inline ~MicroTimer()
50 inline void reset()
52 gettimeofday( &begin, NULL );
55 inline int elapsed() const
57 struct timeval now;
58 gettimeofday( &now, NULL );
59 return ( now.tv_sec - begin.tv_sec ) * 1000 * 1000 +
60 ( now.tv_usec - begin.tv_usec );
64 private:
65 struct timeval begin;
67 } ;
70 #endif