Commit ea78ded7 by Abseil Team Committed by Copybara-Service

Automated rollback of commit f2463433.

PiperOrigin-RevId: 451979149
Change-Id: Ic9b02306f2c5324b6648989a895f128c9eb5743d
parent f2463433
...@@ -750,24 +750,23 @@ constexpr Time UnixEpoch() { return Time(); } ...@@ -750,24 +750,23 @@ constexpr Time UnixEpoch() { return Time(); }
constexpr Time UniversalEpoch() { constexpr Time UniversalEpoch() {
// 719162 is the number of days from 0001-01-01 to 1970-01-01, // 719162 is the number of days from 0001-01-01 to 1970-01-01,
// assuming the Gregorian calendar. // assuming the Gregorian calendar.
return Time( return Time(time_internal::MakeDuration(-24 * 719162 * int64_t{3600}, 0U));
time_internal::MakeDuration(-24 * 719162 * int64_t{3600}, uint32_t{0}));
} }
// InfiniteFuture() // InfiniteFuture()
// //
// Returns an `absl::Time` that is infinitely far in the future. // Returns an `absl::Time` that is infinitely far in the future.
constexpr Time InfiniteFuture() { constexpr Time InfiniteFuture() {
return Time(time_internal::MakeDuration((std::numeric_limits<int64_t>::max)(), return Time(
~uint32_t{0})); time_internal::MakeDuration((std::numeric_limits<int64_t>::max)(), ~0U));
} }
// InfinitePast() // InfinitePast()
// //
// Returns an `absl::Time` that is infinitely far in the past. // Returns an `absl::Time` that is infinitely far in the past.
constexpr Time InfinitePast() { constexpr Time InfinitePast() {
return Time(time_internal::MakeDuration((std::numeric_limits<int64_t>::min)(), return Time(
~uint32_t{0})); time_internal::MakeDuration((std::numeric_limits<int64_t>::min)(), ~0U));
} }
// FromUnixNanos() // FromUnixNanos()
...@@ -1423,17 +1422,14 @@ constexpr int64_t GetRepHi(Duration d) { return d.rep_hi_; } ...@@ -1423,17 +1422,14 @@ constexpr int64_t GetRepHi(Duration d) { return d.rep_hi_; }
constexpr uint32_t GetRepLo(Duration d) { return d.rep_lo_; } constexpr uint32_t GetRepLo(Duration d) { return d.rep_lo_; }
// Returns true iff d is positive or negative infinity. // Returns true iff d is positive or negative infinity.
constexpr bool IsInfiniteDuration(Duration d) { constexpr bool IsInfiniteDuration(Duration d) { return GetRepLo(d) == ~0U; }
return GetRepLo(d) == ~uint32_t{0};
}
// Returns an infinite Duration with the opposite sign. // Returns an infinite Duration with the opposite sign.
// REQUIRES: IsInfiniteDuration(d) // REQUIRES: IsInfiniteDuration(d)
constexpr Duration OppositeInfinity(Duration d) { constexpr Duration OppositeInfinity(Duration d) {
return GetRepHi(d) < 0 return GetRepHi(d) < 0
? MakeDuration((std::numeric_limits<int64_t>::max)(), ~uint32_t{0}) ? MakeDuration((std::numeric_limits<int64_t>::max)(), ~0U)
: MakeDuration((std::numeric_limits<int64_t>::min)(), : MakeDuration((std::numeric_limits<int64_t>::min)(), ~0U);
~uint32_t{0});
} }
// Returns (-n)-1 (equivalently -(n+1)) without avoidable overflow. // Returns (-n)-1 (equivalently -(n+1)) without avoidable overflow.
...@@ -1572,7 +1568,7 @@ constexpr Duration operator-(Duration d) { ...@@ -1572,7 +1568,7 @@ constexpr Duration operator-(Duration d) {
constexpr Duration InfiniteDuration() { constexpr Duration InfiniteDuration() {
return time_internal::MakeDuration((std::numeric_limits<int64_t>::max)(), return time_internal::MakeDuration((std::numeric_limits<int64_t>::max)(),
~uint32_t{0}); ~0U);
} }
constexpr Duration FromChrono(const std::chrono::nanoseconds& d) { constexpr Duration FromChrono(const std::chrono::nanoseconds& d) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment