19namespace localization {
23template <
class T,
size_t N>
44static constexpr int32_t LEAP_SECONDS[][2] = {
64 for (
size_t i = 0; i <
ArraySize(LEAP_SECONDS); ++i) {
65 if (unix_seconds >= LEAP_SECONDS[i][0]) {
69 return static_cast<T
>(0);
84 for (
size_t i = 0; i <
ArraySize(LEAP_SECONDS); ++i) {
85 T result = gps_seconds + (
UNIX_GPS_DIFF - LEAP_SECONDS[i][1]);
86 if (result >= LEAP_SECONDS[i][0]) {
90 return static_cast<T
>(0);
constexpr int64_t ONE_BILLION
constexpr int32_t UNIX_GPS_DIFF
T UnixToGpsSeconds(T unix_seconds)
int64_t GpsToUnixNanoSeconds(int64_t gps_nanoseconds)
int64_t GpsToUnixMicroSeconds(int64_t gps_microseconds)
int64_t UnixToGpsNanoSeconds(int64_t unix_nanoseconds)
constexpr int64_t ONE_MILLION
int64_t UnixToGpsMicroSeconds(int64_t unix_microseconds)
constexpr size_t ArraySize(T(&)[N])
T GpsToUnixSeconds(T gps_seconds)