MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
click.hpp
浏览该文件的文档.
1#ifndef MSTL_CORE_TIME_CLICK_HPP__
2#define MSTL_CORE_TIME_CLICK_HPP__
3
10
13
19
27struct click {
29
32 bool started = false;
33 bool stopped = false;
34
40 void start() noexcept {
42 started = true;
43 stopped = false;
44 }
45
51 void update() noexcept {
53 }
54
60 void stop() noexcept {
62 stopped = true;
63 }
64
73 if (!started || !stopped) {
74 throw_exception(value_exception("click not properly started/stopped"));
75 }
76 return last_time - start_time;
77 }
78
85 nanoseconds during_s() const noexcept {
86 if (!started || !stopped) {
87 return nanoseconds{0};
88 }
89 const auto diff = last_time - start_time;
90 return diff.count() >= 0 ? diff.to_nano() : 0_ns;
91 }
92
99 void reset() noexcept {
100 started = false;
101 stopped = false;
104 }
105};
106
107
116 click& clk_;
117
118public:
126 explicit click_guard(click& clk) noexcept : clk_(clk) {
127 clk_.start();
128 }
129
133 click_guard(const click_guard&) = delete;
134
139
146 ~click_guard() noexcept {
147 clk_.stop();
148 }
149};
150 // Click
152
154#endif // MSTL_CORE_TIME_CLICK_HPP__
click_guard & operator=(const click_guard &)=delete
禁止复制赋值
~click_guard() noexcept
析构函数
click_guard(click &clk) noexcept
构造函数
click_guard(const click_guard &)=delete
禁止复制构造
MSTL时钟类型
duration< int64_t, nano > nanoseconds
纳秒持续时间
#define MSTL_END_NAMESPACE__
结束全局命名空间MSTL
#define MSTL_BEGIN_NAMESPACE__
开始全局命名空间MSTL
计时器结构
time_point start_time
开始时间点
nanoseconds during() const
获取经过的时间
bool started
是否已开始计时
time_point last_time
最后更新时间点或停止时间点
void stop() noexcept
停止计时
void start() noexcept
开始计时
system_clock::time_point time_point
时间点类型
void update() noexcept
更新时间
bool stopped
是否已停止计时
void reset() noexcept
重置计时器
nanoseconds during_s() const noexcept
获取经过的时间
_MSTL time_point< system_clock > time_point
时间点类型
static time_point now() noexcept
获取当前时间点
变量处理异常