Modernize net::HttpVersion
Use constexpr in HttpVersion. This doesn't change the generated code but looks nicer. HttpVersion was implicitly copyable and assignable, but make it explicit. Since it is copyable, make it final. No functional change. Change-Id: I044928fc9f4c3026e41b789adf3c3ea548f80a91 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4840367 Reviewed-by: Kenichi Ishibashi <bashi@chromium.org> Commit-Queue: Adam Rice <ricea@chromium.org> Cr-Commit-Position: refs/heads/main@{#1203112}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
b0ecf92b80
commit
e924a80b82
@ -10,39 +10,44 @@
|
||||
namespace net {
|
||||
|
||||
// Wrapper for an HTTP (major,minor) version pair.
|
||||
class HttpVersion {
|
||||
// This type is final as the type is copy-constructable and assignable and so
|
||||
// there is a risk of slicing if it was subclassed.
|
||||
class HttpVersion final {
|
||||
public:
|
||||
// Default constructor (major=0, minor=0).
|
||||
HttpVersion() : value_(0) { }
|
||||
constexpr HttpVersion() : value_(0) {}
|
||||
|
||||
// Build from unsigned major/minor pair.
|
||||
HttpVersion(uint16_t major, uint16_t minor)
|
||||
constexpr HttpVersion(uint16_t major, uint16_t minor)
|
||||
: value_(static_cast<uint32_t>(major << 16) | minor) {}
|
||||
|
||||
constexpr HttpVersion(const HttpVersion& rhs) = default;
|
||||
constexpr HttpVersion& operator=(const HttpVersion& rhs) = default;
|
||||
|
||||
// Major version number.
|
||||
uint16_t major_value() const { return value_ >> 16; }
|
||||
constexpr uint16_t major_value() const { return value_ >> 16; }
|
||||
|
||||
// Minor version number.
|
||||
uint16_t minor_value() const { return value_ & 0xffff; }
|
||||
constexpr uint16_t minor_value() const { return value_ & 0xffff; }
|
||||
|
||||
// Overloaded operators:
|
||||
|
||||
bool operator==(const HttpVersion& v) const {
|
||||
constexpr bool operator==(const HttpVersion& v) const {
|
||||
return value_ == v.value_;
|
||||
}
|
||||
bool operator!=(const HttpVersion& v) const {
|
||||
constexpr bool operator!=(const HttpVersion& v) const {
|
||||
return value_ != v.value_;
|
||||
}
|
||||
bool operator>(const HttpVersion& v) const {
|
||||
constexpr bool operator>(const HttpVersion& v) const {
|
||||
return value_ > v.value_;
|
||||
}
|
||||
bool operator>=(const HttpVersion& v) const {
|
||||
constexpr bool operator>=(const HttpVersion& v) const {
|
||||
return value_ >= v.value_;
|
||||
}
|
||||
bool operator<(const HttpVersion& v) const {
|
||||
constexpr bool operator<(const HttpVersion& v) const {
|
||||
return value_ < v.value_;
|
||||
}
|
||||
bool operator<=(const HttpVersion& v) const {
|
||||
constexpr bool operator<=(const HttpVersion& v) const {
|
||||
return value_ <= v.value_;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user