• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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