TimeRange.h
Go to the documentation of this file.
1 #ifndef _utl_TimeRange_h_
2 #define _utl_TimeRange_h_
3 
4 #include <utl/TimeStamp.h>
5 #include <utl/TimeInterval.h>
6 
7 
8 namespace utl {
9 
23  class TimeRange {
24 
25  public:
26  TimeRange() { }
27  TimeRange(const TimeStamp& start, const TimeStamp& stop)
28  { SetSorted(start, stop); }
29  TimeRange(const TimeStamp& start, const TimeInterval& duration)
30  { SetSorted(start, start + duration); }
31 
33  { return fStopTime - fStartTime; }
34 
35  const TimeStamp& GetStartTime() const { return fStartTime; }
36  const TimeStamp& GetStopTime() const { return fStopTime; }
37 
39  void SetTimeRange(const TimeStamp& start, const TimeStamp& stop)
40  { SetSorted(start, stop); }
41  void SetTimeRange(const TimeStamp& start, const TimeInterval& duration)
42  { fStartTime = start; fStopTime = start + duration; }
43 
44  bool operator==(const TimeRange& tr) const
45  { return fStartTime == tr.fStartTime && fStopTime == tr.fStopTime; }
46 
47  bool operator!=(const TimeRange& tr) const
48  { return !operator==(tr); }
49 
50  bool operator<(const TimeRange& tr) const
51  { return fStartTime < tr.fStartTime; }
52 
53  bool operator>(const TimeRange& tr) const
54  { return fStopTime > tr.fStopTime; }
55 
57  bool IsInRange(const TimeStamp& ts) const
58  { return fStartTime <= ts && ts < fStopTime; }
59 
60  bool IsInRangeInclusive(const TimeStamp& ts) const
61  { return fStartTime <= ts && ts <= fStopTime; }
62 
63  bool operator==(const TimeStamp& ts) const
64  { return IsInRange(ts); }
65 
66  bool operator!=(const TimeStamp& ts) const
67  { return !operator==(ts); }
68 
69  bool operator<(const TimeStamp& ts) const
70  { return fStopTime < ts; }
71 
72  bool operator>(const TimeStamp& ts) const
73  { return fStartTime > ts; }
74 
75  bool HasCommonTime(const TimeRange& tr) const
76  { return tr.fStopTime >= fStartTime && tr.fStartTime <= fStopTime; }
77 
78  private:
79  void
80  SetSorted(const TimeStamp& start, const TimeStamp& stop)
81  {
82  if (start < stop) {
83  fStartTime = start;
84  fStopTime = stop;
85  } else {
86  fStartTime = stop;
87  fStopTime = start;
88  }
89  }
90 
93 
94  };
95 
96 
97  inline bool operator==(const TimeStamp& ts, const TimeRange& tr)
98  { return tr == ts; }
99 
100  inline bool operator!=(const TimeStamp& ts, const TimeRange& tr)
101  { return tr != ts; }
102 
103  inline bool operator<(const TimeStamp& ts, const TimeRange& tr)
104  { return tr < ts; }
105 
106  inline bool operator>(const TimeStamp& ts, const TimeRange& tr)
107  { return tr > ts; }
108 
109 }
110 
111 
112 #endif
113 
114 // Configure (x)emacs for this file ...
115 // Local Variables:
116 // mode: c++
117 // compile-command: "make -C .. -k"
118 // End:
bool operator==(const TimeStamp &ts) const
Definition: TimeRange.h:63
void SetSorted(const TimeStamp &start, const TimeStamp &stop)
Definition: TimeRange.h:80
bool operator<(const TimeRange &tr) const
Definition: TimeRange.h:50
Time interval defined by two TimeStamps.
Definition: TimeRange.h:23
bool operator>(const TimeStamp &ts) const
Definition: TimeRange.h:72
bool operator>(const TimeStamp &ts, const TimeRange &tr)
Definition: TimeRange.h:106
bool IsInRange(const TimeStamp &ts) const
this works also with operator==()
Definition: TimeRange.h:57
const TimeStamp & GetStopTime() const
Definition: TimeRange.h:36
TimeRange(const TimeStamp &start, const TimeInterval &duration)
Definition: TimeRange.h:29
TimeInterval GetDuration() const
Definition: TimeRange.h:32
bool operator!=(const TimeStamp &ts) const
Definition: TimeRange.h:66
A TimeStamp holds GPS second and nanosecond for some event.
Definition: TimeStamp.h:110
bool operator==(const TimeRange &tr) const
Definition: TimeRange.h:44
void SetTimeRange(const TimeStamp &start, const TimeStamp &stop)
Set time range.
Definition: TimeRange.h:39
TimeRange(const TimeStamp &start, const TimeStamp &stop)
Definition: TimeRange.h:27
void SetTimeRange(const TimeStamp &start, const TimeInterval &duration)
Definition: TimeRange.h:41
bool operator<(const TimeStamp &ts) const
Definition: TimeRange.h:69
bool operator==(const TimeStamp &ts, const TimeRange &tr)
Definition: TimeRange.h:97
bool operator!=(const TimeRange &tr) const
Definition: TimeRange.h:47
bool IsInRangeInclusive(const TimeStamp &ts) const
Definition: TimeRange.h:60
const TimeStamp & GetStartTime() const
Definition: TimeRange.h:35
TimeStamp fStopTime
Definition: TimeRange.h:92
A TimeInterval is used to represent time elapsed between two events.
Definition: TimeInterval.h:43
bool operator>(const TimeRange &tr) const
Definition: TimeRange.h:53
TimeStamp fStartTime
Definition: TimeRange.h:91
bool HasCommonTime(const TimeRange &tr) const
Definition: TimeRange.h:75
bool operator!=(const TimeStamp &ts, const TimeRange &tr)
Definition: TimeRange.h:100
bool operator<(const TimeStamp &ts, const TimeRange &tr)
Definition: TimeRange.h:103

, generated on Tue Sep 26 2023.