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_;