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
10namespace net {
11
12// Wrapper for an HTTP (major,minor) version pair.
13class 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_
59