version.h revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
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#pragma once 8 9#include <string> 10#include <vector> 11 12#include "base/basictypes.h" 13#include "base/gtest_prod_util.h" 14 15// Version represents a dotted version number, like "1.2.3.4", supporting 16// parsing and comparison. 17// Each component is limited to a uint16. 18class Version { 19 public: 20 // The version string must be made up of 1 or more uint16's separated 21 // by '.'. Returns NULL if string is not in this format. 22 // Caller is responsible for freeing the Version object once done. 23 static Version* GetVersionFromString(const std::string& version_str); 24 25 // Exposed only so that a Version can be stored in STL containers; 26 // any call to the methods below on a default-constructed Version 27 // will DCHECK. 28 Version(); 29 30 ~Version(); 31 32 // Creates a copy of this version. Caller takes ownership. 33 Version* Clone() const; 34 35 bool Equals(const Version& other) const; 36 37 // Returns -1, 0, 1 for <, ==, >. 38 int CompareTo(const Version& other) const; 39 40 // Return the string representation of this version. 41 const std::string GetString() const; 42 43 const std::vector<uint16>& components() const { return components_; } 44 45 private: 46 bool InitFromString(const std::string& version_str); 47 48 bool is_valid_; 49 std::vector<uint16> components_; 50 51 FRIEND_TEST_ALL_PREFIXES(VersionTest, DefaultConstructor); 52 FRIEND_TEST_ALL_PREFIXES(VersionTest, GetVersionFromString); 53 FRIEND_TEST_ALL_PREFIXES(VersionTest, Compare); 54}; 55 56#endif // BASE_VERSION_H_ 57