CARLA
Loading...
Searching...
No Matches
Time.h
Go to the documentation of this file.
1// Copyright (c) 2026 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#include <chrono>
11
12#if __has_include(<boost/date_time/posix_time/posix_time_types.hpp>)
13#include <boost/date_time/posix_time/posix_time_types.hpp>
14#endif
15
16namespace carla {
17
18 /// Positive time duration up to milliseconds resolution. Automatically casts
19 /// between std::chrono::duration and boost::posix_time::time_duration.
21 public:
22
23 static inline time_duration seconds(size_t timeout) {
24 return std::chrono::seconds(timeout);
25 }
26
27 static inline time_duration milliseconds(size_t timeout) {
28 return std::chrono::milliseconds(timeout);
29 }
30
31 constexpr time_duration() noexcept : _milliseconds(0u) {}
32
33 template <typename Rep, typename Period>
34 time_duration(std::chrono::duration<Rep, Period> duration)
35 : _milliseconds([=]() {
36 const auto count = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
37 DEBUG_ASSERT(count >= 0);
38 return static_cast<size_t>(count);
39 }()) {}
40 time_duration(const time_duration &) = default;
42
43#if __has_include(<boost/date_time/posix_time/posix_time_types.hpp>)
44 time_duration(boost::posix_time::time_duration timeout)
45 : time_duration(std::chrono::milliseconds(timeout.total_milliseconds()))
46 {
47 }
48
49 boost::posix_time::time_duration to_posix_time() const {
50 return boost::posix_time::milliseconds(_milliseconds);
51 }
52#endif
53
54 constexpr auto to_chrono() const {
55 return std::chrono::milliseconds(_milliseconds);
56 }
57
58 operator boost::posix_time::time_duration() const {
59 return to_posix_time();
60 }
61
62 constexpr size_t milliseconds() const noexcept {
63 return _milliseconds;
64 }
65
66 private:
67
69 };
70
71} // namespace carla
#define DEBUG_ASSERT(predicate)
Definition Debug.h:66
Positive time duration up to milliseconds resolution.
Definition Time.h:20
time_duration & operator=(const time_duration &)=default
time_duration(const time_duration &)=default
static time_duration seconds(size_t timeout)
Definition Time.h:23
constexpr size_t milliseconds() const noexcept
Definition Time.h:62
time_duration(std::chrono::duration< Rep, Period > duration)
Definition Time.h:34
static time_duration milliseconds(size_t timeout)
Definition Time.h:27
size_t _milliseconds
Definition Time.h:68
constexpr time_duration() noexcept
Definition Time.h:31
constexpr auto to_chrono() const
Definition Time.h:54
This file contains definitions of common data structures used in traffic manager.