1 /* ************************************************************************
2  * Copyright 2013 Advanced Micro Devices, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  * ************************************************************************/
16 
17 #include "ctimer.h"
18 #include "timer.hpp"
19 
20 timer::
timer()21 timer() : elapsed_time_(0.0)
22 {
23   init_time_ = get_walltime();
24 }
25 
26 timer::
~timer()27 ~timer()
28 {
29 }
30 
31 double
32 timer::
get()33 get()
34 {
35   return elapsed_time_ + get_walltime() - init_time_;
36 }
37 
38 void
39 timer::
pause()40 pause()
41 {
42   elapsed_time_ = get();
43 }
44 
45 void
46 timer::
restart()47 restart()
48 {
49   init_time_ = get_walltime();
50 }
51 
52 void
53 timer::
reset()54 reset()
55 {
56   elapsed_time_ = 0.0;
57   init_time_ = get_walltime();
58 }
59 
60 void
61 timer::
reset_delay(double delay_time)62 reset_delay(double delay_time)
63 {
64   reset();
65   elapsed_time_ = delay_time;
66 }
67 
CreateTimer()68 Timer CreateTimer()
69 {
70   Timer local_timer = new timer();
71   return local_timer;
72 }
73 
DeleteTimer(Timer timer)74 void DeleteTimer(Timer timer)
75 {
76   delete timer;
77 }
78 
GetTime(Timer timer)79 double GetTime(Timer timer)
80 {
81   return timer->get();
82 }
83 
ResetTimer(Timer timer)84 void ResetTimer(Timer timer)
85 {
86   timer->reset();
87 }
88 
RestartTimer(Timer timer)89 void RestartTimer(Timer timer)
90 {
91   timer->restart();
92 }
93 
PauseTimer(Timer timer)94 void PauseTimer(Timer timer)
95 {
96   timer->pause();
97 }
98 
ResetDelayTimer(Timer timer,double delay_time)99 void ResetDelayTimer(Timer timer, double delay_time)
100 {
101   timer->reset_delay(delay_time);
102 }
103 
104