NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
click.hpp
浏览该文件的文档.
1#ifndef NEFORCE_CORE_TIME_CLICK_HPP__
2#define NEFORCE_CORE_TIME_CLICK_HPP__
3
10
12NEFORCE_BEGIN_NAMESPACE__
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 { last_time = system_clock::now(); }
52
58 void stop() noexcept {
60 stopped = true;
61 }
62
71 if (!started || !stopped) {
72 NEFORCE_THROW_EXCEPTION(value_exception("click not properly started/stopped"));
73 }
74 return last_time - start_time;
75 }
76
83 nanoseconds during_s() const noexcept {
84 if (!started || !stopped) {
85 return nanoseconds{0};
86 }
87 const auto diff = last_time - start_time;
88 return diff.count() >= 0 ? diff.to_nano() : 0_ns;
89 }
90
97 void reset() noexcept {
98 started = false;
99 stopped = false;
102 }
103};
104
105
114 click& clk_;
115
116public:
124 explicit scoped_click(click& clk) noexcept :
125 clk_(clk) {
126 clk_.start();
127 }
128
132 scoped_click(const scoped_click&) = delete;
133
138
145 ~scoped_click() noexcept { clk_.stop(); }
146};
147 // Click
149
150NEFORCE_END_NAMESPACE__
151#endif // NEFORCE_CORE_TIME_CLICK_HPP__
scoped_click(const scoped_click &)=delete
禁止复制构造
scoped_click(click &clk) noexcept
构造函数
scoped_click & operator=(const scoped_click &)=delete
禁止复制赋值
~scoped_click() noexcept
析构函数
时钟类型
duration< int64_t, nano > nanoseconds
纳秒持续时间
计时器结构
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
获取经过的时间
static time_point now() noexcept
获取当前时间点
_NEFORCE time_point< system_clock > time_point
时间点类型
变量处理异常