- add sources.
[platform/framework/web/crosswalk.git] / src / net / http / http_version.h
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).
16   HttpVersion() : value_(0) { }
17
18   // Build from unsigned major/minor pair.
19   HttpVersion(uint16 major, uint16 minor) : value_(major << 16 | minor) { }
20
21   // Major version number.
22   uint16 major_value() const {
23     return value_ >> 16;
24   }
25
26   // Minor version number.
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_