Replace some trivial comparisons with C++20 default comparisons PiperOrigin-RevId: 814710997
diff --git a/quiche/quic/core/congestion_control/send_algorithm_interface.h b/quiche/quic/core/congestion_control/send_algorithm_interface.h index 568d72a..91ac898 100644 --- a/quiche/quic/core/congestion_control/send_algorithm_interface.h +++ b/quiche/quic/core/congestion_control/send_algorithm_interface.h
@@ -40,13 +40,7 @@ rtt(rtt), allow_cwnd_to_decrease(allow_cwnd_to_decrease) {} - bool operator==(const NetworkParams& other) const { - return bandwidth == other.bandwidth && rtt == other.rtt && - max_initial_congestion_window == - other.max_initial_congestion_window && - allow_cwnd_to_decrease == other.allow_cwnd_to_decrease && - is_rtt_trusted == other.is_rtt_trusted; - } + bool operator==(const NetworkParams& other) const = default; QuicBandwidth bandwidth = QuicBandwidth::Zero(); QuicTime::Delta rtt = QuicTime::Delta::Zero();
diff --git a/quiche/quic/core/quic_time.cc b/quiche/quic/core/quic_time.cc index afbca5b..655ac6d 100644 --- a/quiche/quic/core/quic_time.cc +++ b/quiche/quic/core/quic_time.cc
@@ -4,7 +4,7 @@ #include "quiche/quic/core/quic_time.h" -#include <cinttypes> +#include <cstdint> #include <cstdlib> #include <limits> #include <string>
diff --git a/quiche/quic/core/quic_time.h b/quiche/quic/core/quic_time.h index db913d5..b6d6e89 100644 --- a/quiche/quic/core/quic_time.h +++ b/quiche/quic/core/quic_time.h
@@ -6,6 +6,7 @@ #define QUICHE_QUIC_CORE_QUIC_TIME_H_ #include <cmath> +#include <compare> #include <cstddef> #include <cstdint> #include <limits> @@ -13,8 +14,9 @@ #include <ostream> #include <string> +#include "absl/base/optimization.h" #include "absl/time/time.h" -#include "quiche/quic/platform/api/quic_export.h" +#include "quiche/common/platform/api/quiche_export.h" namespace quic { @@ -97,9 +99,11 @@ sink.Append(delta.ToDebuggingValue()); } + std::strong_ordering operator<=>(const QuicTimeDelta& other) const = default; + private: - friend inline bool operator==(QuicTimeDelta lhs, QuicTimeDelta rhs); - friend inline bool operator<(QuicTimeDelta lhs, QuicTimeDelta rhs); + friend class QuicTime; + friend inline QuicTimeDelta operator<<(QuicTimeDelta lhs, size_t rhs); friend inline QuicTimeDelta operator>>(QuicTimeDelta lhs, size_t rhs); @@ -121,8 +125,8 @@ explicit constexpr QuicTimeDelta(int64_t time_offset) : time_offset_(time_offset) {} + // IMPORTANT: The defaulted comparisons automatically use all data members. int64_t time_offset_; - friend class QuicTime; }; // A microsecond precision timestamp returned by a QuicClock. It is @@ -157,17 +161,18 @@ bool IsInitialized() const { return 0 != time_; } + std::strong_ordering operator<=>(const QuicTime& other) const = default; + private: friend class QuicClock; - friend inline bool operator==(QuicTime lhs, QuicTime rhs); - friend inline bool operator<(QuicTime lhs, QuicTime rhs); friend inline QuicTime operator+(QuicTime lhs, QuicTimeDelta rhs); friend inline QuicTime operator-(QuicTime lhs, QuicTimeDelta rhs); friend inline QuicTimeDelta operator-(QuicTime lhs, QuicTime rhs); explicit constexpr QuicTime(int64_t time) : time_(time) {} + // IMPORTANT: The defaulted comparisons automatically use all data members. int64_t time_; }; @@ -213,9 +218,7 @@ // minus |delta|. [[nodiscard]] QuicWallTime Subtract(QuicTimeDelta delta) const; - bool operator==(const QuicWallTime& other) const { - return microseconds_ == other.microseconds_; - } + bool operator==(const QuicWallTime& other) const = default; QuicTimeDelta operator-(const QuicWallTime& rhs) const { return QuicTimeDelta::FromMicroseconds(microseconds_ - rhs.microseconds_); @@ -225,28 +228,11 @@ explicit constexpr QuicWallTime(uint64_t microseconds) : microseconds_(microseconds) {} + // IMPORTANT: The defaulted comparisons automatically use all data members. uint64_t microseconds_; }; // Non-member relational operators for QuicTimeDelta. -inline bool operator==(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return lhs.time_offset_ == rhs.time_offset_; -} -inline bool operator!=(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return !(lhs == rhs); -} -inline bool operator<(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return lhs.time_offset_ < rhs.time_offset_; -} -inline bool operator>(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return rhs < lhs; -} -inline bool operator<=(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return !(rhs < lhs); -} -inline bool operator>=(QuicTimeDelta lhs, QuicTimeDelta rhs) { - return !(lhs < rhs); -} inline QuicTimeDelta operator<<(QuicTimeDelta lhs, size_t rhs) { return QuicTimeDelta(lhs.time_offset_ << rhs); } @@ -254,17 +240,6 @@ return QuicTimeDelta(lhs.time_offset_ >> rhs); } -// Non-member relational operators for QuicTime. -inline bool operator==(QuicTime lhs, QuicTime rhs) { - return lhs.time_ == rhs.time_; -} -inline bool operator!=(QuicTime lhs, QuicTime rhs) { return !(lhs == rhs); } -inline bool operator<(QuicTime lhs, QuicTime rhs) { - return lhs.time_ < rhs.time_; -} -inline bool operator>(QuicTime lhs, QuicTime rhs) { return rhs < lhs; } -inline bool operator<=(QuicTime lhs, QuicTime rhs) { return !(rhs < lhs); } -inline bool operator>=(QuicTime lhs, QuicTime rhs) { return !(lhs < rhs); } // Override stream output operator for gtest or QUICHE_CHECK macros. inline std::ostream& operator<<(std::ostream& output, const QuicTime t) {
diff --git a/quiche/quic/core/quic_time_accumulator_test.cc b/quiche/quic/core/quic_time_accumulator_test.cc index fd56df4..a7ee727 100644 --- a/quiche/quic/core/quic_time_accumulator_test.cc +++ b/quiche/quic/core/quic_time_accumulator_test.cc
@@ -4,6 +4,7 @@ #include "quiche/quic/core/quic_time_accumulator.h" +#include "quiche/quic/core/quic_time.h" #include "quiche/quic/platform/api/quic_test.h" #include "quiche/quic/test_tools/mock_clock.h"
diff --git a/quiche/quic/test_tools/quic_test_utils.h b/quiche/quic/test_tools/quic_test_utils.h index ad85c1c..67bd5d4 100644 --- a/quiche/quic/test_tools/quic_test_utils.h +++ b/quiche/quic/test_tools/quic_test_utils.h
@@ -2145,19 +2145,17 @@ class SavingHttp3DatagramVisitor : public QuicSpdyStream::Http3DatagramVisitor { public: struct SavedHttp3Datagram { + bool operator==(const SavedHttp3Datagram&) const = default; + QuicStreamId stream_id; std::string payload; - bool operator==(const SavedHttp3Datagram& o) const { - return stream_id == o.stream_id && payload == o.payload; - } }; struct SavedUnknownCapsule { + bool operator==(const SavedUnknownCapsule&) const = default; + QuicStreamId stream_id; uint64_t type; std::string payload; - bool operator==(const SavedUnknownCapsule& o) const { - return stream_id == o.stream_id && type == o.type && payload == o.payload; - } }; const std::vector<SavedHttp3Datagram>& received_h3_datagrams() const { return received_h3_datagrams_;