version.h revision c7f5f8508d98d5952d42ed7648c2a8f30a4da156
1// Copyright (c) 2009 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 BASE_VERSION_H_
6#define BASE_VERSION_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12
13class Version {
14 public:
15  // The version string must be made up of 1 or more uint16's separated
16  // by '.'. Returns NULL if string is not in this format.
17  // Caller is responsible for freeing the Version object once done.
18  static Version* GetVersionFromString(const std::wstring& version_str);
19  static Version* GetVersionFromString(const std::string& version_str);
20
21  ~Version() {}
22
23  bool Equals(const Version& other) const;
24
25  // Returns -1, 0, 1 for <, ==, >.
26  int CompareTo(const Version& other) const;
27
28  // Return the string representation of this version.
29  const std::string GetString() const;
30
31  const std::vector<uint16>& components() const { return components_; }
32
33 private:
34  Version() {}
35  bool InitFromString(const std::string& version_str);
36
37  std::vector<uint16> components_;
38};
39
40#endif  // BASE_VERSION_H_
41