46AST_CORE_CAPI errc_t
aTimeIntervalFormat(
const TimeInterval& interval, std::string& strStart, std::string& strEnd);
53AST_CORE_CAPI errc_t
aTimeIntervalParse(StringView strStart, StringView strEnd, TimeInterval& interval);
68 this->setStartStop(start, stop);
77 this->setStartStop(epoch, start, stop);
116 start_ = -std::numeric_limits<double>::infinity();
117 stop_ = +std::numeric_limits<double>::infinity();
126 std::string strStart, strEnd;
128 return strStart +
" - " + strEnd;
137 errc_t discrete(
const TimePoint& epoch,
double step, std::vector<double>& times)
const;
144 errc_t discrete(
double step, std::vector<TimePoint>& times)
const;
146 class DiscreteTimePointRange;
147 class DiscreteEpochSecondRange;
152 DiscreteTimePointRange discrete(
double step)
const;
158 DiscreteEpochSecondRange discrete(
const TimePoint& epoch,
double step)
const;
171 : interval_(interval), step_(step), n_(n) {}
175 using iterator_category = std::input_iterator_tag;
177 using difference_type = ptrdiff_t;
183 : range_(range), idx_(idx) {}
186 if (idx_ == range_->n_ - 1) {
187 value_ = range_->interval_.stop();
189 value_ = range_->interval_.start() + range_->step_ * idx_;
194 iterator& operator++() { ++idx_;
return *
this; }
195 iterator operator++(
int) {
auto tmp = *
this; ++*
this;
return tmp; }
197 bool operator==(
const iterator& other)
const {
return idx_ == other.idx_; }
198 bool operator!=(
const iterator& other)
const {
return !(*
this == other); }
207 iterator end()
const {
return iterator(
this, n_); }
208 size_t size()
const {
return n_; }
211 TimeInterval interval_;
220 : offset_(offset), step_(step), stopOffset_(stopOffset), n_(n) {}
224 using iterator_category = std::input_iterator_tag;
225 using value_type = double;
226 using difference_type = ptrdiff_t;
227 using pointer =
const double*;
228 using reference =
const double&;
232 : range_(range), idx_(idx) {}
234 reference operator*()
const {
235 if (idx_ == range_->n_ - 1) {
236 value_ = range_->stopOffset_;
238 value_ = range_->offset_ + range_->step_ * idx_;
243 iterator& operator++() { ++idx_;
return *
this; }
244 iterator operator++(
int) {
auto tmp = *
this; ++*
this;
return tmp; }
246 bool operator==(
const iterator& other)
const {
return idx_ == other.idx_; }
247 bool operator!=(
const iterator& other)
const {
return !(*
this == other); }
252 mutable double value_;
256 iterator end()
const {
return iterator(
this, n_); }
257 size_t size()
const {
return n_; }
268 double dur = duration();
269 if (step <= 0.0 || dur <= 0.0) {
272 size_t n =
static_cast<size_t>(std::ceil(dur / step));
278 double dur = duration();
279 if (step <= 0.0 || dur <= 0.0) {
282 size_t n =
static_cast<size_t>(std::ceil(dur / step));
283 double offset = getStart() - epoch;
284 double stopOffset = getStop() - epoch;
离散化历元秒范围
定义 TimeInterval.hpp:217
离散化时间点范围
定义 TimeInterval.hpp:168
时间区间
定义 TimeInterval.hpp:59
void setInfinite()
设置时间区间为无限时间区间
定义 TimeInterval.hpp:113
double stop_
相对结束时间(s)
定义 TimeInterval.hpp:163
TimePoint getStop() const
时间区间的结束时间点
定义 TimeInterval.hpp:90
double duration() const
时间区间的持续时间(秒)
定义 TimeInterval.hpp:121
TimeInterval(const TimePoint &epoch, double start, double stop)
构造函数
定义 TimeInterval.hpp:75
const TimePoint & getStart() const
时间区间的开始时间点
定义 TimeInterval.hpp:84
int64_t epoch_
时间区间的基准时间点(秒,从J2000.0 TAI 开始)
定义 TimeInterval.hpp:161
void setStartStop(const TimePoint &epoch, double start, double stop)
设置时间区间的开始时间点和结束时间点
定义 TimeInterval.hpp:106
const TimePoint & start() const
时间区间的开始时间点
定义 TimeInterval.hpp:81
std::string toString() const
将时间区间转换为字符串
定义 TimeInterval.hpp:125
double start_
相对开始时间(s)
定义 TimeInterval.hpp:162
TimePoint stop() const
时间区间的结束时间点
定义 TimeInterval.hpp:87
TimeInterval(const TimePoint &start, const TimePoint &stop)
构造函数
定义 TimeInterval.hpp:67
void setStartStop(const TimePoint &start, const TimePoint &stop)
设置时间区间的开始时间点和结束时间点
定义 TimeInterval.hpp:96
绝对时间点
定义 TimePoint.hpp:106
double fractionalPart() const
时间点的小数秒数部分
定义 TimePoint.hpp:163
int64_t integerPart() const
时间点的整数秒数部分
定义 TimePoint.hpp:160
errc_t aTimeIntervalFormat(const TimeInterval &interval, std::string &strStart, std::string &strStop)
将时间区间格式化为字符串
定义 TimeInterval.cpp:26
errc_t aTimeIntervalParse(StringView strStart, StringView strStop, TimeInterval &interval)
从字符串解析时间区间
定义 TimeInterval.cpp:36