๐Ÿ›ฐ๏ธ่ˆชๅคฉไปฟ็œŸ็ฎ—ๆณ•ๅบ“ SpaceAST 0.0.1
่ฝฝๅ…ฅไธญ...
ๆœ็ดขไธญ...
ๆœชๆ‰พๅˆฐ
TimeIntervalList.hpp
ๆต่งˆ่ฏฅๆ–‡ไปถ็š„ๆ–‡ๆกฃ.
1
21
22#pragma once
23
24#include "AstGlobal.h"
25#include "TimePoint.hpp"
26#include "IntervalList.hpp"
27#include "TimeInterval.hpp"
28#include "TimeList.hpp"
29#include <vector>
30
31AST_NAMESPACE_BEGIN
32
33
58{
59public:
60
61 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
62 // ๅทฅๅŽ‚ๆ–นๆณ•
63 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
64
70 AST_CORE_API
71 static TimeIntervalList FromTimeIntervals(const std::vector<TimeInterval>& intervals);
72
77 AST_CORE_API
78 static TimeIntervalList FromTimeIntervals(const std::vector<TimeInterval>& intervals, const TimePoint& epoch);
79
84 AST_CORE_API
85 static TimeIntervalList FromIntervals(const std::vector<Interval>& intervals, const TimePoint& epoch);
86
91 AST_CORE_API
92 static TimeIntervalList FromIntervalList(const IntervalList& list, const TimePoint& epoch);
93
94public:
95
96 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
97 // ๆž„้€ ไธŽ็”Ÿๅ‘ฝๅ‘จๆœŸ
98 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
99
101 TimeIntervalList() = default;
102
104 ~TimeIntervalList() = default;
105
108
111
113 TimeIntervalList(TimeIntervalList&&) noexcept = default;
114
116 TimeIntervalList& operator=(TimeIntervalList&&) noexcept = default;
117
121 : epoch_(epoch) {}
122
123 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
124 // ๅฎน้‡
125 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
126
128 size_t size() const noexcept { return intervals_.size(); }
129
131 bool empty() const noexcept { return intervals_.empty(); }
132
134 void reserve(size_t n) { intervals_.reserve(n); }
135
137 void clear() { intervals_.clear(); }
138
139 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
140 // ๅ…ƒ็ด ่ฎฟ้—ฎ
141 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
142
146 AST_CORE_API
147 TimeInterval operator[](size_t i) const;
148
153 AST_CORE_API
154 TimeInterval at(size_t i) const;
155
156 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
157 // ไฟฎๆ”น
158 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
159
162 AST_CORE_API
163 void push_back(const TimeInterval& ti);
164
168 AST_CORE_API
169 void push_back(const TimePoint& start, const TimePoint& stop);
170
173 void pop_back() { intervals_.pop_back(); }
174
175 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
176 // ๅކๅ…ƒ
177 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
178
180 const TimePoint& epoch() const noexcept { return epoch_; }
181
185 void setEpoch(const TimePoint& epoch) { epoch_ = epoch; }
186
187 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
188 // ๅบ•ๅฑ‚ๅฎนๅ™จ่ฎฟ้—ฎ
189 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
190
193 IntervalList& intervals() noexcept { return intervals_; }
194
196 const IntervalList& intervals() const noexcept { return intervals_; }
197
198 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
199 // ๆŸฅ่ฏข
200 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
201
203 double totalDuration() const { return intervals_.totalDuration(); }
204
208 AST_CORE_API
209 bool contains(const TimePoint& t) const;
210
211 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
212 // ้›†ๅˆ่ฟ็ฎ—
213 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
214
218 AST_CORE_API
219 TimeIntervalList merged() const;
220
225 AST_CORE_API
226 void mergeInPlace();
227
232 AST_CORE_API
233 TimeIntervalList intersect(const TimeIntervalList& other) const;
234
239 AST_CORE_API
240 TimeIntervalList unite(const TimeIntervalList& other) const;
241
246 AST_CORE_API
247 TimeIntervalList subtract(const TimeIntervalList& other) const;
248
249 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
250 // ่ฝฌๆข
251 // โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”
252
255 IntervalList toIntervalList() const { return intervals_; }
256
263 TimeList discrete(double step) const { return intervals_.discrete(epoch_, step); }
264
272 TimeList discrete(const TimePoint& epoch, double step) const { return intervals_.discrete(epoch, step); }
273
274private:
275 TimePoint epoch_{};
276 IntervalList intervals_;
277};
278
279
283AST_NAMESPACE_END
็›ธๅฏนๆ—ถๆฎตๅˆ—่กจ
ๆ—ถ้—ด็‚นๅˆ—่กจ
็ปๅฏนๆ—ถ้—ด็‚น
็›ธๅฏนๆ—ถๆฎตๅˆ—่กจ
ๅฎšไน‰ IntervalList.hpp:58
็ปๅฏนๆ—ถๆฎตๅˆ—่กจ
ๅฎšไน‰ TimeIntervalList.hpp:58
IntervalList toIntervalList() const
่ฝฌๆขไธบ็›ธๅฏนๅŒบ้—ดๅˆ—่กจ
ๅฎšไน‰ TimeIntervalList.hpp:255
TimeList discrete(const TimePoint &epoch, double step) const
็ฆปๆ•ฃๅŒ–๏ผˆๆŒ‡ๅฎšๅކๅ…ƒ๏ผ‰
ๅฎšไน‰ TimeIntervalList.hpp:272
TimeIntervalList(TimeIntervalList &&) noexcept=default
็งปๅŠจๆž„้€ 
TimeIntervalList & operator=(const TimeIntervalList &)=default
ๆ‹ท่ด่ต‹ๅ€ผ
void reserve(size_t n)
้ข„็•™ๅฎน้‡
ๅฎšไน‰ TimeIntervalList.hpp:134
void clear()
ๆธ…็ฉบๅˆ—่กจ
ๅฎšไน‰ TimeIntervalList.hpp:137
IntervalList & intervals() noexcept
่Žทๅ–ๅบ•ๅฑ‚็›ธๅฏนๅŒบ้—ดๅˆ—่กจ๏ผˆๅฏไฟฎๆ”น๏ผ‰
ๅฎšไน‰ TimeIntervalList.hpp:193
void setEpoch(const TimePoint &epoch)
่ฎพ็ฝฎๅ‚่€ƒๅކๅ…ƒ
ๅฎšไน‰ TimeIntervalList.hpp:185
const TimePoint & epoch() const noexcept
่Žทๅ–ๅ‚่€ƒๅކๅ…ƒ
ๅฎšไน‰ TimeIntervalList.hpp:180
size_t size() const noexcept
่ฟ”ๅ›žๅŒบ้—ดๆ•ฐ้‡
ๅฎšไน‰ TimeIntervalList.hpp:128
TimeIntervalList(const TimeIntervalList &)=default
ๆ‹ท่ดๆž„้€ 
const IntervalList & intervals() const noexcept
่Žทๅ–ๅบ•ๅฑ‚็›ธๅฏนๅŒบ้—ดๅˆ—่กจ๏ผˆๅช่ฏป๏ผ‰
ๅฎšไน‰ TimeIntervalList.hpp:196
double totalDuration() const
ๆ€ปๆ—ถ้•ฟ๏ผˆๆ‰€ๆœ‰ๅŒบ้—ด duration ไน‹ๅ’Œ๏ผŒไธ่€ƒ่™‘้‡ๅ ๏ผ‰
ๅฎšไน‰ TimeIntervalList.hpp:203
bool empty() const noexcept
ๅˆคๆ–ญๅˆ—่กจๆ˜ฏๅฆไธบ็ฉบ
ๅฎšไน‰ TimeIntervalList.hpp:131
TimeList discrete(double step) const
็ฆปๆ•ฃๅŒ–๏ผˆไฝฟ็”จๅฝ“ๅ‰ epoch๏ผ‰
ๅฎšไน‰ TimeIntervalList.hpp:263
~TimeIntervalList()=default
ๆžๆž„ๅ‡ฝๆ•ฐ
void pop_back()
็งป้™คๆœ€ๅŽไธ€ไธชๅŒบ้—ด
ๅฎšไน‰ TimeIntervalList.hpp:173
TimeIntervalList()=default
้ป˜่ฎคๆž„้€ ๅ‡ฝๆ•ฐ๏ผˆ็ฉบๅˆ—่กจ๏ผŒ้ป˜่ฎค epoch๏ผ‰
ๆ—ถ้—ดๅŒบ้—ด
ๅฎšไน‰ TimeInterval.hpp:60
ๆ—ถ้—ด็‚นๅˆ—่กจ
ๅฎšไน‰ TimeList.hpp:49
็ปๅฏนๆ—ถ้—ด็‚น
ๅฎšไน‰ TimePoint.hpp:107