CARLA
 
载入中...
搜索中...
未找到
Time.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once// 防止头文件被多次包含
8
9#include "carla/Debug.h"// 引入调试相关的头文件
10
11#include <boost/date_time/posix_time/posix_time_types.hpp>// 引入 Boost 的时间处理功能
12
13#include <chrono>
14
15namespace carla {
16
17 /// Positive time duration up to milliseconds resolution. Automatically casts
18 /// between std::chrono::duration and boost::posix_time::time_duration.
20 public:
21// 静态成员函数,用于创建一个表示指定秒数的时间间隔
22 static inline time_duration seconds(size_t timeout) {
23 return std::chrono::seconds(timeout);
24 }
25// 静态成员函数,用于创建一个表示指定毫秒数的时间间隔
26 static inline time_duration milliseconds(size_t timeout) {
27 return std::chrono::milliseconds(timeout);
28 }
29// 默认构造函数,创建一个表示 0 毫秒的时间间隔
30 constexpr time_duration() noexcept : _milliseconds(0u) {}
31
32// 模板构造函数,接受一个 std::chrono::duration 类型的参数,将其转换为以毫秒为单位的时间间隔
33 template <typename Rep, typename Period>
34 time_duration(std::chrono::duration<Rep, Period> duration)
35 : _milliseconds([=]() {
36 // 将传入的 duration 转换为毫秒数,并进行断言确保结果非负
37 const auto count = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
38 DEBUG_ASSERT(count >= 0);
39 return static_cast<size_t>(count);
40 }()) {}
41// 构造函数,接受一个 boost::posix_time::time_duration 类型的参数,将其转换为以毫秒为单位的时间间隔
42 time_duration(boost::posix_time::time_duration timeout)
43 : time_duration(std::chrono::milliseconds(timeout.total_milliseconds())) {}
44// 拷贝构造函数,使用默认实现
45 time_duration(const time_duration &) = default;
47// 将当前时间间隔转换为 boost::posix_time::time_duration 类型
48 boost::posix_time::time_duration to_posix_time() const {
49 return boost::posix_time::milliseconds(_milliseconds);
50 }
51// 将当前时间间隔转换为 std::chrono::milliseconds 类型
52 constexpr auto to_chrono() const {
53 return std::chrono::milliseconds(_milliseconds);
54 }
55// 类型转换运算符,将当前对象转换为 boost::posix_time::time_duration 类型
56 operator boost::posix_time::time_duration() const {
57 return to_posix_time();
58 }
59// 返回以毫秒为单位的时间值,不修改对象状态,保证不抛出异常
60 constexpr size_t milliseconds() const noexcept {
61 return _milliseconds;
62 }
63
64 private:
65// 存储时间间隔的毫秒数
67 };
68
69} // namespace carla
#define DEBUG_ASSERT(predicate)
Definition Debug.h:68
Positive time duration up to milliseconds resolution.
Definition Time.h:19
time_duration & operator=(const time_duration &)=default
time_duration(const time_duration &)=default
time_duration(boost::posix_time::time_duration timeout)
Definition Time.h:42
static time_duration seconds(size_t timeout)
Definition Time.h:22
boost::posix_time::time_duration to_posix_time() const
Definition Time.h:48
constexpr size_t milliseconds() const noexcept
Definition Time.h:60
time_duration(std::chrono::duration< Rep, Period > duration)
Definition Time.h:34
static time_duration milliseconds(size_t timeout)
Definition Time.h:26
size_t _milliseconds
Definition Time.h:66
constexpr time_duration() noexcept
Definition Time.h:30
constexpr auto to_chrono() const
Definition Time.h:52
CARLA模拟器的主命名空间。
Definition Carla.cpp:139