84 static errc_t load(
StringView filepath, std::vector<Entry>& data);
87 size_t size()
const {
return m_data.size(); }
92 const Entry* getEntry(
int mjd)
const;
99 errc_t setEntry(
int mjd,
const Entry& entry);
109 double getUT1MinusUTC(
const TimePoint& tp)
const;
115 double getUT1MinusUTC_UTC(
const JulianDate& jdUTC)
const;
121 double getUT1MinusUTC_UTCMJD(
double mjdUTC)
const;
133 void getPoleMotion(
const TimePoint& tp,
double& x,
double& y)
const;
139 void getPoleMotionUTC(
const JulianDate& jdUTC,
double& x,
double& y)
const;
146 void getPoleMotionUTCMJD(
double mjdUTC,
double& x,
double& y)
const;
157 double getLOD(
const TimePoint& tp)
const;
163 double getLOD_UTC(
const JulianDate& jdUTC)
const;
169 double getLOD_UTCMJD(
double mjdUTC)
const;
180 void getXYCorrection(
const TimePoint& tp, array2d& xyCorrection)
const;
186 void getXYCorrectionUTC(
const JulianDate& jdUTC, array2d& xyCorrection)
const;
192 void getXYCorrectionUTCMJD(
double mjdUTC, array2d& xyCorrection)
const;
200 template<
double Entry::* Member>
201 A_ALWAYS_INLINE
double getValue(
size_t index,
double frac)
const
203 return m_data[index].*Member + frac * (m_data[index+1].*Member - m_data[index].*Member);
211 void findEntryIndex(
double mjdUTC,
int& index,
double& frac)
const;
213 std::vector<Entry> m_data;