OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment that supports ordinary (i.e., non-delayed) and TLM connections.
src
OMSimulatorLib
Clock.h
Go to the documentation of this file.
1
/*
2
* This file is part of OpenModelica.
3
*
4
* Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
5
* c/o Linköpings universitet, Department of Computer and Information Science,
6
* SE-58183 Linköping, Sweden.
7
*
8
* All rights reserved.
9
*
10
* THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR
11
* THIS OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.2.
12
* ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES
13
* RECIPIENT'S ACCEPTANCE OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3,
14
* ACCORDING TO RECIPIENTS CHOICE.
15
*
16
* The OpenModelica software and the Open Source Modelica
17
* Consortium (OSMC) Public License (OSMC-PL) are obtained
18
* from OSMC, either from the above address,
19
* from the URLs: http://www.ida.liu.se/projects/OpenModelica or
20
* http://www.openmodelica.org, and in the OpenModelica distribution.
21
* GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
22
*
23
* This program is distributed WITHOUT ANY WARRANTY; without
24
* even the implied warranty of MERCHANTABILITY or FITNESS
25
* FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
26
* IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
27
*
28
* See the full OSMC Public License conditions for more details.
29
*
30
*/
31
32
#ifndef _OMS_CLOCK_H_
33
#define _OMS_CLOCK_H_
34
35
#include <ctime>
36
#include <chrono>
37
38
class
Clock
39
{
40
public
:
41
Clock
();
42
~Clock
();
43
44
void
tic
();
45
void
toc
();
46
void
reset
();
47
48
double
&
getElapsedCPUTime
();
49
double
&
getElapsedWallTime
();
50
51
bool
&
isActive
() {
return
active
;}
52
53
private
:
54
bool
active
;
55
std::clock_t
startCPUTime
;
56
std::chrono::system_clock::time_point
startWallTime
;
57
double
elapsedCPUTime
;
58
double
elapsedWallTime
;
59
};
60
61
class
CallClock
62
{
63
public
:
64
CallClock
(
Clock
&
clock
) :
clock
(
clock
),
active
(
clock
.isActive()) {
clock
.
tic
();}
65
~CallClock
() {
if
(!
active
)
clock
.
toc
();}
66
67
private
:
68
Clock
&
clock
;
69
bool
active
;
70
};
71
72
#endif
Clock
Definition:
Clock.h:38
Clock::elapsedWallTime
double elapsedWallTime
Definition:
Clock.h:58
Clock::getElapsedWallTime
double & getElapsedWallTime()
Definition:
Clock.cpp:92
Clock::~Clock
~Clock()
Definition:
Clock.cpp:43
Clock::Clock
Clock()
Definition:
Clock.cpp:38
Clock::tic
void tic()
Definition:
Clock.cpp:47
CallClock::CallClock
CallClock(Clock &clock)
Definition:
Clock.h:64
Clock.h
logWarning
#define logWarning(msg)
Definition:
Logging.h:101
Clock::elapsedCPUTime
double elapsedCPUTime
Definition:
Clock.h:57
Clock::reset
void reset()
Definition:
Clock.cpp:74
Clock::startCPUTime
std::clock_t startCPUTime
Definition:
Clock.h:55
CallClock::clock
Clock & clock
Definition:
Clock.h:68
Clock::isActive
bool & isActive()
Definition:
Clock.h:51
Clock::toc
void toc()
Definition:
Clock.cpp:57
CallClock::active
bool active
Definition:
Clock.h:69
Clock::startWallTime
std::chrono::system_clock::time_point startWallTime
Definition:
Clock.h:56
CallClock::~CallClock
~CallClock()
Definition:
Clock.h:65
Clock::active
bool active
Definition:
Clock.h:54
Logging.h
Clock::getElapsedCPUTime
double & getElapsedCPUTime()
Definition:
Clock.cpp:81
CallClock
Definition:
Clock.h:61
Generated by
1.8.17