1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_HTTP_HTTP_VERSION_H_ 6 #define NET_HTTP_HTTP_VERSION_H_ 7 8 #include "base/basictypes.h" 9 10 namespace net { 11 12 // Wrapper for an HTTP (major,minor) version pair. 13 class HttpVersion { 14 public: 15 // Default constructor (major=0, minor=0). HttpVersion()16 HttpVersion() : value_(0) { } 17 18 // Build from unsigned major/minor pair. HttpVersion(uint16 major,uint16 minor)19 HttpVersion(uint16 major, uint16 minor) : value_(major << 16 | minor) { } 20 21 // Major version number. major_value()22 uint16 major_value() const { 23 return value_ >> 16; 24 } 25 26 // Minor version number. minor_value()27 uint16 minor_value() const { 28 return value_ & 0xffff; 29 } 30 31 // Overloaded operators: 32 33 bool operator==(const HttpVersion& v) const { 34 return value_ == v.value_; 35 } 36 bool operator!=(const HttpVersion& v) const { 37 return value_ != v.value_; 38 } 39 bool operator>(const HttpVersion& v) const { 40 return value_ > v.value_; 41 } 42 bool operator>=(const HttpVersion& v) const { 43 return value_ >= v.value_; 44 } 45 bool operator<(const HttpVersion& v) const { 46 return value_ < v.value_; 47 } 48 bool operator<=(const HttpVersion& v) const { 49 return value_ <= v.value_; 50 } 51 52 private: 53 uint32 value_; // Packed as <major>:<minor> 54 }; 55 56 } // namespace net 57 58 #endif // NET_HTTP_HTTP_VERSION_H_ 59