Back to Serial Studio

MDF Lib: include/mdf/itimestamp.h Source File

lib/mdflib/docs/manual/html/itimestamp_8h_source.html

3.2.79.9 KB
Original Source

| MDF Lib 2.2

Interface against MDF 3/4 files |

Loading...

Searching...

No Matches

itimestamp.h

1#pragma once

2#include <string>

3

4namespace mdf {

5

6namespace timeunits {

7constexpr uint64_t kNanosecondsPerSecond = 1'000'000'000;

8constexpr uint64_t kNanosecondsPerMinute = 60 * kNanosecondsPerSecond;

9constexpr uint64_t kNanosecondsPerHour = 60 * kNanosecondsPerMinute;

10constexpr uint32_t kSecondsPerMinute = 60;

11constexpr uint32_t kSecondsPerHour = 60 * kSecondsPerMinute;

12} // namespace timeunits

13

17class ITimestamp {

18 public:

22virtual ~ITimestamp() = default;

27 [[nodiscard]] virtual uint64_t GetTimeNs() const = 0;

32 [[nodiscard]] virtual int16_t GetTimezoneMin() const = 0;

37 [[nodiscard]] virtual int16_t GetDstMin() const = 0;

42 [[nodiscard]] virtual uint64_t GetUtcTimeNs() const = 0;

43};

44

48class UtcTimestamp : public ITimestamp {

49 public:

54explicit UtcTimestamp(uint64_t utc_timestamp);

55

56 [[nodiscard]] uint64_t GetTimeNs() const override;

57 [[nodiscard]] int16_t GetTimezoneMin() const override;

58 [[nodiscard]] int16_t GetDstMin() const override;

59 [[nodiscard]] uint64_t GetUtcTimeNs() const override;

60

61 private:

62 uint64_t utc_timestamp_;

63};

64

68class LocalTimestamp : public ITimestamp {

69 public:

75explicit LocalTimestamp(uint64_t local_timestamp);

76 [[nodiscard]] uint64_t GetTimeNs() const override;

77 [[nodiscard]] int16_t GetTimezoneMin() const override;

78 [[nodiscard]] int16_t GetDstMin() const override;

79 [[nodiscard]] uint64_t GetUtcTimeNs() const override;

80

81 private:

82 uint64_t local_timestamp_;

84 int16_t timezone_offset_min_ = 0;

85 int16_t dst_offset_min_ = 0;

86};

87

91class TimezoneTimestamp : public ITimestamp {

92 public:

99TimezoneTimestamp(uint64_t utc_timestamp, int16_t timezone_offset_min,

100 int16_t dst_offset_min);

101 [[nodiscard]] uint64_t GetTimeNs() const override;

102 [[nodiscard]] int16_t GetTimezoneMin() const override;

103 [[nodiscard]] int16_t GetDstMin() const override;

104 [[nodiscard]] uint64_t GetUtcTimeNs() const override;

105

106 private:

107 uint64_t utc_timestamp_;

108 int16_t timezone_offset_min_;

109 int16_t dst_offset_min_;

110};

111} // namespace mdf

mdf::ITimestamp

Interface for timestamp handling in MDF files.

Definition itimestamp.h:17

mdf::ITimestamp::GetDstMin

virtual int16_t GetDstMin() const =0

Get the daylight saving time offset in minutes.

mdf::ITimestamp::GetTimeNs

virtual uint64_t GetTimeNs() const =0

Get the time in nanoseconds.

mdf::ITimestamp::~ITimestamp

virtual ~ITimestamp()=default

Virtual destructor for ITimestamp.

mdf::ITimestamp::GetTimezoneMin

virtual int16_t GetTimezoneMin() const =0

Get the timezone offset in minutes.

mdf::ITimestamp::GetUtcTimeNs

virtual uint64_t GetUtcTimeNs() const =0

Get the UTC time in nanoseconds.

mdf::LocalTimestamp

Class representing a local timestamp, with timezone and DST offset.

Definition itimestamp.h:68

mdf::LocalTimestamp::GetDstMin

int16_t GetDstMin() const override

Get the daylight saving time offset in minutes.

mdf::LocalTimestamp::GetTimeNs

uint64_t GetTimeNs() const override

Get the time in nanoseconds.

mdf::LocalTimestamp::GetTimezoneMin

int16_t GetTimezoneMin() const override

Get the timezone offset in minutes.

mdf::LocalTimestamp::LocalTimestamp

LocalTimestamp(uint64_t local_timestamp)

Constructor for LocalTimeStamp.

mdf::LocalTimestamp::GetUtcTimeNs

uint64_t GetUtcTimeNs() const override

Get the UTC time in nanoseconds.

mdf::TimezoneTimestamp

Class representing a timestamp with timezone information.

Definition itimestamp.h:91

mdf::TimezoneTimestamp::GetDstMin

int16_t GetDstMin() const override

Get the daylight saving time offset in minutes.

mdf::TimezoneTimestamp::TimezoneTimestamp

TimezoneTimestamp(uint64_t utc_timestamp, int16_t timezone_offset_min, int16_t dst_offset_min)

Constructor for TimezoneTimeStamp.

mdf::TimezoneTimestamp::GetTimezoneMin

int16_t GetTimezoneMin() const override

Get the timezone offset in minutes.

mdf::TimezoneTimestamp::GetUtcTimeNs

uint64_t GetUtcTimeNs() const override

Get the UTC time in nanoseconds.

mdf::TimezoneTimestamp::GetTimeNs

uint64_t GetTimeNs() const override

Get the time in nanoseconds.

mdf::UtcTimestamp

Class representing a UTC timestamp.

Definition itimestamp.h:48

mdf::UtcTimestamp::GetUtcTimeNs

uint64_t GetUtcTimeNs() const override

Get the UTC time in nanoseconds.

mdf::UtcTimestamp::UtcTimestamp

UtcTimestamp(uint64_t utc_timestamp)

Constructor for UtcTimeStamp.

mdf::UtcTimestamp::GetTimeNs

uint64_t GetTimeNs() const override

Get the time in nanoseconds.

mdf::UtcTimestamp::GetTimezoneMin

int16_t GetTimezoneMin() const override

Get the timezone offset in minutes.

mdf::UtcTimestamp::GetDstMin

int16_t GetDstMin() const override

Get the daylight saving time offset in minutes.

mdf

Main namespace for the MDF library.

Definition canmessage.h:17


Generated by 1.12.0