| // Copyright 2020 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef TOOLS_GN_VERSION_H_ | |
| #define TOOLS_GN_VERSION_H_ | |
| #include <optional> | |
| #include <string> | |
| #ifdef major | |
| #undef major | |
| #endif | |
| #ifdef minor | |
| #undef minor | |
| #endif | |
| // Represents a semantic version. | |
| class Version { | |
| public: | |
| Version(int major, int minor, int patch); | |
| static std::optional<Version> FromString(std::string s); | |
| int major() const { return major_; } | |
| int minor() const { return minor_; } | |
| int patch() const { return patch_; } | |
| bool operator==(const Version& other) const; | |
| bool operator<(const Version& other) const; | |
| bool operator!=(const Version& other) const; | |
| bool operator>=(const Version& other) const; | |
| bool operator>(const Version& other) const; | |
| bool operator<=(const Version& other) const; | |
| std::string Describe() const; | |
| private: | |
| int major_; | |
| int minor_; | |
| int patch_; | |
| }; | |
| #endif // TOOLS_GN_VERSION_H_ |