blob: e03b01a5263487420b7370a221f23d5b3d6c03a7 [file] [log] [blame]
[email protected]a502bbe72011-01-07 18:06:451// Copyright (c) 2011 The Chromium Authors. All rights reserved.
[email protected]19b8d82f2009-01-29 19:18:572// 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_
[email protected]32b76ef2010-07-26 23:08:247#pragma once
[email protected]19b8d82f2009-01-29 19:18:578
9#include <string>
10#include <vector>
11
[email protected]f5661ca2011-03-24 19:00:2012#include "base/base_api.h"
[email protected]19b8d82f2009-01-29 19:18:5713#include "base/basictypes.h"
[email protected]a918f872010-06-01 14:30:5114#include "base/gtest_prod_util.h"
[email protected]19b8d82f2009-01-29 19:18:5715
[email protected]36ee0322010-12-23 21:27:1216// Version represents a dotted version number, like "1.2.3.4", supporting
17// parsing and comparison.
[email protected]f5661ca2011-03-24 19:00:2018class BASE_API Version {
[email protected]2fdc86a2010-01-26 23:08:0219 public:
[email protected]760024782011-06-07 17:21:3020 // The only thing you can legally do to a default constructed
21 // Version object is assign to it.
[email protected]26931bc2010-03-25 22:19:0422 Version();
23
[email protected]1513bf82011-06-07 17:43:2024 ~Version();
25
[email protected]760024782011-06-07 17:21:3026 // Initializes from a decimal dotted version number, like "0.1.1".
27 // Each component is limited to a uint16. Call IsValid() to learn
28 // the outcome.
29 explicit Version(const std::string& version_str);
[email protected]19b8d82f2009-01-29 19:18:5730
[email protected]760024782011-06-07 17:21:3031 // Returns true if the object contains a valid version number.
32 bool IsValid() const;
33
34 // Returns NULL if the string is not in the proper format.
[email protected]a502bbe72011-01-07 18:06:4535 // Caller is responsible for freeing the Version object once done.
[email protected]760024782011-06-07 17:21:3036 // DO NOT USE FOR NEWER CODE.
[email protected]a502bbe72011-01-07 18:06:4537 static Version* GetVersionFromString(const std::string& version_str);
38
[email protected]760024782011-06-07 17:21:3039 // Creates a copy of this version object. Caller takes ownership.
40 // DO NOT USE FOR NEWER CODE.
[email protected]b566c112010-12-21 08:27:2541 Version* Clone() const;
42
[email protected]19b8d82f2009-01-29 19:18:5743 bool Equals(const Version& other) const;
44
45 // Returns -1, 0, 1 for <, ==, >.
46 int CompareTo(const Version& other) const;
47
48 // Return the string representation of this version.
49 const std::string GetString() const;
50
51 const std::vector<uint16>& components() const { return components_; }
52
[email protected]2fdc86a2010-01-26 23:08:0253 private:
[email protected]19b8d82f2009-01-29 19:18:5754 std::vector<uint16> components_;
[email protected]19b8d82f2009-01-29 19:18:5755};
56
57#endif // BASE_VERSION_H_