1 |
|
|
/*************************************** |
2 |
|
|
Auteur : Pierre Aubert |
3 |
|
|
Mail : pierre.aubert@lapp.in2p3.fr |
4 |
|
|
Licence : CeCILL-C |
5 |
|
|
****************************************/ |
6 |
|
|
|
7 |
|
|
#include "PTimer.h" |
8 |
|
|
|
9 |
|
|
///Default constructor of PTimer |
10 |
|
|
/** @param ellapsedTime : ellapsed time between two calls (in nanoseconds) |
11 |
|
|
*/ |
12 |
|
3 |
PTimer::PTimer(size_t ellapsedTime) |
13 |
|
3 |
:p_ellapsedTime(ellapsedTime) |
14 |
|
|
{ |
15 |
|
3 |
initialisationPTimer(); |
16 |
|
3 |
} |
17 |
|
|
|
18 |
|
|
///Copy constructor of PTimer |
19 |
|
|
/** @param other : class to copy |
20 |
|
|
*/ |
21 |
|
1 |
PTimer::PTimer(const PTimer & other){ |
22 |
|
1 |
copyPTimer(other); |
23 |
|
1 |
} |
24 |
|
|
|
25 |
|
|
///Destructor of PTimer |
26 |
|
8 |
PTimer::~PTimer(){ |
27 |
|
|
|
28 |
|
|
} |
29 |
|
|
|
30 |
|
|
///Definition of equal operator of PTimer |
31 |
|
|
/** @param other : class to copy |
32 |
|
|
* @return copied class |
33 |
|
|
*/ |
34 |
|
1 |
PTimer & PTimer::operator = (const PTimer & other){ |
35 |
|
1 |
copyPTimer(other); |
36 |
|
1 |
return *this; |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
///Start the current clock |
40 |
|
13 |
void PTimer::start(){ |
41 |
|
13 |
p_startTime = std::chrono::steady_clock::now(); |
42 |
|
13 |
} |
43 |
|
|
|
44 |
|
|
///Set the ellapsed time in nanoseconds |
45 |
|
|
/** @param ellapsedTime : ellapsed time in nanoseconds |
46 |
|
|
*/ |
47 |
|
1 |
void PTimer::setEllapsedTime(size_t ellapsedTime){ |
48 |
|
1 |
p_ellapsedTime = ellapsedTime; |
49 |
|
1 |
} |
50 |
|
|
|
51 |
|
|
///Get the ellapsed time in nanoseconds |
52 |
|
|
/** @return ellapsed time in nanoseconds |
53 |
|
|
*/ |
54 |
|
4 |
size_t PTimer::getEllapsedTime() const{ |
55 |
|
4 |
return p_ellapsedTime; |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
///Returns true if the given ellapsed time between to call is passed |
59 |
|
|
/** @return true if the given ellapsed time between to call is passed, false otherwise |
60 |
|
|
*/ |
61 |
|
8116155 |
bool PTimer::isTime(){ |
62 |
|
8116155 |
size_t ellapsedTimeNs(0lu); |
63 |
✓ |
16232310 |
return isTime(ellapsedTimeNs); |
64 |
|
|
} |
65 |
|
|
|
66 |
|
|
///Returns true if the given ellapsed time between to call is passed |
67 |
|
|
/** @param[out] ellapsedTimeNs : real ellapsed time in nanoseconds between the call of isTime and the last start of the PTimer (maybe in another isTime) |
68 |
|
|
* @return true if the given ellapsed time between to call is passed, false otherwise |
69 |
|
|
*/ |
70 |
|
16232309 |
bool PTimer::isTime(size_t & ellapsedTimeNs){ |
71 |
✓ |
16232309 |
std::chrono::nanoseconds ellapsedTime(std::chrono::steady_clock::now() - p_startTime); |
72 |
|
16232309 |
ellapsedTimeNs = ellapsedTime.count(); |
73 |
|
16232309 |
bool b(ellapsedTimeNs >= p_ellapsedTime); |
74 |
✓✓ |
16232309 |
if(b){ |
75 |
✓ |
10 |
start(); |
76 |
|
|
} |
77 |
|
16232309 |
return b; |
78 |
|
|
} |
79 |
|
|
|
80 |
|
|
///Copy function of PTimer |
81 |
|
|
/** @param other : class to copy |
82 |
|
|
*/ |
83 |
|
2 |
void PTimer::copyPTimer(const PTimer & other){ |
84 |
|
2 |
p_ellapsedTime = other.p_ellapsedTime; |
85 |
|
2 |
p_startTime = other.p_startTime; |
86 |
|
2 |
} |
87 |
|
|
|
88 |
|
|
///Initialisation function of the class PTimer |
89 |
|
3 |
void PTimer::initialisationPTimer(){ |
90 |
|
3 |
start(); |
91 |
|
3 |
} |
92 |
|
|
|
93 |
|
|
|
94 |
|
|
|
95 |
|
|
|
96 |
|
|
|